using AutoMapper; using OnlyPrompt.Backend.ApiModels.Auth; using OnlyPrompt.Backend.ApiModels.Category; using OnlyPrompt.Backend.ApiModels.Prompt; using OnlyPrompt.Backend.ApiModels.Subscription; using OnlyPrompt.Backend.ApiModels.UserProfile; using OnlyPrompt.Backend.Database.Models; namespace OnlyPrompt.Backend.Utils { public static class AutoMapperSetup { public static void Setup(IMapperConfigurationExpression config) { config.CreateMap() .MapCtorParamFrom(x => x.Id, x => x.Id) .MapCtorParamFrom(x => x.UserName, x => x.UserName) .MapCtorParamFrom(x => x.Roles, x => x.Roles) .MapCtorParamFrom(x => x.Email, x => x.Email); config.CreateMap() .MapCtorParamFrom(x => x.DisplayName, x => x.DisplayName) .MapCtorParamFrom(x => x.Slug, x => x.Slug) .MapCtorParamFrom(x => x.Bio, x => x.Bio) .MapCtorParamFrom(x => x.AvatarUrl, x => x.AvatarUrl) .MapCtorParamFrom(x => x.Specialities, x => x.Specialities) .MapCtorParamFrom(x => x.AverageRating, x => x.User.Prompts.Average(p => p.Reviews.Average(r => r.Rating))) .MapCtorParamFrom(x => x.Subscribers, x => x.User.Subscribers.Count()); config.CreateMap() .MapCtorParamFrom(x => x.Id, x => x.Id) .MapCtorParamFrom(x => x.Title, x => x.Title) .MapCtorParamFrom(x => x.Description, x => x.Description) .MapCtorParamFrom(x => x.Content, x => x.Prompt) .MapCtorParamFrom(x => x.TimeStamp, x => x.UpdatedAt) .MapCtorParamFrom(x => x.TierLevel, x => x.SubscriptionTier == null ? (int?)null : x.SubscriptionTier.Level) .MapCtorParamFrom(x => x.TierName, x => x.SubscriptionTier == null ? null : x.SubscriptionTier.Name) .MapCtorParamFrom(x => x.CreatorName, x => x.Creator.Profile.DisplayName) .MapCtorParamFrom(x => x.CreatorId, x => x.CreatorId) .MapCtorParamFrom(x => x.AverageRating, x => x.Reviews.Average(r => (double?)r.Rating)); config.CreateMap() .MapCtorParamFrom(x => x.Id, x => x.Id) .MapCtorParamFrom(x => x.Title, x => x.Title) .MapCtorParamFrom(x => x.CreatorName, x => x.Creator.Profile.DisplayName) .MapCtorParamFrom(x => x.TimeStamp, x => x.UpdatedAt) .MapCtorParamFrom(x => x.CreatorId, x => x.CreatorId) .MapCtorParamFrom(x => x.TierLevel, x => x.SubscriptionTier == null ? (int?)null : x.SubscriptionTier.Level) .MapCtorParamFrom(x => x.TierName, x => x.SubscriptionTier == null ? null : x.SubscriptionTier.Name) .MapCtorParamFrom(x => x.AverageRating, x => x.Reviews.Average(r => (double?)r.Rating)) .MapCtorParamFrom(x => x.CanAccess, x => true); config.CreateMap() .MapCtorParamFrom(x => x.CreatorId, x => x.ReviewerId) .MapCtorParamFrom(x => x.CreatorName, x => x.Reviewer.Profile.DisplayName) .MapCtorParamFrom(x => x.Comment, x => x.Comment) .MapCtorParamFrom(x => x.Rating, x => x.Rating); config.CreateMap() .MapCtorParamFrom(x => x.Id, x => x.Id) .MapCtorParamFrom(x => x.Name, x => x.Name) .MapCtorParamFrom(x => x.Description, x => x.Description) .MapCtorParamFrom(x => x.Slug, x => x.Slug); config.CreateMap() .MapCtorParamFrom(x => x.Name, x => x.Name) .MapCtorParamFrom(x => x.Slug, x => x.Slug); config.CreateMap() .MapMemberFrom(x => x.Description, x => x.Description) .MapMemberFrom(x => x.Name, x => x.Name) .MapMemberFrom(x => x.Slug, x => x.Slug); config.CreateMap() .MapCtorParamFrom(x => x.Id, x => x.Id) .MapCtorParamFrom(x => x.Name, x => x.Name) .MapCtorParamFrom(x => x.Level, x => x.Level) .MapCtorParamFrom(x => x.MonthlyPrice, x => x.MonthlyPrice) .MapCtorParamFrom(x => x.Description, x => x.Description); config.CreateMap() .MapMemberFrom(x => x.Name, x => x.Name) .MapMemberFrom(x => x.Level, x => x.Level) .MapMemberFrom(x => x.MonthlyPrice, x => x.MonthlyPrice) .MapMemberFrom(x => x.Description, x => x.Description); config.CreateMap() .MapCtorParamFrom(x => x.SubscribedToId, x => x.SubscribedToId) .MapCtorParamFrom(x => x.SubscribedToName, x => x.SubscribedTo.Profile.DisplayName) .MapCtorParamFrom(x => x.CurrentTier, x => x.SubscriptionTier); } } }