using System; using System.Linq; using BO.AppServer.Data.Entity; using BO.AppServer.Metadata.Dto; using BO.AppServer.Metadata.Enums; using Quadarax.Foundation.Core.Data.Interface.Entity; using Quadarax.Foundation.Core.Mapper; namespace BO.AppServer.Business.Mapper { public class MapperLong : Quadarax.Foundation.Core.Data.Mapper.Mapper { public MapperLong() { //TODO: make automatic DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); DefineBiDirection(); Define(builder => { builder.Custom(dest => dest.Structures, src => src.Structures.MapList()); builder.Custom(dest => dest.Audit, src => new BoAuditDto() { Created = src.Created, Changed = src.Modified, CreatedBy = src.CreatedByUser.Name, ChangedBy = src.ModifiedByUser != null ? src.ModifiedByUser.Name : string.Empty }); //calculate on demand builder.Custom(dest => dest.BillingPlanCode, src => src.WorkspaceBillings.OrderByDescending(x=>x.Created).FirstOrDefault().BillingPlan.Code); }); Define(); Define(); DefineReverse(); Define(); Define(builder => { builder.Custom(dest => dest.Audit, src => new BoAuditDto() { Created = src.Created, Changed = src.Modified, CreatedBy = src.CreatedByUser.Name, ChangedBy = src.ModifiedByUser != null ? src.ModifiedByUser.Name : string.Empty }); builder.Custom(dest => dest.Artifacts, src => src.Artifacts.MapList()); //calculate on demand builder.Custom(dest => dest.BillingPlanCode, src => src.WorkspaceBillings.OrderByDescending(x=>x.Created).FirstOrDefault().BillingPlan.Code); }); //Define(); Define(builder => { builder.Custom(dest => dest.Audit, src => new BoAuditDto() { Created = src.Created, Changed = null, CreatedBy = src.CreatedByUser.Name, ChangedBy = string.Empty }); //calculate on demand builder.Custom(dest => dest.BillingPlanCode, src => src.WorkspaceBillings.OrderByDescending(x=>x.Created).FirstOrDefault().BillingPlan.Code); }); Define(builder => { builder.Custom(dest => dest.DocumentAllCount, src => src.Metadocuments.Count); builder.Custom(dest => dest.DocumentPendingCount, src => src.Metadocuments.Count(x => x.Status == (int)DocumentStatusEnum.Pending)); builder.Custom(dest => dest.DocumentWorkingCount, src => src.Metadocuments.Count(x => x.Status == (int)DocumentStatusEnum.Processing)); builder.Custom(dest => dest.DocumentDoneCount, src => src.Metadocuments.Count(x => x.Status == (int)DocumentStatusEnum.DoneOk)); builder.Custom(dest => dest.DocumentFailCount, src => src.Metadocuments.Count(x => x.Status == (int)DocumentStatusEnum.DoneFail)); builder.Custom(dest => dest.Audit, src => new BoAuditDto() { Created = src.Created, Changed = src.Modified, CreatedBy = src.CreatedByUser.Name, ChangedBy = src.ModifiedByUser != null ? src.ModifiedByUser.Name : string.Empty }); }); } public void DefineBiDirection() where TDao : class, IDao, new() where TDto : class, IDto, new() { DefineBiDirection(); } } }