Ejemplo n.º 1
0
        public ServiceOrderDestinationAgentMapperProfile()
        {
            CreateMap <GetServiceOrderDestinationAgentResponse, GetServiceOrderDestinationAgentResponse>();

            CreateMap <ServiceOrderDestinationAgent, ServiceOrderBaseResponse>()
            .ForPath(d => d.VendorId, opt => opt.MapFrom(src => src.ServiceOrder.VendorId))
            .ForPath(d => d.VendorName, opt => opt.MapFrom(src => src.ServiceOrder.Vendor.Name))
            .ForMember(d => d.QuoteReferenceNumber, opt => opt.MapFrom(src => src.ServiceOrder.QuoteReferenceNumber))
            .Include <ServiceOrderDestinationAgent, GetServiceOrderDestinationAgentResponse>();

            CreateMap <GetServiceOrderDestinationAgentResponse, ServiceOrderDestinationAgent>()
            .ForPath(d => d.ServiceOrder.VendorId, opt => opt.MapFrom(src => src.VendorId))
            .ForPath(d => d.ServiceOrder.QuoteReferenceNumber, opt => opt.MapFrom(src => src.QuoteReferenceNumber))
            .ForPath(d => d.ScheduledDeliveryStartTime, opt => opt.MapFrom(src => DtoTranslations.ToTimeSpan(src.ScheduledDeliveryStartTime)))
            .ForPath(d => d.ScheduledDeliveryEndTime, opt => opt.MapFrom(src => DtoTranslations.ToTimeSpan(src.ScheduledDeliveryEndTime)));

            CreateMap <ServiceOrderDestinationAgent, GetServiceOrderDestinationAgentResponse>()
            .ForPath(d => d.ScheduledDeliveryStartTime, opt => opt.MapFrom(src => DtoTranslations.ToDateTime(src.ScheduledDeliveryStartDate, src.ScheduledDeliveryStartTime)))
            .ForPath(d => d.ScheduledDeliveryEndTime, opt => opt.MapFrom(src => DtoTranslations.ToDateTime(src.ScheduledDeliveryEndDate, src.ScheduledDeliveryEndTime)))
            .ForPath(d => d.IsPartialDeliveryExists, opt => opt.MapFrom(src => CheckIfPartialDeliveryExists(src.ServiceOrder)));

            CreateMap <ServiceOrderDestinationAgentPartialDelivery, GetDestinationAgentPartialDeliveryResponse>().ReverseMap();

            CreateMap <GetDestinationAgentPartialDeliveryResponse, GetDestinationAgentPartialDeliveryResponse>();
        }
Ejemplo n.º 2
0
        public VendorMapperProfile()
        {
            CreateMap <Vendor, VendorDTO>()

            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name))
            .ForMember(d => d.Website, opt => opt.MapFrom(src => src.Website))
            .ForMember(d => d.Accounting_SI_Code, opt => opt.MapFrom(src => src.Accounting_SI_Code))
            .ForMember(d => d.Accounting_MIL_Code, opt => opt.MapFrom(src => src.Accounting_MIL_Code))
            .ForMember(d => d.IsActive, opt => opt.MapFrom(src => src.IsActive))
            .ForMember(d => d.VendorAddress, y => y.MapFrom(new VendorAddressDtoResolver()))
            ;

            CreateMap <VendorDTO, Vendor>()
            .ForMember(d => d.AccountingId, opt => opt.MapFrom(src => src.Accounting_SI_Code))
            .ForMember(d => d.ShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(
                                                                   src.VendorAddress.FirstOrDefault(a =>
                                                                                                    a.VendorAddressType.Name.Equals("Main", StringComparison.InvariantCultureIgnoreCase)).City,
                                                                   src.VendorAddress.FirstOrDefault(a =>
                                                                                                    a.VendorAddressType.Name.Equals("Main", StringComparison.InvariantCultureIgnoreCase)).State
                                                                   .Name,
                                                                   src.VendorAddress.FirstOrDefault(a =>
                                                                                                    a.VendorAddressType.Name.Equals("Main", StringComparison.InvariantCultureIgnoreCase))
                                                                   .Country
                                                                   .Name)))
            .ForMember(d => d.PrimaryAddress, y => y.MapFrom(new VendorDtoVendorAddressResolver()))
            ;

            // Note: VendorlegacyQueryDto will likely be deprecated
            CreateMap <VendorLegacyQueryDto, Vendor>()
            .ForMember(d => d.AccountingId, opt => opt.MapFrom(src => src.AccountingId))
            .ForMember(d => d.ShortAddress, opt => opt.MapFrom(src => src.ShortAddress))
            .ReverseMap()
            ;
        }
        public BillableItemMapperProfile()
        {
            CreateMap <BillableItem, GetBillableItemResponse>()
            .ForMember(d => d.Status, opt =>
                       opt.MapFrom(src => src.BillableItemStatusIdentifier))
            .ForMember(d => d.BillToName, opt =>
                       opt.MapFrom(src => DtoTranslations.ToGetBillableItemResponse(src).BillToName))
            .ForMember(d => d.BillToType, opt =>
                       opt.MapFrom(src => DtoTranslations.ToGetBillableItemResponse(src).BillToType))
            .ForMember(d => d.BillToId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToGetBillableItemResponse(src).BillToId))
            .ForMember(d => d.BillToLabel, opt =>
                       opt.MapFrom(src => DtoTranslations.ToGetBillableItemResponse(src).BillToLabel))
            .ForMember(d => d.BillableItemTypeName, opt => opt.MapFrom(src => src.BillableItemType.BillableItemTypeName))
            .ForMember(d => d.WriteOffModifiedDateTime, opt => opt.MapFrom(src => src.WriteOffModifiedDateTime))
            .ForMember(d => d.InvoiceNumber, opt => opt.MapFrom(src => src.Invoice.InvoiceNumber))
            .ForMember(d => d.InvoiceDate, opt => opt.MapFrom(src => src.Invoice.InvoiceDate))
            .ForMember(d => d.InvoiceType, opt => opt.MapFrom(src => src.Invoice.InvoiceType))
            .ForMember(d => d.DepositDate, opt => opt.MapFrom(src => src.Invoice.LastPaidDate))
            ;

            CreateMap <GetBillableItemResponse, BillableItem>()
            .ForMember(d => d.BillToAccountEntityId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToBillableItem(src).BillToAccountEntityId))
            .ForMember(d => d.BillToVendorId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToBillableItem(src).BillToVendorId))
            .ForMember(d => d.BillToTransfereeId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToBillableItem(src).BillToTransfereeId))
            .ForMember(d => d.BillToType, opt =>
                       opt.MapFrom(src => DtoTranslations.ToBillableItem(src).BillToType))

            .ForMember(d => d.BillableItemStatusIdentifier, opt => opt.Ignore())
            .ForMember(d => d.SuperServiceOrderId, opt => opt.Ignore())
            ;

            CreateMap <BillableItem, CreateBillableItemResponse>()
            .ForMember(d => d.Status, opt =>
                       opt.MapFrom(src => src.BillableItemStatusIdentifier))
            .ForMember(d => d.BillToName, opt =>
                       opt.MapFrom(src => DtoTranslations.ToCreateBillableItemResponse(src).BillToName))
            .ForMember(d => d.BillToId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToCreateBillableItemResponse(src).BillToId))
            .ForMember(d => d.BillToType, opt =>
                       opt.MapFrom(src => DtoTranslations.ToCreateBillableItemResponse(src).BillToType))
            ;

            CreateMap <BillableItemType, GetBillableItemTypeResponse>()
            .ForMember(d => d.Name, opt =>
                       opt.MapFrom(src => string.Concat(src.AccountCode, "-", src.BillableItemTypeName)))
            .ForMember(d => d.Value, opt =>
                       opt.MapFrom(src => src.Id.ToString()))
            ;
        }
