autobus-api_old/AutobusApi.Application/TicketGroups/Queries/TicketGroupDto.cs

179 lines
7.3 KiB
C#

using AutobusApi.Application.Common.Mappings;
using AutobusApi.Domain.Entities;
using AutoMapper;
namespace AutobusApi.Application.TicketGroups.Queries;
public class TicketGroupDto : IMapFrom<TicketGroup>
{
public int Id { get; set; }
public int? UserId { get; set; }
public string BuyerFirstName { get; set; } = null!;
public string BuyerLastName { get; set; } = null!;
public string BuyerPhoneNumber { get; set; } = null!;
public string BuyerEmailAddress { get; set; } = null!;
public string PassengerFirstName { get; set; } = null!;
public string PassengerLastName { get; set; } = null!;
public string PassengerPatronymic { get; set; } = null!;
public string PassengerSex { get; set; } = null!;
public DateOnly PassengerBirthDate { get; set; }
public DateTime PurchaseDateTime { get; set; }
public bool IsReturned { get; set; }
public string DocumentType { get; set; } = null!;
public string DocumentInformation { get; set; } = null!;
public List<TicketDto> Tickets { get; set; } = null!;
public DateTime DepartureDateTime { get; set; }
public DateTime ArrivalDateTime { get; set; }
public TimeSpan Time { get; set; }
public double Cost { get; set; }
public void Mapping(Profile profile)
{
profile.CreateMap<TicketGroup, TicketGroupDto>()
.ForMember(d => d.PassengerSex, opt => opt.MapFrom(s => s.PassengerSex.ToString()))
.ForMember(d => d.DocumentType, opt => opt.MapFrom(s => s.TicketDocument.Type.ToString()))
.ForMember(d => d.DocumentInformation, opt => opt.MapFrom(s => s.TicketDocument.Information))
.ForMember(d => d.Tickets, opt => opt.MapFrom(s => s.Tickets))
.ForMember(d => d.DepartureDateTime, opt => opt.MapFrom(s => s.GetDepartureDateTimeUtc()))
.ForMember(d => d.ArrivalDateTime, opt => opt.MapFrom(s => s.GetArrivalDateTimeUtc()))
.ForMember(d => d.Time, opt => opt.MapFrom(s => s.GetTravelTime()))
.ForMember(d => d.Cost, opt => opt.MapFrom(s => s.GetCost()))
.ForMember(d => d.PurchaseDateTime, opt => opt.MapFrom(s => s.PurchaseDateTimeUtc));
}
}
public class TicketDto : IMapFrom<Ticket>
{
public int Id { get; set; }
public int VehicleEnrollmentId { get; set; }
public int DepartureAddressId { get; set; }
public string DepartureAddressName { get; set; } = null!;
public int DepartureCityId { get; set; }
public string DepartureCityName { get; set; } = null!;
public int DepartureRegionId { get; set; }
public string DepartureRegionName { get; set; } = null!;
public int DepartureCountryId { get; set; }
public string DepartureCountryName { get; set; } = null!;
public DateTime DepartureDateTime { get; set; }
public int ArrivalAddressId { get; set; }
public string ArrivalAddressName { get; set; } = null!;
public int ArrivalCityId { get; set; }
public string ArrivalCityName { get; set; } = null!;
public int ArrivalRegionId { get; set; }
public string ArrivalRegionName { get; set; } = null!;
public int ArrivalCountryId { get; set; }
public string ArrivalCountryName { get; set; } = null!;
public DateTime ArrivalDateTime { get; set; }
public TimeSpan Time { get; set; }
public double Cost { get; set; }
public void Mapping(Profile profile)
{
profile.CreateMap<Ticket, TicketDto>()
.ForMember(
d => d.DepartureAddressName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.Name))
.ForMember(
d => d.DepartureCityId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.CityId))
.ForMember(
d => d.DepartureCityName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.City.Name))
.ForMember(
d => d.DepartureRegionId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.City.RegionId))
.ForMember(
d => d.DepartureRegionName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.City.Region.Name))
.ForMember(
d => d.DepartureCountryId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.City.Region.CountryId))
.ForMember(
d => d.DepartureCountryName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.DepartureAddressId).Address.City.Region.Country.Name))
.ForMember(
d => d.DepartureDateTime,
opt => opt.MapFrom(s => s.VehicleEnrollment.GetDepartureDateTimeUtc(s.DepartureAddressId)))
.ForMember(
d => d.ArrivalAddressName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.Name))
.ForMember(
d => d.ArrivalCityId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.CityId))
.ForMember(
d => d.ArrivalCityName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.City.Name))
.ForMember(
d => d.ArrivalRegionId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.City.RegionId))
.ForMember(
d => d.ArrivalRegionName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.City.Region.Name))
.ForMember(
d => d.ArrivalCountryId,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.City.Region.CountryId))
.ForMember(
d => d.ArrivalCountryName,
opt => opt.MapFrom(
s => s.VehicleEnrollment.Route.RouteAddresses.Single(ra => ra.AddressId == s.ArrivalAddressId).Address.City.Region.Country.Name))
.ForMember(
d => d.ArrivalDateTime,
opt => opt.MapFrom(s => s.VehicleEnrollment.GetArrivalDateTimeUtc(s.ArrivalAddressId)))
.ForMember(d => d.Time, opt => opt.MapFrom(s => s.VehicleEnrollment.GetTravelTime(s.DepartureAddressId, s.ArrivalAddressId)))
.ForMember(d => d.Cost, opt => opt.MapFrom(s => s.VehicleEnrollment.GetCost(s.DepartureAddressId, s.ArrivalAddressId)));
}
}