You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
API_SQLuedo/API_SQLuedo/DbDataManager/Service/SuccessDataService.cs

110 lines
3.5 KiB

using DbContextLib;
using Entities;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
using Shared;
namespace DbDataManager.Service;
public class SuccessDataService : ISuccessService<SuccessEntity>
{
private UserDbContext DbContext { get; set; }
public SuccessDataService(UserDbContext context)
{
DbContext = context;
context.Database.EnsureCreated();
}
public IEnumerable<SuccessEntity> GetSuccesses(int page, int number, SuccessOrderCriteria orderCriteria)
{
IQueryable<SuccessEntity> query = DbContext.Successes.Skip((page - 1) * number).Take(number);
switch (orderCriteria)
{
case SuccessOrderCriteria.None:
break;
case SuccessOrderCriteria.ByUserId:
query = query.OrderBy(s => s.UserId);
break;
case SuccessOrderCriteria.ByInquiryId:
query = query.OrderBy(s => s.InquiryId);
break;
case SuccessOrderCriteria.ByIsFinished:
query = query.OrderBy(s => s.IsFinished);
break;
default:
break;
}
var successes = query.ToList();
return successes;
}
public IEnumerable<SuccessEntity> GetSuccessesByUserId(int id)
{
var successes = DbContext.Successes.Where(u => u.UserId == id);
if (successes == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return successes;
}
public IEnumerable<SuccessEntity> GetSuccessesByInquiryId(int id)
{
var successes = DbContext.Successes.Where(u => u.InquiryId == id);
if (successes == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(id));
}
return successes;
}
public bool DeleteSuccess(int idUser, int idInquiry)
{
var successEntity = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry);
if (successEntity == null)
{
return false;
}
DbContext.Successes.Remove(successEntity);
DbContext.SaveChangesAsync();
return true;
}
public SuccessEntity UpdateSuccess(int idUser, int idInquiry, SuccessEntity success)
{
var updatingSuccess = DbContext.Successes.FirstOrDefault(u => u.UserId == idUser && u.InquiryId == idInquiry);
if (updatingSuccess == null)
{
throw new ArgumentException("Impossible de trouver le succès", nameof(idUser));
}
/*foreach (var pptt in typeof(SuccessEntity).GetProperties().Where(p =>
p.CanWrite && p.Name != nameof(SuccessEntity.UserId) && p.Name != nameof(SuccessEntity.InquiryId)))
{
pptt.SetValue(updatingSuccess, pptt.GetValue(success));
}*/
updatingSuccess.IsFinished = success.IsFinished;
DbContext.SaveChangesAsync();
return updatingSuccess;
}
public SuccessEntity CreateSuccess(int userId, int inquiryId, bool isFinished)
{
var newSuccessEntity = new SuccessEntity()
{
UserId = userId,
InquiryId = inquiryId,
IsFinished = isFinished,
};
var success = DbContext.Successes.Where(s => s.UserId == userId && s.InquiryId == inquiryId);
if (success == null)
{
DbContext.Successes.Add(newSuccessEntity);
DbContext.SaveChangesAsync();
}
return newSuccessEntity;
}
}