media view count incrementation endpoint added, media page loading optimized, media view count incrementation on media page added
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user