namespace MyOffice.Services.Mapper; using Account.Domain; using AutoMapper; using Data.Models.Accounts; using Data.Models.Currencies; using Data.Models.Items; using Data.Models.Users; using MyOffice.Services.Currency.Domain; public class AccountServiceProfile : Profile { public AccountServiceProfile() { MapUser(); MapAccount(); MapCurrency(); MapItems(); CreateMap(); } private void MapUser() { CreateMap(); } private void MapAccount() { CreateMap() .ForMember(x => x.HasMotions, o => o.MapFrom(x => x.Motions!.Any())) .ForMember(x => x.CurrentUserId, o => o.MapFrom()) .ForMember(x => x.AccountAccess, o => { o.MapFrom((src, dst) => src.AccessRights!.FirstOrDefault(x => x.UserId == dst.CurrentUserId)); }) .ForMember(x => x.Type, o => { o.SetMappingOrder(1); o.MapFrom((src, dst) => dst.AccountAccess?.Type.ToString()); }) .ForMember(x => x.Name, o => { o.SetMappingOrder(1); o.MapFrom((src, dst) => dst.AccountAccess?.Name ?? src.Name); }) ; CreateMap(); CreateMap(); CreateMap(); CreateMap() .ForMember(x => x.Id, o => o.MapFrom(x => x.Id)) .ForMember(x => x.AllowDelete, o => o.MapFrom(x => !x.Accounts!.Any())) ; CreateMap() .ForMember(x => x.Account, o => o.MapFrom(x => x.Account!.Name)) ; } private void MapCurrency() { CreateMap(); CreateMap(); CreateMap(); } private void MapItems() { CreateMap(); CreateMap() .ForMember(x => x.Id, o => o.MapFrom(x => x.ItemGlobalId)) .ForMember(x => x.Name, o => o.MapFrom(x => x.ItemGlobal.Name)) .ForMember(x => x.AllowDelete, o => o.MapFrom(x => !x.Motions!.Any())) ; } }