Refactoring, database structure changed
This commit is contained in:
208
WatchIt.DTO/Models/Controllers/Media/MediaMappers.cs
Normal file
208
WatchIt.DTO/Models/Controllers/Media/MediaMappers.cs
Normal file
@@ -0,0 +1,208 @@
|
||||
using WatchIt.Database.Model.Media;
|
||||
using WatchIt.DTO.Models.Controllers.Genres;
|
||||
using WatchIt.DTO.Models.Controllers.Media.Medium.Request;
|
||||
using WatchIt.DTO.Models.Controllers.Media.Medium.Response;
|
||||
using WatchIt.DTO.Models.Generics.Image;
|
||||
using WatchIt.DTO.Models.Generics.Rating;
|
||||
using WatchIt.DTO.Models.Generics.ViewCount;
|
||||
using MediumType = WatchIt.Database.Model.Media.MediumType;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Media;
|
||||
|
||||
public static class MediaMappers
|
||||
{
|
||||
#region PUBLIC METHODS
|
||||
|
||||
#region Medium
|
||||
|
||||
public static MediumMovie ToEntity(this MediumMovieRequest request)
|
||||
{
|
||||
MediumMovie medium = new MediumMovie();
|
||||
medium.UpdateWithRequest(request);
|
||||
return medium;
|
||||
}
|
||||
|
||||
public static void UpdateWithRequest(this MediumMovie entity, MediumMovieRequest request)
|
||||
{
|
||||
entity.SetMediumEntityProperties(request);
|
||||
entity.Budget = request.Budget;
|
||||
}
|
||||
|
||||
public static MediumSeries ToEntity(this MediumSeriesRequest request)
|
||||
{
|
||||
MediumSeries medium = new MediumSeries();
|
||||
medium.UpdateWithRequest(request);
|
||||
return medium;
|
||||
}
|
||||
|
||||
public static void UpdateWithRequest(this MediumSeries entity, MediumSeriesRequest request)
|
||||
{
|
||||
entity.SetMediumEntityProperties(request);
|
||||
entity.HasEnded = request.HasEnded;
|
||||
}
|
||||
|
||||
public static MediumResponse ToResponse(this Database.Model.Media.Medium entity)
|
||||
{
|
||||
MediumResponse response = new MediumResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.Type = entity.Type == MediumType.Movie ? Medium.Response.MediumResponseType.Movie : Medium.Response.MediumResponseType.Series;
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumMovieResponse ToResponse(this MediumMovie entity)
|
||||
{
|
||||
MediumMovieResponse response = new MediumMovieResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.SetMediumMovieResponseProperties(entity);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumSeriesResponse ToResponse(this MediumSeries entity)
|
||||
{
|
||||
MediumSeriesResponse response = new MediumSeriesResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.SetMediumSeriesResponseProperties(entity);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumUserRatedResponse ToResponse(this Database.Model.Media.Medium entity, long accountId)
|
||||
{
|
||||
MediumUserRatedResponse response = new MediumUserRatedResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.SetMediumUserRatedResponseProperties(entity, accountId);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumMovieUserRatedResponse ToResponse(this MediumMovie entity, long accountId)
|
||||
{
|
||||
MediumMovieUserRatedResponse response = new MediumMovieUserRatedResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.SetMediumMovieResponseProperties(entity);
|
||||
response.SetMediumUserRatedResponseProperties(entity, accountId);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumSeriesUserRatedResponse ToResponse(this MediumSeries entity, long accountId)
|
||||
{
|
||||
MediumSeriesUserRatedResponse response = new MediumSeriesUserRatedResponse();
|
||||
response.SetMediumResponseProperties(entity);
|
||||
response.SetMediumSeriesResponseProperties(entity);
|
||||
response.SetMediumUserRatedResponseProperties(entity, accountId);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static MediumRequest ToRequest(this BaseMediumResponse response)
|
||||
{
|
||||
MediumRequest request = response switch
|
||||
{
|
||||
MediumMovieResponse mediumMovieResponse => new MediumMovieRequest
|
||||
{
|
||||
Budget = mediumMovieResponse.Budget,
|
||||
},
|
||||
MediumSeriesResponse mediumSeriesResponse => new MediumSeriesRequest
|
||||
{
|
||||
HasEnded = mediumSeriesResponse.HasEnded,
|
||||
}
|
||||
};
|
||||
request.Title = response.Title;
|
||||
request.Description = response.Description;
|
||||
request.OriginalTitle = response.OriginalTitle;
|
||||
request.ReleaseDate = response.ReleaseDate;
|
||||
request.Duration = response.Duration;
|
||||
return request;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MediumPicture
|
||||
|
||||
public static MediumPicture ToEntity(this ImageRequest request, long mediumId) => new Database.Model.Media.MediumPicture
|
||||
{
|
||||
MediumId = mediumId,
|
||||
Image = request.Image,
|
||||
MimeType = request.MimeType,
|
||||
};
|
||||
|
||||
#endregion
|
||||
|
||||
#region MediumGenre
|
||||
|
||||
public static MediumGenre CreateMediumGenre(long mediumId, short genreId) => new MediumGenre
|
||||
{
|
||||
MediumId = mediumId,
|
||||
GenreId = genreId,
|
||||
};
|
||||
|
||||
#endregion
|
||||
|
||||
#region MediumRating
|
||||
|
||||
public static MediumRating ToEntity(this RatingRequest request, long mediumId, long userId)
|
||||
{
|
||||
MediumRating entity = new MediumRating
|
||||
{
|
||||
MediumId = mediumId,
|
||||
AccountId = userId
|
||||
};
|
||||
entity.UpdateWithRequest(request);
|
||||
return entity;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MediumViewCount
|
||||
|
||||
public static MediumViewCount CreateMediumViewCountEntity(long mediumId) => new MediumViewCount
|
||||
{
|
||||
MediumId = mediumId,
|
||||
ViewCount = 1,
|
||||
};
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region PRIVATE METHODS
|
||||
|
||||
private static void SetMediumEntityProperties(this Database.Model.Media.Medium entity, MediumRequest request)
|
||||
{
|
||||
entity.Title = request.Title;
|
||||
entity.OriginalTitle = request.OriginalTitle;
|
||||
entity.Description = request.Description;
|
||||
entity.Duration = request.Duration;
|
||||
entity.ReleaseDate = request.ReleaseDate;
|
||||
}
|
||||
|
||||
private static void SetMediumResponseProperties(this BaseMediumResponse response, Database.Model.Media.Medium entity)
|
||||
{
|
||||
response.Id = entity.Id;
|
||||
response.Title = entity.Title;
|
||||
response.OriginalTitle = entity.OriginalTitle;
|
||||
response.Description = entity.Description;
|
||||
response.ReleaseDate = entity.ReleaseDate;
|
||||
response.Duration = entity.Duration;
|
||||
response.Genres = entity.Genres.Select(x => x.ToResponse());
|
||||
response.Rating = entity.Ratings.ToOverallResponse();
|
||||
response.ViewCount = entity.ViewCounts.ToResponse();
|
||||
response.Picture = entity.Picture?.ToResponse();
|
||||
}
|
||||
|
||||
private static void SetMediumMovieResponseProperties(this MediumMovieResponse response, MediumMovie entity)
|
||||
{
|
||||
response.Budget = entity.Budget;
|
||||
}
|
||||
|
||||
private static void SetMediumSeriesResponseProperties(this MediumSeriesResponse response, MediumSeries entity)
|
||||
{
|
||||
response.HasEnded = entity.HasEnded;
|
||||
}
|
||||
|
||||
private static void SetMediumUserRatedResponseProperties(this IMediumUserRatedResponse response, Database.Model.Media.Medium entity, long accountId)
|
||||
{
|
||||
response.RatingUser = entity.Ratings.SingleOrDefault(x => x.AccountId == accountId)?.ToUserResponse();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user