Ejemplo n.º 4
0
        public AccountMapperProfile()
        {
            CreateMap <AccountEntityDTO, AccountEntity>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.AccountEntityId))
            .ForMember(d => d.ShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.Address.City, src.Address.State, src.Address.Country)));

            CreateMap <AccountEntityCreatedIntegrationEvent, AccountEntity>()
            .IgnoreAllPropertiesWithAnInaccessibleSetter()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.AccountEntityId))
            .ForMember(d => d.ShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.Address.City, src.Address.State, src.Address.Country)))
            ;

            CreateMap <AccountEntityUpdatedIntegrationEvent, AccountEntity>()
            .IgnoreAllPropertiesWithAnInaccessibleSetter()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.AccountEntityId))
            .ForMember(d => d.ShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.Address.City, src.Address.State, src.Address.Country)))
            ;
        }
Ejemplo n.º 5
0
        public ServiceOrderMoveInfoMapperProfile()
        {
            CreateMap <ServiceOrderMoveInfo, ServiceOrderBaseResponse>()
            .ForPath(d => d.VendorId, opt => opt.MapFrom(src => src.ServiceOrder.VendorId))
            .ForPath(d => d.VendorName, opt => opt.MapFrom(src => src.ServiceOrder.Vendor.Name))
            .ForMember(d => d.QuoteReferenceNumber, opt => opt.MapFrom(src => src.ServiceOrder.QuoteReferenceNumber))
            .Include <ServiceOrderMoveInfo, GetServiceOrderOriginAgentResponse>();

            CreateMap <GetServiceOrderOriginAgentResponse, ServiceOrderMoveInfo>()
            .ForPath(d => d.ServiceOrder.VendorId, opt => opt.MapFrom(src => src.VendorId))
            .ForPath(d => d.ServiceOrder.QuoteReferenceNumber, opt => opt.MapFrom(src => src.QuoteReferenceNumber))
            .ForPath(d => d.EstimatedPackStartTime, opt => opt.MapFrom(src => DtoTranslations.ToTimeSpan(src.EstimatedPackStartTime)))
            .ForPath(d => d.EstimatedPackEndTime, opt => opt.MapFrom(src => DtoTranslations.ToTimeSpan(src.EstimatedPackEndTime)))
            .ForPath(d => d.ServiceOrder.ISAllDocumentsReceived, opt => opt.MapFrom(src => src.IsAllDocumentsReceived))
            ;

            CreateMap <ServiceOrderMoveInfo, GetServiceOrderOriginAgentResponse>()
            .ForPath(d => d.EstimatedPackStartTime, opt => opt.MapFrom(src => DtoTranslations.ToDateTime(src.EstimatedPackStartDate, src.EstimatedPackStartTime)))
            .ForPath(d => d.EstimatedPackEndTime, opt => opt.MapFrom(src => DtoTranslations.ToDateTime(src.EstimatedPackEndDate, src.EstimatedPackEndTime)))
            .ForPath(d => d.IsAllDocumentsReceived, opt => opt.MapFrom(src => src.ServiceOrder.ISAllDocumentsReceived))
            ;

            CreateMap <ServiceOrderBaseResponse, GetServiceOrderOriginAgentResponse>().ReverseMap();
        }
