179 lines
7.3 KiB
C#
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)));
|
|
}
|
|
}
|