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.
3.01-QCM_MuscuMaths/WebApi/EntityManagers/AdministratorEntityManager.cs

82 lines
3.2 KiB

using DbConnectionLibrairie;
using Entities;
using ManagerInterfaces;
using Microsoft.EntityFrameworkCore;
using OrderCriterias;
using ExtensionsClassLibrairie;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EntityManagers
{
public class AdministratorEntityManager(MyDbContext dbContext) : IAdministratorManager<AdministratorEntity>
{
private MyDbContext dbContext = dbContext;
public Task<AdministratorEntity> addAdmin(AdministratorEntity admin)
{
dbContext.Administrators.Add(admin);
dbContext.SaveChangesAsync();
return dbContext.Administrators.Where(a => a.Equals(admin)).FirstAsync();
}
public Task<AdministratorEntity?> getAdministratorByUsername(string username)
{
return dbContext.Administrators.Where(a => a.Username == username).FirstOrDefaultAsync();
}
public Task<(int nbPages, IEnumerable<AdministratorEntity>? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById)
{
int nbEl = getNbElements();
if(nb > nbEl/count) return Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, null));
var tmp = dbContext.Administrators;
switch (orderCriteria)
{
case AdministratorOrderCriteria.ById:
tmp.OrderBy(a => a.Id);
break;
case AdministratorOrderCriteria.ByUserName:
tmp.OrderBy(a => a.Username);
break;
}
return Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, tmp.Skip((nb-1)*count).Take(count)));
}
public int getNbElements()
{
return dbContext.Administrators.CountAsync().Result;
}
public Task<AdministratorEntity?> removeAdmin(AdministratorEntity admin)
{
var tmp = dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync().Result;
if(tmp == null) return Task.FromResult<AdministratorEntity?>(tmp);
dbContext.Administrators.Remove(tmp);
dbContext.SaveChanges();
return Task.FromResult<AdministratorEntity?>(tmp);
}
public Task<AdministratorEntity?> removeAdmin(int id)
{
var tmp = dbContext.Administrators.Where(a => a.Id == id).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<AdministratorEntity?>(tmp);
dbContext.Administrators.Remove(tmp);
dbContext.SaveChanges();
return Task.FromResult<AdministratorEntity?>(tmp);
}
public Task<bool> setPassword(string username, string newHashedPassword)
{
var tmp = getAdministratorByUsername(username).Result;
if (tmp == null) return Task.FromResult<bool>(false);
tmp.HashedPassword = newHashedPassword;
dbContext.SaveChanges();
return Task.FromResult<bool>(true);
}
}
}