using AutoMapper; using PowderCoating.Application.DTOs.Company; using PowderCoating.Application.DTOs.User; using PowderCoating.Application.Services; using PowderCoating.Core.Entities; namespace PowderCoating.Application.Mappings; public class CompanyProfile : Profile { public CompanyProfile() { CreateMap() .ForMember(dest => dest.UserCount, opt => opt.MapFrom(src => src.Users.Count)) .ForMember(dest => dest.CustomerCount, opt => opt.MapFrom(src => src.Customers.Count)) .ForMember(dest => dest.JobCount, opt => opt.MapFrom(src => src.Jobs.Count)) .ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.Users)); CreateMap(); CreateMap() .ForMember(dest => dest.UserCount, opt => opt.MapFrom(src => src.Users.Count)); CreateMap(); CreateMap(); CreateMap(); // Company Settings mappings CreateMap() .ForMember(dest => dest.HasLogo, opt => opt.MapFrom(src => !string.IsNullOrEmpty(src.LogoFilePath) || (src.LogoData != null && src.LogoData.Length > 0))); CreateMap(); // Company Operating Costs mappings CreateMap() .ForMember(dest => dest.DerivedBlastRateSqFtPerHour, opt => opt.MapFrom(src => ShopCapabilityCalculator.GetBlastRateSqFtPerHour(src))) .ForMember(dest => dest.DerivedCoatingRateSqFtPerHour, opt => opt.MapFrom(src => ShopCapabilityCalculator.GetCoatingRateSqFtPerHour(src))) .ForMember(dest => dest.FacilityOverheadRatePerHour, opt => opt.MapFrom(src => src.MonthlyBillableHours > 0 ? (src.MonthlyRent + src.MonthlyUtilities) / src.MonthlyBillableHours : 0m)); CreateMap(); CreateMap(); // Company Preferences mappings CreateMap().ReverseMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); CreateMap(); } }