2024-10-05 09:12:28 +02:00
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
|
using WatchIt.Common.Model.Genders;
|
|
|
|
|
|
using WatchIt.Database;
|
|
|
|
|
|
using WatchIt.Database.Model.Common;
|
|
|
|
|
|
using WatchIt.WebAPI.Services.Controllers.Common;
|
|
|
|
|
|
using WatchIt.WebAPI.Services.Utility.User;
|
|
|
|
|
|
using Gender = WatchIt.Database.Model.Common.Gender;
|
|
|
|
|
|
|
|
|
|
|
|
namespace WatchIt.WebAPI.Services.Controllers.Genders;
|
|
|
|
|
|
|
|
|
|
|
|
public class GendersControllerService : IGendersControllerService
|
|
|
|
|
|
{
|
|
|
|
|
|
#region SERVICES
|
|
|
|
|
|
|
|
|
|
|
|
private readonly DatabaseContext _database;
|
|
|
|
|
|
private readonly IUserService _userService;
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region CONSTRUCTORS
|
|
|
|
|
|
|
|
|
|
|
|
public GendersControllerService(DatabaseContext database, IUserService userService)
|
|
|
|
|
|
{
|
|
|
|
|
|
_database = database;
|
|
|
|
|
|
_userService = userService;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region PUBLIC METHODS
|
|
|
|
|
|
|
2024-10-06 00:43:09 +02:00
|
|
|
|
#region Main
|
|
|
|
|
|
|
2024-10-05 09:12:28 +02:00
|
|
|
|
public async Task<RequestResult> GetAllGenders(GenderQueryParameters query)
|
|
|
|
|
|
{
|
|
|
|
|
|
IEnumerable<Gender> rawData = await _database.Genders.ToListAsync();
|
|
|
|
|
|
IEnumerable<GenderResponse> data = rawData.Select(x => new GenderResponse(x));
|
|
|
|
|
|
data = query.PrepareData(data);
|
|
|
|
|
|
return RequestResult.Ok(data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<RequestResult> GetGender(short id)
|
|
|
|
|
|
{
|
|
|
|
|
|
Gender? item = await _database.Genders.FirstOrDefaultAsync(x => x.Id == id);
|
|
|
|
|
|
if (item is null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return RequestResult.NotFound();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GenderResponse data = new GenderResponse(item);
|
|
|
|
|
|
return RequestResult.Ok(data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<RequestResult> PostGender(GenderRequest data)
|
|
|
|
|
|
{
|
|
|
|
|
|
UserValidator validator = _userService.GetValidator().MustBeAdmin();
|
|
|
|
|
|
if (!validator.IsValid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return RequestResult.Forbidden();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Gender item = data.CreateGender();
|
|
|
|
|
|
await _database.Genders.AddAsync(item);
|
|
|
|
|
|
await _database.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
|
|
return RequestResult.Created($"genres/{item.Id}", new GenderResponse(item));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<RequestResult> DeleteGender(short id)
|
|
|
|
|
|
{
|
|
|
|
|
|
UserValidator validator = _userService.GetValidator().MustBeAdmin();
|
|
|
|
|
|
if (!validator.IsValid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return RequestResult.Forbidden();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Gender? item = await _database.Genders.FirstOrDefaultAsync(x => x.Id == id);
|
|
|
|
|
|
if (item is null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return RequestResult.NoContent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_database.Genders.Attach(item);
|
|
|
|
|
|
_database.Genders.Remove(item);
|
|
|
|
|
|
await _database.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
|
|
return RequestResult.NoContent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
2024-10-06 00:43:09 +02:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
2024-10-05 09:12:28 +02:00
|
|
|
|
}
|