TourIAm/TIAMWebApp/Shared/Models/ClientSide/UI/WizardModels/TransferWizardModel.cs

146 lines
6.3 KiB
C#

using System.ComponentModel.DataAnnotations;
using TIAM.Resources;
namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
{
public class TransferWizardModel
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public Guid? ProductId { get; set; }
public Guid UserProductMappingId { get; set; }
public Guid UserProductToCarId { get; set; }
public Guid? ReferralId { get; set; }
#region wizard fields
[Destination(ErrorMessage = "The destination value is invalid.")]
[DataType("TransferDestination")]
[Display(Name = ResourceKeys.Destination, ResourceType = typeof(TIAMResources))]
public string? Destination { get; set; }
[DataType("TransferDestination")]
[Display(Name = ResourceKeys.PickupAddress, ResourceType = typeof(TIAMResources))]
public string? PickupAddress { get; set; }
//Flight number
[DataType(DataType.Text)]
[Display(Name = ResourceKeys.FlightNumber + " " + ResourceKeys.Optional, ResourceType = typeof(TIAMResources))]
public string? FlightNumber { get; set; }
[Required(ErrorMessage = "The pickup time should be specified.")]
[DataType(DataType.Date)]
[Display(Name = ResourceKeys.PickupTime, ResourceType = typeof(TIAMResources))]
public DateTime TripDate { get; set; } = DateTime.UtcNow.AddDays(2);
[Required(ErrorMessage = "The amount of passengers should be specified.")]
[DataType("Int")]
[Display(Name = ResourceKeys.NumberOfPassengers, ResourceType = typeof(TIAMResources))]
public int NumberOfPassengers { get; set; } = 1;
[Required(ErrorMessage = "The amount of luggage should be specified.")]
[DataType("Int")]
[Display(Name = ResourceKeys.NumberOfLuggage, ResourceType = typeof(TIAMResources))]
public int NumberOfLuggage { get; set; } = 1;
//full name
[Required(ErrorMessage = "The name should be specified.")]
[DataType("FullName")]
[Display(Name = ResourceKeys.FullName, ResourceType = typeof(TIAMResources))]
public string? FullName => GetFullName();
public string? FirstName { get; set; }
public string? LastName { get; set; }
//phone number
[Required(ErrorMessage = "The phone number should be specified.")]
[DataType(DataType.PhoneNumber)]
[Display(Name = ResourceKeys.PhoneNumber, ResourceType = typeof(TIAMResources))]
public string? PhoneNumber { get; set; }
//email address
[Required(ErrorMessage = "The email address should be specified.")]
[DataType(DataType.EmailAddress)]
[Display(Name = ResourceKeys.EmailAddress, ResourceType = typeof(TIAMResources))]
public string? EmailAddress { get; set; }
[DataType("Price")]
[Display(Name = ResourceKeys.Price, ResourceType = typeof(TIAMResources))]
public double? Price { get; set;}
[DataType(DataType.MultilineText)]
[Display(Name = ResourceKeys.Comment, ResourceType = typeof(TIAMResources))]
public string? Comment { get; set; }
//[DataType("Driver")]
//[Display(Name = ResourceKeys.Driver, ResourceType = typeof(TIAMResources))]
//public DriverModel Driver { get; set; }
#endregion wizard fields
public TransferWizardModel() { }
public TransferWizardModel(string destination, string pickupAddress) : this(Guid.NewGuid(), destination, pickupAddress) { }
public TransferWizardModel(Guid id, string destination, string pickupAddress) {
Destination = destination;
PickupAddress = pickupAddress;
}
public TransferWizardModel(string destination, string pickupAddress, DateTime tripDate, int numberOfPassengers, string firstName, string lastName, string phoneNumber, string emailAddress) : this(Guid.NewGuid(), destination, pickupAddress, tripDate, numberOfPassengers, firstName, lastName, phoneNumber, emailAddress) { }
public TransferWizardModel(Guid id, string destination, string pickupAddress, DateTime tripDate, int numberOfPassengers, string firstName, string lastName, string phoneNumber, string emailAddress)
{
Id = id;
Destination = destination;
PickupAddress = pickupAddress;
TripDate = tripDate;
NumberOfPassengers = numberOfPassengers;
FirstName = firstName;
LastName = lastName;
PhoneNumber = phoneNumber;
EmailAddress = emailAddress;
}
public TransferWizardModel(string destination, string pickupAddress, DateTime tripDate, int numberOfPassengers, string firstName, string lastName, string phoneNumber, string emailAddress, DriverModel driver) : this(Guid.NewGuid(), destination, pickupAddress, tripDate, numberOfPassengers, firstName, lastName, phoneNumber, emailAddress, driver) { }
public TransferWizardModel(Guid id, string destination, string pickupAddress, DateTime tripDate, int numberOfPassengers, string firstName, string lastName, string phoneNumber, string emailAddress, DriverModel driver)
{
Id = id;
Destination = destination;
PickupAddress = pickupAddress;
TripDate = tripDate;
NumberOfPassengers = numberOfPassengers;
FirstName = firstName;
LastName = lastName;
PhoneNumber = phoneNumber;
EmailAddress = emailAddress;
//Driver = driver;
}
public string GetFullName()
{
return FirstName + " " + LastName;
}
public override string ToString()
{
return $"{nameof(Id)}: {Id}; {nameof(Destination)}: {Destination}; {nameof(PickupAddress)}: {PickupAddress}; {nameof(TripDate)}: {TripDate}; {nameof(NumberOfPassengers)}: {NumberOfPassengers}; " +
$"{nameof(FirstName)}: {FirstName}; {nameof(LastName)}: {LastName}; {nameof(PhoneNumber)}: {PhoneNumber}; {nameof(EmailAddress)}: {EmailAddress};";
}
}
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class DestinationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return true;
}
}
}