Ejemplo n.º 6
0
        public ServiceOrderStorageProfile()
        {
            CreateMap <ServiceOrderStorage, GetServiceOrderStorageResponse>()
            .ForMember(d => d.Currency, opt => opt.MapFrom(src => src.StorageCurrency))
            .ForMember(d => d.VendorId, opt => opt.MapFrom(src => src.ServiceOrder.VendorId))
            .ForMember(d => d.VendorName, opt => opt.MapFrom(src => src.ServiceOrder.Vendor.Name))
            ;

            CreateMap <GetServiceOrderStorageResponse, ServiceOrderStorage>()
            .ForMember(d => d.StorageCurrency, opt => opt.MapFrom(src => src.Currency))
            .ForMember(d => d.InsuranceCurrency, opt => opt.MapFrom(src => src.Currency))
            .ForPath(d => d.ServiceOrder.VendorId, opt => opt.MapFrom(src => src.VendorId))
            ;

            CreateMap <ServiceOrderStoragePartialDelivery, GetStoragePartialDeliveryResponse>()
            .ForMember(d => d.User, opt => opt.MapFrom(src => src.UserName))
            .ForMember(d => d.IsEditable, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.ReferenceType)))
            .ForMember(d => d.Module, opt => opt.MapFrom(src => src.ReferenceType))
            ;

            CreateMap <ServiceOrderStorageRevenue, GetStorageRevenueResponse>()
            .ForMember(d => d.BillToId, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageResponse(src).BillToId))
            .ForMember(d => d.BillToType, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageResponse(src).BillToType))
            .ForMember(d => d.BillToName, opt => opt.MapFrom(src =>
                                                             string.IsNullOrEmpty(DtoTranslations.ToBillToStorageResponse(src).BillToName) ?
                                                             "Bill To" : DtoTranslations.ToBillToStorageResponse(src).BillToName))
            .ForMember(d => d.BillToLabel, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageResponse(src).BillToLabel))
            ;

            CreateMap <GetStorageRevenueResponse, ServiceOrderStorageRevenue>()
            .ForMember(d => d.BillToAccountEntityId, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageRevenue(src).BillToAccountEntityId))
            .ForMember(d => d.BillToVendorId, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageRevenue(src).BillToVendorId))
            .ForMember(d => d.BillToTransfereeId, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageRevenue(src).BillToTransfereeId))
            .ForMember(d => d.BillToType, opt => opt.MapFrom(src => DtoTranslations.ToBillToStorageRevenue(src).BillToType))
            ;
        }
Ejemplo n.º 7
0
        public PayableItemMapperProfile()
        {
            CreateMap <PayableItem, GetPayableItemResponse>()
            .ForMember(d => d.Status, opt =>
                       opt.MapFrom(src => src.PayableItemStatusIdentifier))
            .ForMember(d => d.PayableItemTypeName, opt =>
                       opt.MapFrom(src => src.BillableItemType.BillableItemTypeName))
            .ForMember(d => d.PayableItemTypeId, opt =>
                       opt.MapFrom(src => src.BillableItemTypeId))
            .ForMember(d => d.VendorInvoiceType, opt => opt.MapFrom(src => src.VendorInvoice.VendorInvoiceType))
            .ForMember(d => d.VendorInvoiceDate, opt => opt.MapFrom(src => src.VendorInvoiceDate ?? src.VendorInvoice.VendorInvoiceDate))
            .ForMember(d => d.VendorInvoiceNumber, opt => opt.MapFrom(src => src.VendorInvoiceNumber ?? src.VendorInvoice.VendorInvoiceNumber))
            .ForMember(d => d.PaidDate, opt => opt.MapFrom(src => src.VendorInvoice.LastPaidDate))
            .ForMember(d => d.CheckWireNumber, opt => opt.MapFrom(src => src.VendorInvoice.LastPaidCheckNumber))
            .ForMember(d => d.BillFromName, opt => opt.MapFrom(src => DtoTranslations.ToGetPayableItemResponse(src).BillFromName))
            .ForMember(d => d.BillFromType, opt => opt.MapFrom(src => DtoTranslations.ToGetPayableItemResponse(src).BillFromType))
            .ForMember(d => d.BillFromLabel, opt => opt.MapFrom(src => DtoTranslations.ToGetPayableItemResponse(src).BillFromLabel))
            .ForMember(d => d.BillFromId, opt => opt.MapFrom(src => DtoTranslations.ToGetPayableItemResponse(src).BillFromId));

            CreateMap <GetPayableItemResponse, PayableItem>()
            .ForMember(d => d.BillableItemTypeId, opt => opt.MapFrom(src => src.PayableItemTypeId))
            .ForMember(d => d.PayableItemStatusIdentifier, opt => opt.Ignore())
            .ForMember(d => d.SuperServiceOrderId, opt => opt.Ignore())
            .ForMember(d => d.VendorInvoiceId, opt => opt.Ignore())
            .ForPath(d => d.VendorInvoice.LastPaidCheckNumber, opt => opt.Ignore())
            .ForPath(d => d.VendorInvoice.LastPaidDate, opt => opt.Ignore())
            .ForMember(d => d.BillFromAccountEntityId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToPayableItem(src).BillFromAccountEntityId))
            .ForMember(d => d.BillFromVendorId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToPayableItem(src).BillFromVendorId))
            .ForMember(d => d.BillFromTransfereeId, opt =>
                       opt.MapFrom(src => DtoTranslations.ToPayableItem(src).BillFromTransfereeId))
            .ForMember(d => d.BillFromType, opt =>
                       opt.MapFrom(src => DtoTranslations.ToPayableItem(src).BillFromType));

            CreateMap <PayableItem, CreatePayableItemResponse>()
            .ForMember(d => d.Status, opt =>
                       opt.MapFrom(src => src.PayableItemStatusIdentifier))
            .ReverseMap()
            ;

            CreateMap <BillableItemType, GetBillableItemTypeResponse>()
            .ForMember(d => d.Name, opt =>
                       opt.MapFrom(src => string.Concat(src.AccountCode, "-", src.BillableItemTypeName)))
            .ForMember(d => d.Value, opt =>
                       opt.MapFrom(src => src.Id.ToString()))
            ;

            CreateMap <Vendor, GetSuperServiceOrderAvailableBillFromResponse>()
            .ForMember(d => d.BillFromType, opt => opt.MapFrom(src => EntityType.VENDOR))
            .ForMember(d => d.Value, opt => opt.MapFrom(src => src.Accounting_SI_Code))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name))
            .ForMember(d => d.Category, opt => opt.MapFrom(src => EntityType.VENDOR))
            .ForMember(d => d.Label, opt => opt.MapFrom(src => string.Concat(EntityType.VENDOR, "-", src.Id)))
            ;

            CreateMap <AccountEntity, GetSuperServiceOrderAvailableBillFromResponse>()
            .ForMember(d => d.BillFromType, opt => opt.MapFrom(src => EntityType.ACCOUNT_ENTITY))
            .ForMember(d => d.Value, opt => opt.MapFrom(src => src.AccountingId))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name))
            .ForMember(d => d.Category, opt => opt.MapFrom(src => EntityType.ACCOUNT_ENTITY))
            .ForMember(d => d.Label, opt => opt.MapFrom(src => string.Concat(EntityType.ACCOUNT_ENTITY, "-", src.Id)))
            ;

            CreateMap <Transferee, GetSuperServiceOrderAvailableBillFromResponse>()
            .ForMember(d => d.BillFromType, opt => opt.MapFrom(src => EntityType.TRANSFEREE))
            .ForMember(d => d.Value, opt => opt.MapFrom(src => src.AccountingId))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => string.Concat(src.FirstName, " ", src.LastName)))
            .ForMember(d => d.Category, opt => opt.MapFrom(src => EntityType.TRANSFEREE))
            .ForMember(d => d.Label, opt => opt.MapFrom(src => string.Concat(EntityType.TRANSFEREE, "-", src.Id)))
            ;
        }
