116 lines
5.8 KiB
C#
116 lines
5.8 KiB
C#
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<UserModel, ApiUser>()
|
|
.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<UserProfileModel, ApiUserProfile>()
|
|
.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<PromptModel, ApiPrompt>()
|
|
.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.CategoryName, x => x.Category.Name)
|
|
.MapCtorParamFrom(x => x.CategorySlug, x => x.Category.Slug)
|
|
.MapCtorParamFrom(x => x.ExampleOutput, x => x.ExampleOutput)
|
|
.MapCtorParamFrom(x => x.ExampleImageUrl, x => x.ExampleImageUrl)
|
|
.MapCtorParamFrom(x => x.Price, x => x.Price)
|
|
.MapCtorParamFrom(x => x.LikeCount, x => x.Likes.Count)
|
|
.MapCtorParamFrom(x => x.IsLiked, x => false)
|
|
.MapCtorParamFrom(x => x.SaveCount, x => x.Saves.Count)
|
|
.MapCtorParamFrom(x => x.IsSaved, x => false)
|
|
.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.TierMonthlyPrice, x => x.SubscriptionTier == null ? (decimal?)null : x.SubscriptionTier.MonthlyPrice)
|
|
.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))
|
|
.MapCtorParamFrom(x => x.ReviewCount, x => x.Reviews.Count)
|
|
.MapCtorParamFrom(x => x.CanAccess, x => false);
|
|
|
|
config.CreateMap<PromptModel, ApiMinimalPrompt>()
|
|
.MapCtorParamFrom(x => x.Id, x => x.Id)
|
|
.MapCtorParamFrom(x => x.Title, x => x.Title)
|
|
.MapCtorParamFrom(x => x.Description, x => x.Description)
|
|
.MapCtorParamFrom(x => x.CreatorName, x => x.Creator.Profile.DisplayName)
|
|
.MapCtorParamFrom(x => x.CreatorAvatarUrl, x => x.Creator.Profile.AvatarUrl)
|
|
.MapCtorParamFrom(x => x.TimeStamp, x => x.UpdatedAt)
|
|
.MapCtorParamFrom(x => x.CreatorId, x => x.CreatorId)
|
|
.MapCtorParamFrom(x => x.ExampleImageUrl, x => x.ExampleImageUrl)
|
|
.MapCtorParamFrom(x => x.Price, x => x.Price)
|
|
.MapCtorParamFrom(x => x.LikeCount, x => x.Likes.Count)
|
|
.MapCtorParamFrom(x => x.IsLiked, x => false)
|
|
.MapCtorParamFrom(x => x.SaveCount, x => x.Saves.Count)
|
|
.MapCtorParamFrom(x => x.IsSaved, x => false)
|
|
.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.TierMonthlyPrice, x => x.SubscriptionTier == null ? (decimal?)null : x.SubscriptionTier.MonthlyPrice)
|
|
.MapCtorParamFrom(x => x.AverageRating, x => x.Reviews.Average(r => (double?)r.Rating))
|
|
.MapCtorParamFrom(x => x.ReviewCount, x => x.Reviews.Count)
|
|
.MapCtorParamFrom(x => x.CanAccess, x => true);
|
|
|
|
config.CreateMap<ReviewModel, ApiReview>()
|
|
.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<CategoryModel, ApiCategory>()
|
|
.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<CategoryModel, ApiMinimalCategory>()
|
|
.MapCtorParamFrom(x => x.Name, x => x.Name)
|
|
.MapCtorParamFrom(x => x.Slug, x => x.Slug);
|
|
|
|
config.CreateMap<ApiCreateCategoryRequest, CategoryModel>()
|
|
.MapMemberFrom(x => x.Description, x => x.Description)
|
|
.MapMemberFrom(x => x.Name, x => x.Name)
|
|
.MapMemberFrom(x => x.Slug, x => x.Slug);
|
|
|
|
config.CreateMap<SubscriptionTierModel, ApiSubscriptionTier>()
|
|
.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<ApiCreateSubscriptionTierRequest, SubscriptionTierModel>()
|
|
.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<SubscriptionModel, ApiSubscription>()
|
|
.MapCtorParamFrom(x => x.SubscribedToId, x => x.SubscribedToId)
|
|
.MapCtorParamFrom(x => x.SubscribedToName, x => x.SubscribedTo.Profile.DisplayName)
|
|
.MapCtorParamFrom(x => x.CurrentTier, x => x.SubscriptionTier);
|
|
}
|
|
}
|
|
}
|