guillermorangel
6/1/2017 - 6:36 PM

dto mapper

dto mapper

using System;
using Two90Signs.Core.Domain.Common;
using Two90Signs.Core.Domain.Customer;

namespace Two90Signs.Presentation.API.Models.Quote
{
    public class QuoteSearchListDTO : ISelectList
    {
        /// <summary>
        /// The customer's storage ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// The customer's 290-assigned number
        /// </summary>
        public string CustomerNumber { get; set; }

        /// <summary>
        /// The customer's full name
        /// </summary>
        public string CustomerName { get; set; }

        /// <summary>
        /// Quote number (old match to M2M)
        /// </summary>
        public string QuoteNumber { get; set; }

        /// <summary>
        /// Sales order number
        /// </summary>
        public string SalesOrderNumber { get; set; }

        /// <summary>
        /// Gets or sets the name of the project.
        /// </summary>
        /// <value>The name of the project.</value>
        public string ProjectName { get; set; }

        public AccountTypeEntity AccountType { get; set; }
        public CustomerTypeEntity CustomerType { get; set; }
        public AddressEntity SoldToAddress { get; set; }
        public DateTime? CreatedDate { get; set; }
        public DateTime? UtcEditDate { get; set; }

        public string EditDateString => UtcEditDate?.ToShortDateString();

        /// <summary>
        /// The value to select when this is included in a select list
        /// </summary>
        public string SelectValue => Id.ToString( );

        /// <summary>
        /// The description to use when this is included in a select list
        /// </summary>
        public string SelectText => CustomerName;

        /// <summary>
        /// Quote status
        /// </summary>
        public string QuoteStatus { get; set; }

        /// <summary>
        /// Quote start date
        /// </summary>
        public DateTime? QuoteIssuedDate { get; set; }

        /// <summary>
        /// Customer service rep's initials
        /// </summary>
        public string CSRInitials { get; set; }
    }
}
using System;
using Two90Signs.Core.Domain.Common;
using Two90Signs.Core.Domain.Customer;
using Two90Signs.Core.Domain.SalesRep;
using Two90Signs.Core.Domain.Security;

namespace Two90Signs.Core.Domain.QuoteOrder
{
    public class QuoteOrderSummaryEntity : ISelectList

    {
        public virtual int Id { get; set; }
        public virtual string CustomerNumber { get; set; }
        public virtual string CustomerName { get; set; }
        public virtual string QuoteNumber { get; set; }
        public virtual string SalesOrderNumber { get; set; }

        public virtual string ProjectName { get; set; }
        public virtual AccountTypeEntity AccountType { get; set; }
        public virtual CustomerTypeEntity CustomerType { get; set; }
        public virtual AddressEntity SoldToAddress { get; set; }
        public virtual DateTime? CreatedDate { get; set; }
        public virtual DateTime? UtcEditDate { get; set; }

        public virtual QuoteOrderStatusEntity QuoteOrderStatus { get; set; } 
        public virtual UserMaster CustomerServiceRep { get; set; }
        public virtual DateTime? OrderStartDate { get; set; }
        public virtual DateTime? QuoteIssuedDate { get; set; }
        public virtual DateTime? ShipDate { get; set; }

        public virtual string CustomerNumberName
        {
            get { return string.Format( "{0} - {1}", CustomerNumber, CustomerName ); }
        }

        public virtual string SelectValue
        {
            get
            {
                return Id.ToString( );
            }
        }

        public virtual string SelectText
        {
            get
            {
                return CustomerName;
            }
        }

        public override bool Equals( object obj )
        {
            return ( obj is QuoteOrderSummaryEntity && ( obj as QuoteOrderSummaryEntity ).Id == Id );
        }

        public override int GetHashCode()
        {
            return Id;
        }
    }
}
using AutoMapper;
using Two90Signs.Core.Domain.QuoteOrder;
using Two90Signs.Presentation.API.Models.Quote;
using Two90Signs.Presentation.API.Models.QuoteOrder.Order;

namespace Two90Signs.Infrastructure.Mapping.Profiles
{
    internal class QuoteOrderSearchProfile : Profile
    {
        public QuoteOrderSearchProfile()
        {
            CreateMap<QuoteSearchInputDTO, QuoteOrderSearchParams>( MemberList.Source )
                .ForMember( dest => dest.ContactFirstName, opts => opts.MapFrom( src => src.ContactFirstName ) )
                .ForMember( dest => dest.ContactLastName, opts => opts.MapFrom( src => src.ContactLastName ) )
                .ForMember( dest => dest.ContactEmailAddress, opts => opts.MapFrom( src => src.ContactEmailAddress ) )
                .ForMember(dest => dest.QuoteOrderDateStart, opts => opts.MapFrom(src => src.QuoteDateStart))
                .ForMember(dest => dest.QuoteOrderDateEnd, opts => opts.MapFrom(src => src.QuoteDateEnd))
                ;
            CreateMap<OrderSearchInputDTO, QuoteOrderSearchParams>(MemberList.Source)
                .ForMember(dest => dest.QuoteOrderDateStart, opts => opts.MapFrom(src => src.OrderDateStart))
                .ForMember(dest => dest.QuoteOrderDateEnd, opts => opts.MapFrom(src => src.OrderDateEnd));

            CreateMap<QuoteOrderSummaryEntity, QuoteSearchListDTO>()
                .ForMember(dest => dest.QuoteStatus, opts => opts.MapFrom(src => src.QuoteOrderStatus.Name))
                .ForMember(dest => dest.CSRInitials, opts => opts.MapFrom(src => src.CustomerServiceRep.Initials));

            CreateMap<QuoteOrderSummaryEntity, OrderListDTO>()
                .ForMember(x => x.OrderStatus, y => y.MapFrom(z => z.QuoteOrderStatus.Name))
                .ForMember(x => x.CSRInitials, y => y.MapFrom(z => z.CustomerServiceRep.Initials));
        }
    }
}