Files
WatchIt/WatchIt.DTO/Models/Controllers/People/PeopleMappers.cs

108 lines
3.4 KiB
C#

using WatchIt.Database.Model.People;
using WatchIt.DTO.Models.Controllers.Genders;
using WatchIt.DTO.Models.Controllers.People.Person;
using WatchIt.DTO.Models.Generics.Image;
using WatchIt.DTO.Models.Generics.Rating;
using WatchIt.DTO.Models.Generics.ViewCount;
namespace WatchIt.DTO.Models.Controllers.People;
public static class PeopleMappers
{
#region PUBLIC METHODS
#region Person
public static Database.Model.People.Person ToEntity(this PersonRequest request) => new Database.Model.People.Person
{
Name = request.Name,
FullName = request.FullName,
Description = request.Description,
BirthDate = request.BirthDate,
DeathDate = request.DeathDate,
GenderId = request.GenderId,
};
public static void UpdateWithRequest(this Database.Model.People.Person entity, PersonRequest request)
{
entity.Name = request.Name;
entity.FullName = request.FullName;
entity.Description = request.Description;
entity.BirthDate = request.BirthDate;
entity.DeathDate = request.DeathDate;
entity.GenderId = request.GenderId;
}
public static PersonResponse ToResponse(this Database.Model.People.Person entity)
{
PersonResponse response = new PersonResponse();
response.SetPersonResponseProperties(entity);
return response;
}
public static PersonUserRatedResponse ToResponse(this Database.Model.People.Person entity, long accountId)
{
PersonUserRatedResponse response = new PersonUserRatedResponse();
response.SetPersonResponseProperties(entity);
response.RatingUser = entity.Roles
.SelectMany(x => x.Ratings
.Where(y => y.AccountId == accountId))
.ToUserOverallResponse();
return response;
}
public static PersonRequest ToRequest(this PersonResponse response) => new PersonRequest
{
Name = response.Name,
FullName = response.FullName,
Description = response.Description,
BirthDate = response.BirthDate,
DeathDate = response.DeathDate,
GenderId = response.Gender?.Id,
};
#endregion
#region PersonPicture
public static Database.Model.People.PersonPicture ToEntity(this ImageRequest request, long personId) => new Database.Model.People.PersonPicture
{
PersonId = personId,
Image = request.Image,
MimeType = request.MimeType,
};
#endregion
#region MediumViewCount
public static PersonViewCount CreatePersonViewCountEntity(long personId) => new PersonViewCount
{
PersonId = personId,
ViewCount = 1,
};
#endregion
#endregion
#region PRIVATE METHODS
private static void SetPersonResponseProperties(this PersonResponse response, Database.Model.People.Person entity)
{
response.Id = entity.Id;
response.Name = entity.Name;
response.FullName = entity.FullName;
response.Description = entity.Description;
response.BirthDate = entity.BirthDate;
response.DeathDate = entity.DeathDate;
response.Gender = entity.Gender?.ToResponse();
response.Rating = entity.Roles.SelectMany(x => x.Ratings).ToOverallResponse();
response.ViewCount = entity.ViewCounts.ToResponse();
response.Picture = entity.Picture?.ToResponse();
}
#endregion
}