Ejemplo n.º 8
0
        public EventMapperProfile()
        {
            CreateMap <Job, JobCreatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.AccountName, opt => opt.MapFrom(src => src.AccountEntity.Name))
            .ForMember(d => d.TransfereeFirstName, opt => opt.MapFrom(src => src.Transferee.FirstName))
            .ForMember(d => d.TransfereeLastName, opt => opt.MapFrom(src => src.Transferee.LastName))
            .ForMember(d => d.Origin, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.OriginAddress)))
            .ForMember(d => d.Destination, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.DestinationAddress)))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.OriginAddress.Country))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.DestinationAddress.Country))
            .ForMember(d => d.IsVIP, opt => opt.MapFrom(src => src.Transferee.IsVip))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.Transferee, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.BranchName))
            ;

            CreateMap <Job2Dto, TransfereeCreatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.TransfereeId, opt => opt.MapFrom(src => src.Transferee.Id))
            .ForMember(d => d.FirstName, opt => opt.MapFrom(src => src.Transferee.FirstName))
            .ForMember(d => d.LastName, opt => opt.MapFrom(src => src.Transferee.LastName))
            .ForMember(d => d.Email, opt => opt.MapFrom(src => src.Transferee.Emails.OrderBy(e => e.Id).FirstOrDefault().Value))
            .ForMember(d => d.Phone, opt => opt.MapFrom(src => src.Transferee.OriginPhones
                                                        .OrderByDescending(p => p.Primary)
                                                        .OrderByDescending(p => p.Id)
                                                        .Select(p => new { Phone = string.Concat(p.DialCode, p.NationalNumber) })
                                                        .FirstOrDefault().Phone))
            .ForMember(d => d.Address1, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().Address1))
            .ForMember(d => d.Address2, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().Address2))
            .ForMember(d => d.Address3, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().Address3))
            .ForMember(d => d.City, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().City))
            .ForMember(d => d.State, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().State))
            .ForMember(d => d.PostalCode, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().PostalCode))
            .ForMember(d => d.AdditionalAddressInfo, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().AdditionalAddressInfo))
            .ForMember(d => d.Country, opt => opt.MapFrom(src => src.JobInfo.Addresses.Where(a => a.Type == "Destination").FirstOrDefault().Country));

            CreateMap <JobSurveyInfo, JobSurveyInfoCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.Job.MoveType))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.Job.OriginAddress.Country.IsUSA() ? "usa" : src.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.JobId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.Job.BranchName))
            ;

            CreateMap <ServiceOrderMoveInfo, OriginAgentCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.ActualPackDate, opt => opt.MapFrom(src => src.ActualPackStartDate))
            .ForMember(d => d.ActualPickupDate, opt => opt.MapFrom(src => src.ActualPickupStartDate))
            .ForMember(d => d.EstimatedPackDate, opt => opt.MapFrom(src => src.EstimatedPackStartDate))
            .ForMember(d => d.OASITDate, opt => opt.MapFrom(src => src.SITInDate))
            .ForMember(d => d.GreenLightDate, opt => opt.MapFrom(src => src.OAGreenLightDate))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderDestinationAgent, DestinationAgentCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.DASITDate, opt => opt.MapFrom(src => src.SITInDate))
            .ForMember(d => d.ScheduledDeliveryDate, opt => opt.MapFrom(src => src.ScheduledDeliveryStartDate))
            .ForMember(d => d.ActualDeliveryDate, opt => opt.MapFrom(src => src.ActualDeliveryStartDate))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderAirFreightLeg, FreightLegServiceCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.ActualDepartureDate, opt => opt.MapFrom(src => src.ActualDepartureDate))
            .ForMember(d => d.EstimatedDepartureDate, opt => opt.MapFrom(src => src.EstimatedDepartureDate))
            .ForMember(d => d.EstimatedArrivalDate, opt => opt.MapFrom(src => src.EstimatedArrivalDate))
            .ForMember(d => d.ActualArrivalDate, opt => opt.MapFrom(src => src.ActualArrivalDate))
            .ForMember(d => d.MasterAwbNumber, opt => opt.MapFrom(src => src.ServiceOrder.ServiceOrderAirFreight.MasterAwbNumber))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightLeg, FreightLegServiceCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.ActualDepartureDate, opt => opt.MapFrom(src => src.ActualDepartureDate))
            .ForMember(d => d.EstimatedDepartureDate, opt => opt.MapFrom(src => src.EstimatedDepartureDate))
            .ForMember(d => d.EstimatedArrivalDate, opt => opt.MapFrom(src => src.EstimatedArrivalDate))
            .ForMember(d => d.ActualArrivalDate, opt => opt.MapFrom(src => src.ActualArrivalDate))
            .ForMember(d => d.MasterBOLNumber, opt => opt.MapFrom(src => src.ServiceOrder.ServiceOrderOceanFreight.MasterBOLNumber))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderRoadFreightLeg, FreightLegServiceCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.ActualDepartureDate, opt => opt.MapFrom(src => src.ActualDepartureDate))
            .ForMember(d => d.EstimatedDepartureDate, opt => opt.MapFrom(src => src.EstimatedDepartureDate))
            .ForMember(d => d.EstimatedArrivalDate, opt => opt.MapFrom(src => src.EstimatedArrivalDate))
            .ForMember(d => d.ActualArrivalDate, opt => opt.MapFrom(src => src.ActualArrivalDate))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightContainer, FreighContainerCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ContainerNumber, opt => opt.MapFrom(src => src.ContainerNumber))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderAirFreight, FreightCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.MasterAwbNumber, opt => opt.MapFrom(src => src.ServiceOrder.ServiceOrderAirFreight.MasterAwbNumber))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreight, FreightCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.MasterBOLNumber, opt => opt.MapFrom(src => src.ServiceOrder.ServiceOrderOceanFreight.MasterBOLNumber))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.Id))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderRoadFreight, FreightCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.ServiceOrder.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.OriginAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.ServiceOrder.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.ServiceOrder.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <Invoice, InvoiceCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.SuperServiceOrder.DisplayId))
            .ForMember(d => d.SuperServiceName, opt => opt.MapFrom(src => DtoTranslations.ToCreateInvoiceResponse(src).SuperServiceName))
            .ForMember(d => d.ItemId, opt => opt.MapFrom(src => DtoTranslations.ToCreateInvoiceResponse(src).ServiceOrderId))
            .ForMember(d => d.VendorName, opt => opt.MapFrom(src => DtoTranslations.ToCreateInvoiceResponse(src).BillToName))
            .ForMember(d => d.InvoiceNumber, opt => opt.MapFrom(src => src.InvoiceNumber))
            .ForMember(d => d.VendorAccountingId, opt => opt.MapFrom(src => DtoTranslations.ToCreateInvoiceResponse(src).VendorAccountingId))
            .ForMember(d => d.VendorShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToCreateInvoiceResponse(src).VendorShortAddress));

            CreateMap <VendorInvoice, InvoiceCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.SuperServiceOrder.DisplayId))
            .ForMember(d => d.SuperServiceName, opt => opt.MapFrom(src => DtoTranslations.ToCreateVendorInvoiceResponse(src).SuperServiceName))
            .ForMember(d => d.ItemId, opt => opt.MapFrom(src => DtoTranslations.ToCreateVendorInvoiceResponse(src).ServiceOrderId))
            .ForMember(d => d.VendorName, opt => opt.MapFrom(src => DtoTranslations.ToCreateVendorInvoiceResponse(src).BillFromName))
            .ForMember(d => d.InvoiceNumber, opt => opt.MapFrom(src => src.VendorInvoiceNumber))
            .ForMember(d => d.VendorAccountingId, opt => opt.MapFrom(src => DtoTranslations.ToCreateVendorInvoiceResponse(src).VendorAccountingId))
            .ForMember(d => d.VendorShortAddress, opt => opt.MapFrom(src => DtoTranslations.ToCreateVendorInvoiceResponse(src).VendorShortAddress));

            CreateMap <VendorIntegrationEvent, VendorDTO>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.VendorId))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.VendorName))
            .ForMember(d => d.Accounting_SI_Code, opt => opt.MapFrom(src => src.AccountingId));

            CreateMap <SuperServiceOrderSurveyResult, JobSurveyResultCreatedUpdatedIntegrationEvent>()
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.SuperServiceOrder.JobId))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.SuperServiceOrder.DisplayId))
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.SurveyedGrossWeightLb, opt => opt.MapFrom(src => src.GrossWeightLb))
            .ForMember(d => d.SurveyedNetWeightLb, opt => opt.MapFrom(src => src.NetWeightLb))
            .ForMember(d => d.AuthorizedGrossWeightLb,
                       opt => opt.MapFrom(src => DtoTranslations.FilterAuthorization(src.SuperServiceOrder.SuperServiceId,
                                                                                     MeasurementType.GROSS_LBS,
                                                                                     src.SuperServiceOrder.Job.JobSuperServiceAuthorization).Amount))
            .ForMember(d => d.AuthorizedNetWeightLb,
                       opt => opt.MapFrom(src => DtoTranslations.FilterAuthorization(src.SuperServiceOrder.SuperServiceId,
                                                                                     MeasurementType.NET_LBS,
                                                                                     src.SuperServiceOrder.Job.JobSuperServiceAuthorization).Amount))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.SuperServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderAirFreightItem, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightLiftVan, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightLooseItem, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrderOceanFreightContainer.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightLCL, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderOceanFreightVehicle, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName,
                       opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperServiceModeId == null ?
                                          src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName :
                                          src.ServiceOrder.SuperServiceOrder.SuperServiceMode.ModeName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <ServiceOrderRoadFreightLTL, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.SuperServiceOrderId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrderId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.Service.ServiceName))
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.ServiceOrder.JobId))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.SuperService.SuperServiceName))
            .ForMember(d => d.DisplayId, opt => opt.MapFrom(src => src.ServiceOrder.SuperServiceOrder.DisplayId))
            .ForMember(d => d.Id, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.ServiceOrder.Job.BranchName));

            CreateMap <GetJobCostMetricsResponse, ShipmentMetricsUpdatedIntegrationEvent>()
            .ForMember(d => d.ActualGrossWeightLb, opt => opt.MapFrom(src => src.GrossWeightLb))
            .ForMember(d => d.ActualNetWeightLb, opt => opt.MapFrom(src => src.NetWeightLb))
            .ForMember(d => d.SurveyedGrossWeightLb, opt => opt.MapFrom(src => src.SurveyGrossWeightLb))
            .ForMember(d => d.SurveyedNetWeightLb, opt => opt.MapFrom(src => src.SurveyNetWeightLb))
            .ForMember(d => d.OverweightPercentage, opt => opt.MapFrom(src => src.OverweightPercentage));

            CreateMap <JobContact, MoveContactUpdatedIntegrationEvent>()
            .IgnoreAllPropertiesWithAnInaccessibleSetter()
            .ForMember(d => d.EmailAddress, opt => opt.MapFrom(src => src.Email))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.Job.MoveType.ToLowerClean()))
            .ForMember(d => d.OriginCountry, opt => opt.MapFrom(src => src.Job.OriginAddress.Country.IsUSA() ? "usa" : src.Job.OriginAddress.Country.ToLowerClean()))
            .ForMember(d => d.DestinationCountry, opt => opt.MapFrom(src => src.Job.DestinationAddress.Country.IsUSA() ? "usa" : src.Job.DestinationAddress.Country.ToLowerClean()))
            .ForMember(d => d.DisplayId, opt => opt.Ignore())
            .ForMember(d => d.UserId, opt => opt.Ignore())
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.Job.BranchName));
        }
        public JobsMapperProfile()
        {
            CreateMap <Job, TransfereeFlatDto>()
            .ForMember(d => d.TransfereeId, opt => opt.MapFrom(src => src.Transferee.Id))
            .ForMember(d => d.AccountingId, opt => opt.MapFrom(src => src.Transferee.AccountingId))
            .ForMember(d => d.FirstName, opt => opt.MapFrom(src => src.Transferee.FirstName))
            .ForMember(d => d.LastName, opt => opt.MapFrom(src => src.Transferee.LastName))
            .ForMember(d => d.Email, opt => opt.MapFrom(src => src.Transferee.Email.OrderBy(e => e.Id).FirstOrDefault().Value))
            .ForMember(d => d.Phone, opt => opt.MapFrom(src => src.Transferee.TransfereePhone))
            .ForMember(d => d.Phone, opt => opt.MapFrom(src => src.Transferee.TransfereePhone
                                                        .OrderByDescending(p => p.PhoneId)
                                                        .Select(p => new { Phone = string.Concat(p.Phone.DialCode, p.Phone.NationalNumber) })
                                                        .FirstOrDefault().Phone ?? string.Empty))
            .ForMember(d => d.Address1, opt => opt.MapFrom(src => src.DestinationAddress.Address1))
            .ForMember(d => d.Address2, opt => opt.MapFrom(src => src.DestinationAddress.Address2))
            .ForMember(d => d.Address3, opt => opt.MapFrom(src => src.DestinationAddress.Address3))
            .ForMember(d => d.City, opt => opt.MapFrom(src => src.DestinationAddress.City))
            .ForMember(d => d.State, opt => opt.MapFrom(src => src.DestinationAddress.State))
            .ForMember(d => d.PostalCode, opt => opt.MapFrom(src => src.DestinationAddress.PostalCode))
            .ForMember(d => d.AdditionalAddressInfo, opt => opt.MapFrom(src => src.DestinationAddress.AdditionalAddressInfo))
            .ForMember(d => d.Country, opt => opt.MapFrom(src => src.DestinationAddress.Country));

            CreateMap <Document, DocumentDetailDto>()
            .ForMember(d => d.DocumentId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.DocumentName, opt => opt.MapFrom(src => src.FileName))
            .ForMember(d => d.DocumentDisplayName, opt => opt.MapFrom(src => src.DisplayName));

            CreateMap <Job, JobDto>()
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.AccountLabel, opt => opt.MapFrom(src => src.AccountEntity.Name))
            .ForPath(d => d.Account.Name, opt => opt.MapFrom(src => src.AccountEntity.Name))
            .ForMember(d => d.BillToLabel, opt => opt.MapFrom(src => src.BillToLabel))
            .ForPath(d => d.BillTo.Id, opt => opt.MapFrom(src => src.BillToId))
            .ForPath(d => d.BillTo.Name, opt => opt.MapFrom(src => src.BillToLabel))
            .ForPath(d => d.Account.Id, opt => opt.MapFrom(src => src.AccountEntityId))
            .ForMember(d => d.BookerLabel, opt => opt.MapFrom(src => src.Booker.Name))
            .ForPath(d => d.Booker.Id, opt => opt.MapFrom(src => src.BookerId))
            .ForPath(d => d.Booker.Name, opt => opt.MapFrom(src => src.Booker.Name))
            .ForMember(d => d.AuthPoNum, opt => opt.MapFrom(src => src.AuthorizationPONumber))
            .ForMember(d => d.Status, opt => opt.MapFrom(src => src.JobStatusNavigation.JobStatusDisplayName))
            .ForMember(d => d.IsSurveyAndBid, opt => opt.MapFrom(src => src.JobStatus.Equals(JobStatusIdentifier.SURVEY_BID)))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.BranchName))
            .ForMember(d => d.BranchDisplayName, opt => opt.MapFrom(src => src.BranchNameNavigation.BranchName))
            .ForMember(d => d.BranchCode, opt => opt.MapFrom(src => src.BranchNameNavigation.BranchCode));

            CreateMap <JobDto, Job>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.JobId))
            .ForPath(d => d.BillToId, opt => opt.MapFrom(src => src.BillTo.Id))
            .ForMember(d => d.BillToType, opt => opt.MapFrom(src => src.BillToType))
            .ForPath(d => d.AccountEntityId, opt => opt.MapFrom(src => src.Account.Id))
            .ForPath(d => d.BookerId, opt => opt.MapFrom(src => src.Booker == null ? null : src.Booker.Id))
            .ForMember(d => d.AuthorizationPONumber, opt => opt.MapFrom(src => src.AuthPoNum))
            .ForMember(d => d.RevenueType, opt => opt.MapFrom(src => src.RevenueType))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.BranchName))
            .ForMember(d => d.MoveType, opt => opt.MapFrom(src => src.MoveType))
            .ForMember(d => d.JobStatus, opt => opt.MapFrom(src => DtoTranslations.ToJobStatus(src.Status)))
            .ForMember(d => d.AccrualStatus, opt => opt.MapFrom(src => src.AccrualStatus))
            .ForMember(d => d.JobSource, opt => opt.MapFrom(src => src.JobSource))
            .ForMember(d => d.AccountCustomerReference, opt => opt.MapFrom(src => src.AccountCustomerReference))
            .ForMember(d => d.ExternalReference, opt => opt.MapFrom(src => src.ExternalReference))
            .ForMember(d => d.ExternalReferenceDescription, opt => opt.MapFrom(src => src.ExternalReferenceDescription))
            .ForAllOtherMembers(opt => opt.Ignore());

            CreateMap <Transferee, TransfereeDto>().ReverseMap();

            CreateMap <Job, Job2Dto>()
            .ForMember(dest => dest.Job, opt => opt.MapFrom((src, d) => DtoTranslations.ToJob(src)))
            .ForMember(dest => dest.JobInfo, opt => opt.MapFrom((src, d) => DtoTranslations.ToJobInfo(src)))
            .ForMember(dest => dest.Transferee, opt => opt.MapFrom(src => DtoTranslations.ToTransferee(src.Transferee)));

            CreateMap <Job2Dto, Job>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Job.JobId))
            .ForMember(dest => dest.BillToId, opt => opt.MapFrom(src => src.Job.BillTo.Id))
            .ForMember(dest => dest.AccountEntityId, opt => opt.MapFrom(src => src.Job.Account.Id))
            .ForMember(dest => dest.BookerId, opt => opt.MapFrom(src => src.Job.Booker == null ? null : src.Job.Booker.Id))
            .ForMember(dest => dest.AuthorizationPONumber, opt => opt.MapFrom(src => src.Job.AuthPoNum))
            .ForMember(dest => dest.RevenueType, opt => opt.MapFrom(src => src.Job.RevenueType))
            .ForMember(dest => dest.BranchName, opt => opt.MapFrom(src => src.Job.BranchName))
            .ForMember(dest => dest.MoveType, opt => opt.MapFrom(src => src.Job.MoveType))
            .ForMember(dest => dest.TransfereeId, opt => opt.MapFrom(src => src.Transferee.Id))
            .ForMember(dest => dest.OriginAddress, opt => opt.MapFrom(src => src.JobInfo.Addresses.FirstOrDefault(s => s.Type == "Origin")))
            .ForMember(dest => dest.DestinationAddress, opt => opt.MapFrom(src => src.JobInfo.Addresses.FirstOrDefault(s => s.Type == "Destination")))
            .ForMember(dest => dest.JobStatus, opt => opt.MapFrom(src => DtoTranslations.ToJobStatus(src.Job.Status)))
            .ForMember(dest => dest.AccountCustomerReference, opt => opt.MapFrom(src => src.Job.AccountCustomerReference))
            .ForMember(dest => dest.BranchNameNavigation, opt => opt.Ignore());

            CreateMap <Address, AddressDto>()
            .ReverseMap();

            CreateMap <AccountEntity, NameIdDto>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name))
            .ReverseMap();

            CreateMap <Vendor, NameIdDto>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name)).ReverseMap();

            CreateMap <Vendor, NameIdDto>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.Name, opt => opt.MapFrom(src => src.Name))
            .ReverseMap();

            CreateMap <Email, EmailDto>()
            .ForMember(d => d.EmailType, opt => opt.MapFrom(src => src.Type))
            .ReverseMap();

            CreateMap <Phone, PhoneDto>()
            .ForMember(d => d.Primary, opt => opt.MapFrom(src => src.Primary))
            .ForMember(d => d.Extension, opt => opt.MapFrom(src => src.Extension))
            .ForMember(d => d.PhoneType, opt => opt.MapFrom(src => src.Type))
            .ForPath(d => d.LocationType, opt => opt.MapFrom(src => src.TransfereePhone.FirstOrDefault().Type))
            .ReverseMap();

            CreateMap <Job, GetJobsResponse>()
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.AccountName, opt => opt.MapFrom(src => src.AccountEntity.Name))
            .ForMember(d => d.TransfereeFirstName, opt => opt.MapFrom(src => src.Transferee.FirstName))
            .ForMember(d => d.TransfereeLastName, opt => opt.MapFrom(src => src.Transferee.LastName))
            .ForMember(d => d.TransfereePhone, opt => opt.MapFrom(src => src.Transferee.TransfereePhone
                                                                  .FirstOrDefault(tp => tp.Phone.Primary.GetValueOrDefault()).Phone.NationalNumber))
            .ForMember(d => d.OriginAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.OriginAddress)))
            .ForMember(d => d.DestinationAddress, opt => opt.MapFrom(src => DtoTranslations.ToShortAddress(src.DestinationAddress)))
            .ForMember(d => d.TransfereeEmail, opt => opt.MapFrom(src => src.Transferee.Email.OrderByDescending(e => e.Id)
                                                                  .Select(e => e.Value).FirstOrDefault()))
            .ForMember(d => d.BillToName, opt => opt.MapFrom(
                           src => src.BillToType.Equals("Account", StringComparison.InvariantCultureIgnoreCase) ? src.AccountEntity.Name : src.Booker.Name
                           ))
            .ForMember(d => d.DateModified, opt => opt.MapFrom(src => src.DateModified))
            .ForMember(d => d.MoveStatus, opt => opt.MapFrom(src => src.JobStatusNavigation.JobStatusDisplayName))
            .ForMember(d => d.BranchName, opt => opt.MapFrom(src => src.BranchNameNavigation.BranchName))
            .ForMember(d => d.MoveConsultantName, opt => opt.MapFrom(src => DtoTranslations.GetContactName(src, ConsultantType.MoveConsultant)));

            CreateMap <CreateJobContactDto, JobContact>()
            .ForMember(d => d.PhoneCountryCode, opt => opt.MapFrom(src => src.PhoneCountryCode))
            .ForMember(d => d.PhoneExtension, opt => opt.MapFrom(src => src.PhoneExtension));

            CreateMap <JobContact, JobContactDto>()
            .ForMember(d => d.PhoneCountryCode, opt => opt.MapFrom(src => src.PhoneCountryCode))
            .ForMember(d => d.PhoneExtension, opt => opt.MapFrom(src => src.PhoneExtension))
            .ReverseMap();

            CreateMap <SuperService, GetSuperServicesResponse>();
            CreateMap <SuperServiceOrderStatus, GetSuperServiceOrderStatusResponse>()
            .ForMember(d => d.StatusName, opt => opt.MapFrom(src => src.SuperServiceOrderStatusIdentifier))
            .ForMember(d => d.DisplayName, opt => opt.MapFrom(src => src.SuperServiceOrderStatusDisplayName))
            ;
            CreateMap <JobStatus, GetJobStatusResponse>()
            .ForMember(d => d.StatusName, opt => opt.MapFrom(src => src.JobStatusIdentifier))
            .ForMember(d => d.DisplayName, opt => opt.MapFrom(src => src.JobStatusDisplayName))
            ;

            CreateMap <SuperServiceMode, GetSuperServiceModeResponse>();

            CreateMap <SuperServiceOrder, GetSuperServiceOrderResponse>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.SuperServiceName, opt => opt.MapFrom(src => src.SuperService.SuperServiceName))
            .ForMember(d => d.SuperServiceModeName, opt => opt.MapFrom(src => src.SuperServiceMode.ModeName))
            .ForMember(d => d.SuperServiceId, opt => opt.MapFrom(src => src.SuperService.Id))
            .ForMember(d => d.SuperServiceIconName, opt => opt.MapFrom(src => src.SuperService.SuperServiceIconName))
            .ForMember(d => d.Status, opt => opt.MapFrom(src => src.SuperServiceOrderStatusIdentifierNavigation.SuperServiceOrderStatusDisplayName))
            .ForPath(d => d.ServiceOrders, opt => opt.MapFrom(src => src.ServiceOrder))
            .AfterMap((s, resp) =>
            {
                resp.ServiceOrders = resp.ServiceOrders.OrderBy(x => x.SortOrder);
            });

            CreateMap <SuperServiceOrder, CreateSuperServiceOrderResponse>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.SuperServiceName, opt => opt.MapFrom(src => src.SuperService.SuperServiceName))
            .ForMember(d => d.SuperServiceModeName, opt => opt.MapFrom(src => src.SuperServiceMode.ModeName))
            .ForMember(d => d.SuperServiceIconName, opt => opt.MapFrom(src => src.SuperService.SuperServiceIconName))
            .ForMember(d => d.DisplayId,
                       opt => opt.MapFrom(src => src.Job.Id.ToString() + "-" + src.SuperService.SuperServiceName.Substring(0, 1).ToUpper() + src.SequenceNumber))
            .ForMember(d => d.SuperServiceId, opt => opt.MapFrom(src => src.SuperService.Id))
            .ForPath(d => d.ServiceOrders, opt => opt.MapFrom(src => src.ServiceOrder));

            CreateMap <PatchSuperServiceOrderRequest, SuperServiceOrder>()
            .ForMember(d => d.SuperServiceOrderStatusIdentifier, opt => opt.MapFrom(src => src.Status))
            .ReverseMap();

            CreateMap <ServiceOrder, GetServiceOrderResponse>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.Service))
            .ForMember(d => d.ServiceId, opt => opt.MapFrom(src => src.Service.Id))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.Service.ServiceName))
            .ForMember(d => d.SortOrder, opt => opt.MapFrom(src => src.Service.SortOrder))
            .ForMember(d => d.ServiceAbbreviation, opt => opt.MapFrom(src => src.Service.ServiceAbbreviation));

            CreateMap <ServiceOrder, CreateServiceOrderResponse>()
            .ForMember(d => d.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.Service))
            .ForMember(d => d.ServiceId, opt => opt.MapFrom(src => src.Service.Id))
            .ForMember(d => d.ServiceName, opt => opt.MapFrom(src => src.Service.ServiceName))
            .ForMember(d => d.ServiceAbbreviation, opt => opt.MapFrom(src => src.Service.ServiceAbbreviation));

            CreateMap <JobSurveyInfo, GetSurveyInfoResponse>()
            .ForMember(d => d.RequestedPackStartDate, opt => opt.MapFrom(src => src.RequestedPackStartDateTime))
            .ForMember(d => d.RequestedPackEndDate, opt => opt.MapFrom(src => src.RequestedPackEndDateTime))
            .ReverseMap();

            CreateMap <JobSuperServiceAuthorization, GetSuperServiceAuthorizationResponse>()
            .ForMember(d => d.SuperServiceName, opt => opt.MapFrom(src => src.SuperService.SuperServiceName)).ReverseMap();

            CreateMap <Job, GetJobsSearchIndexResponse>()
            .ForMember(d => d.JobId, opt => opt.MapFrom(src => src.Id))
            .ForMember(d => d.MasterAwbNumber, opt => opt.MapFrom(src => DtoTranslations.GetMasterAwbNumber(src.ServiceOrder)))
            .ForMember(d => d.MasterBolNumber, opt => opt.MapFrom(src => DtoTranslations.GetMasterBolNumber(src.ServiceOrder)))
            .ForMember(d => d.ContainerNumbers, opt => opt.MapFrom(src => DtoTranslations.GetContainers(src.ServiceOrder)))
            .ForMember(d => d.InvoiceDocuments, opt => opt.MapFrom(src => DtoTranslations.GetSearchInvoices(src.SuperServiceOrder)))
            .ForMember(d => d.TransfereeFirstName, opt => opt.MapFrom(src => src.Transferee.FirstName))
            .ForMember(d => d.TransfereeLastName, opt => opt.MapFrom(src => src.Transferee.LastName))
            ;
        }