media view count incrementation endpoint added, media page loading optimized, media view count incrementation on media page added

This commit is contained in:
2024-09-21 21:11:21 +02:00
Unverified
parent 6e2a38fb7c
commit 40fdc3f345
10 changed files with 112 additions and 44 deletions

View File

@@ -15,10 +15,12 @@ public interface IMediaControllerService
Task<RequestResult> GetMediaRatingByUser(long mediaId, long userId);
Task<RequestResult> PutMediaRating(long mediaId, MediaRatingRequest data);
Task<RequestResult> DeleteMediaRating(long mediaId);
Task<RequestResult> PostMediaView(long mediaId);
Task<RequestResult> GetMediaPoster(long id);
Task<RequestResult> PutMediaPoster(long id, MediaPosterRequest data);
Task<RequestResult> DeleteMediaPoster(long id);
Task<RequestResult> GetMediaPoster(long mediaId);
Task<RequestResult> PutMediaPoster(long mediaId, MediaPosterRequest data);
Task<RequestResult> DeleteMediaPoster(long mediaId);
Task<RequestResult> GetPhoto(Guid id);
Task<RequestResult> GetPhotos(MediaPhotoQueryParameters query);

View File

@@ -5,6 +5,7 @@ using WatchIt.Common.Model.Media;
using WatchIt.Database;
using WatchIt.Database.Model.Media;
using WatchIt.Database.Model.Rating;
using WatchIt.Database.Model.ViewCount;
using WatchIt.WebAPI.Services.Controllers.Common;
using WatchIt.WebAPI.Services.Utility.User;
@@ -182,13 +183,46 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
return RequestResult.Ok();
}
#endregion
#region View count
public async Task<RequestResult> PostMediaView(long mediaId)
{
Database.Model.Media.Media? item = await database.Media.FirstOrDefaultAsync(x => x.Id == mediaId);
if (item is null)
{
return RequestResult.NotFound();
}
DateOnly dateNow = DateOnly.FromDateTime(DateTime.Now);
ViewCountMedia? viewCount = await database.ViewCountsMedia.FirstOrDefaultAsync(x => x.MediaId == mediaId && x.Date == dateNow);
if (viewCount is null)
{
viewCount = new ViewCountMedia
{
MediaId = mediaId,
Date = dateNow,
ViewCount = 1
};
await database.ViewCountsMedia.AddAsync(viewCount);
}
else
{
viewCount.ViewCount++;
}
await database.SaveChangesAsync();
return RequestResult.Ok();
}
#endregion
#region Poster
public async Task<RequestResult> GetMediaPoster(long id)
public async Task<RequestResult> GetMediaPoster(long mediaId)
{
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == id);
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == mediaId);
if (media is null)
{
return RequestResult.BadRequest();
@@ -204,7 +238,7 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
return RequestResult.Ok(data);
}
public async Task<RequestResult> PutMediaPoster(long id, MediaPosterRequest data)
public async Task<RequestResult> PutMediaPoster(long mediaId, MediaPosterRequest data)
{
UserValidator validator = userService.GetValidator().MustBeAdmin();
if (!validator.IsValid)
@@ -212,7 +246,7 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
return RequestResult.Forbidden();
}
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == id);
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == mediaId);
if (media is null)
{
return RequestResult.BadRequest();
@@ -236,7 +270,7 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
return RequestResult.Ok();
}
public async Task<RequestResult> DeleteMediaPoster(long id)
public async Task<RequestResult> DeleteMediaPoster(long mediaId)
{
UserValidator validator = userService.GetValidator().MustBeAdmin();
if (!validator.IsValid)
@@ -244,7 +278,7 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
return RequestResult.Forbidden();
}
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == id);
Database.Model.Media.Media? media = await database.Media.FirstOrDefaultAsync(x => x.Id == mediaId);
if (media?.MediaPosterImage != null)
{