namespace MyOffice.Web.Models.Account { using System.ComponentModel.DataAnnotations; using AutoMapper; using Core.Extensions; using Data.Models.Accounts; using Services.Account.Domain; using Services.Identity; using User; public class AccountViewModel { public string? Id { get; set; } [Required] public string Name { get; set; } = null!; public string Type { get; set; } = null!; [Required] public string CurrencyId { get; set; } = null!; public string? CurrencyName { get; set; } public bool AllowDelete { get; set; } public List? Categories { get; set; } [Required] public string CategoryId { get; set; } = null!; public List? AccessRights { get; set; } } public class ViewModelProfile : Profile { public ViewModelProfile() { CreateMap().ConvertUsing(x => x.ToShort()); } } public class AccountViewModelProfile : Profile { public AccountViewModelProfile( IContextProvider contextProvider ) { CreateMap() .ForMember(x => x.Account, o => o.MapFrom(x => x.Account)) ; CreateMap(); CreateMap(); CreateMap() .ForMember(x => x.Type, o => o.MapFrom(x => x.AccessRights!.FirstOrDefault(a => a.UserId == contextProvider.UserId)!.Type.ToString())) .ForMember(x => x.CurrencyId, o => o.MapFrom(x => x.CurrencyGlobalId)) .ForMember(x => x.CurrencyName, o => o.MapFrom(x => x.Currency!.Name)) .ForMember(x => x.AllowDelete, o => o.MapFrom(x => !x.HasMotions)) ; CreateMap() .ForMember(x => x.Id, o => o.MapFrom(x => x.CategoryId)) .ForMember(x => x.Name, o => o.MapFrom(x => x.Category!.Name)) ; CreateMap(); } } /*public static class AccountViewModelExtensions { public static AccountViewModel ToModel(this AccountDto input) { return new AccountViewModel { Id = input.Id.ToShort(), Name = input.Name, CurrencyId = input.CurrencyGlobalId, CurrencyName = input.CurrencyGlobal!.Name, Categories = input.Categories! .Select(x => x.Category!.ToModel()) .ToList(), AccessRights = input.AccessRights! .Select(x => x.ToModel()) .ToList(), }; } }*/ }