Rated people panel added
This commit is contained in:
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using WatchIt.Common.Model.Accounts;
|
||||
using WatchIt.Common.Model.Movies;
|
||||
using WatchIt.Common.Model.Persons;
|
||||
using WatchIt.Common.Model.Series;
|
||||
using WatchIt.WebAPI.Services.Controllers.Accounts;
|
||||
|
||||
@@ -69,4 +70,10 @@ public class AccountsController(IAccountsControllerService accountsControllerSer
|
||||
[ProducesResponseType(typeof(IEnumerable<SeriesRatedResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult> GetAccountRatedSeries([FromRoute]long id, SeriesRatedQueryParameters query) => await accountsControllerService.GetAccountRatedSeries(id, query);
|
||||
|
||||
[HttpGet("{id}/persons")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType(typeof(IEnumerable<PersonRatedResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult> GetAccountRatedPersons([FromRoute]long id, PersonRatedQueryParameters query) => await accountsControllerService.GetAccountRatedPersons(id, query);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using SimpleToolkit.Extensions;
|
||||
using WatchIt.Common.Model.Accounts;
|
||||
using WatchIt.Common.Model.Media;
|
||||
using WatchIt.Common.Model.Movies;
|
||||
using WatchIt.Common.Model.Persons;
|
||||
using WatchIt.Common.Model.Series;
|
||||
using WatchIt.Database;
|
||||
using WatchIt.Database.Model.Account;
|
||||
@@ -18,6 +19,7 @@ using WatchIt.WebAPI.Services.Utility.Tokens.Exceptions;
|
||||
using WatchIt.WebAPI.Services.Utility.User;
|
||||
using Account = WatchIt.Database.Model.Account.Account;
|
||||
using AccountProfilePicture = WatchIt.Common.Model.Accounts.AccountProfilePicture;
|
||||
using Person = WatchIt.Database.Model.Person.Person;
|
||||
|
||||
namespace WatchIt.WebAPI.Services.Controllers.Accounts;
|
||||
|
||||
@@ -190,6 +192,24 @@ public class AccountsControllerService(
|
||||
response = query.PrepareData(response);
|
||||
return RequestResult.Ok(response);
|
||||
}
|
||||
|
||||
public async Task<RequestResult> GetAccountRatedPersons(long id, PersonRatedQueryParameters query)
|
||||
{
|
||||
Account? account = await database.Accounts.FirstOrDefaultAsync(x => x.Id == id);
|
||||
if (account is null)
|
||||
{
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
IEnumerable<RatingPersonActorRole> actorRolesRatings = account.RatingPersonActorRole;
|
||||
IEnumerable<RatingPersonCreatorRole> creatorRolesRatings = account.RatingPersonCreatorRole;
|
||||
IEnumerable<Person> persons = actorRolesRatings.Select(x => x.PersonActorRole.Person)
|
||||
.Union(creatorRolesRatings.Select(x => x.PersonCreatorRole.Person));
|
||||
|
||||
IEnumerable<PersonRatedResponse> response = persons.Select(x => new PersonRatedResponse(x, actorRolesRatings.Where(y => y.PersonActorRole.Person.Id == x.Id), creatorRolesRatings.Where(y => y.PersonCreatorRole.Person.Id == x.Id)));
|
||||
response = query.PrepareData(response);
|
||||
return RequestResult.Ok(response);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using WatchIt.Common.Model.Accounts;
|
||||
using WatchIt.Common.Model.Media;
|
||||
using WatchIt.Common.Model.Movies;
|
||||
using WatchIt.Common.Model.Persons;
|
||||
using WatchIt.Common.Model.Series;
|
||||
using WatchIt.WebAPI.Services.Controllers.Common;
|
||||
|
||||
@@ -17,4 +18,5 @@ public interface IAccountsControllerService
|
||||
Task<RequestResult> PutAccountInfo(AccountRequest data);
|
||||
Task<RequestResult> GetAccountRatedMovies(long id, MovieRatedQueryParameters query);
|
||||
Task<RequestResult> GetAccountRatedSeries(long id, SeriesRatedQueryParameters query);
|
||||
Task<RequestResult> GetAccountRatedPersons(long id, PersonRatedQueryParameters query);
|
||||
}
|
||||
@@ -118,7 +118,9 @@ public class MediaControllerService(DatabaseContext database, IUserService userS
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
RatingResponse ratingResponse = RatingResponse.Create(item.RatingMedia);
|
||||
RatingResponse ratingResponse = RatingResponseBuilder.Initialize()
|
||||
.Add(item.RatingMedia, x => x.Rating)
|
||||
.Build();
|
||||
|
||||
return RequestResult.Ok(ratingResponse);
|
||||
}
|
||||
|
||||
@@ -335,7 +335,10 @@ public class PersonsControllerService : IPersonsControllerService
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
RatingResponse ratingResponse = RatingResponse.Create(item.PersonActorRoles, item.PersonCreatorRoles);
|
||||
RatingResponse ratingResponse = RatingResponseBuilder.Initialize()
|
||||
.Add(item.PersonActorRoles.SelectMany(x => x.RatingPersonActorRole), x => x.Rating)
|
||||
.Add(item.PersonCreatorRoles.SelectMany(x => x.RatingPersonCreatorRole), x => x.Rating)
|
||||
.Build();
|
||||
|
||||
return RequestResult.Ok(ratingResponse);
|
||||
}
|
||||
@@ -347,10 +350,11 @@ public class PersonsControllerService : IPersonsControllerService
|
||||
{
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
IEnumerable<RatingPersonActorRole> actorRoleRatings = item.PersonActorRoles.SelectMany(x => x.RatingPersonActorRole).Where(x => x.AccountId == userId);
|
||||
IEnumerable<RatingPersonCreatorRole> creatorRoleRatings = item.PersonCreatorRoles.SelectMany(x => x.RatingPersonCreatorRole).Where(x => x.AccountId == userId);
|
||||
RatingResponse ratingResponse = RatingResponse.Create(actorRoleRatings, creatorRoleRatings);
|
||||
|
||||
RatingResponse ratingResponse = RatingResponseBuilder.Initialize()
|
||||
.Add(item.PersonActorRoles.SelectMany(x => x.RatingPersonActorRole).Where(x => x.AccountId == userId), x => x.Rating)
|
||||
.Add(item.PersonCreatorRoles.SelectMany(x => x.RatingPersonCreatorRole).Where(x => x.AccountId == userId), x => x.Rating)
|
||||
.Build();
|
||||
|
||||
return RequestResult.Ok(ratingResponse);
|
||||
}
|
||||
|
||||
@@ -97,7 +97,9 @@ public class RolesControllerService : IRolesControllerService
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
RatingResponse ratingResponse = RatingResponse.Create(item.RatingPersonActorRole);
|
||||
RatingResponse ratingResponse = RatingResponseBuilder.Initialize()
|
||||
.Add(item.RatingPersonActorRole, x => x.Rating)
|
||||
.Build();
|
||||
|
||||
return RequestResult.Ok(ratingResponse);
|
||||
}
|
||||
@@ -281,7 +283,9 @@ public class RolesControllerService : IRolesControllerService
|
||||
return RequestResult.NotFound();
|
||||
}
|
||||
|
||||
RatingResponse ratingResponse = RatingResponse.Create(item.RatingPersonCreatorRole);
|
||||
RatingResponse ratingResponse = RatingResponseBuilder.Initialize()
|
||||
.Add(item.RatingPersonCreatorRole, x => x.Rating)
|
||||
.Build();
|
||||
|
||||
return RequestResult.Ok(ratingResponse);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user