modification du answer entity manager

API
Damien NORTIER 1 year ago
parent 297560f178
commit 536de02dcb

@ -1,107 +1,122 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities; using Entities;
using ManagerInterfaces; using ManagerInterfaces;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using OrderCriterias; using OrderCriterias;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace EntityManagers namespace EntityManagers
{ {
public class AnswerEntityManager : IAnswerManager<AnswerEntity> public class AnswerEntityManager : IAnswerManager<AnswerEntity>
{ {
private MyDbContext dbContext; private MyDbContext dbContext;
public AnswerEntityManager(MyDbContext dbContext) public AnswerEntityManager(MyDbContext dbContext)
{ {
this.dbContext = dbContext; this.dbContext = dbContext;
} }
public async Task<AnswerEntity> addAnswer(AnswerEntity answer) public async Task<AnswerEntity> addAnswer(AnswerEntity answer)
{ {
var tmp = await dbContext.Answers.Where(a => a.Content == answer.Content.ToLower() && a.IdQuestion == answer.IdQuestion).FirstOrDefaultAsync(); var tmp = await dbContext.Answers.Where(a => a.Content == answer.Content.ToLower() && a.IdQuestion == answer.IdQuestion).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist if (tmp != null) // <=> he already exist
{ {
return tmp!; return tmp!;
} }
await dbContext.Answers.AddAsync(new AnswerEntity { Content = answer.Content.ToLower(), IdQuestion = answer.IdQuestion }); await dbContext.Answers.AddAsync(new AnswerEntity { Content = answer.Content.ToLower(), IdQuestion = answer.IdQuestion });
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return await dbContext.Answers.Where(a => a.Content == answer.Content && a.IdQuestion == answer.IdQuestion).FirstAsync(); return await dbContext.Answers.Where(a => a.Content == answer.Content && a.IdQuestion == answer.IdQuestion).FirstAsync();
} }
public async Task<AnswerEntity?> getAnswer(uint id) public async Task<AnswerEntity?> getAnswer(uint id)
{ {
return await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync(); return await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
} }
public async Task<(int nbPages, IEnumerable<AnswerEntity>? answers)> getAnswers(int nb, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<AnswerEntity>? answers)> getAnswers(int page, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, null)); if (page < 0 || count < 0 || page > nbEl / count)
var tmp = dbContext.Answers; {
switch (orderCriteria) return await Task.FromResult<(
{ int nbPages,
case AnswerOrderCriteria.ById: IEnumerable<AnswerEntity>? answers
tmp.OrderBy(a => a.Id); )> ((
break; count == 0 ? -1 : nbEl / count,
case AnswerOrderCriteria.ByContent: null
tmp.OrderBy(a => a.Content); ));
break; }
case AnswerOrderCriteria.ByIdQuestion: var tmp = dbContext.Answers;
tmp.OrderBy(a => a.IdQuestion); switch (orderCriteria)
break; {
} case AnswerOrderCriteria.ById:
return await Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); tmp.OrderBy(a => a.Id);
} break;
case AnswerOrderCriteria.ByContent:
public async Task<IEnumerable<AnswerEntity>?> getAnswersByIdQuestion(uint id) tmp.OrderBy(a => a.Content);
{ break;
if(dbContext.Questions.Where(q => q.Id == id).Any()) case AnswerOrderCriteria.ByIdQuestion:
{ tmp.OrderBy(a => a.IdQuestion);
return await Task.FromResult<IEnumerable<AnswerEntity>?>(dbContext.Answers.Where(a => a.IdQuestion == id)); break;
} }
return await Task.FromResult<IEnumerable<AnswerEntity>?>(null); return await Task.FromResult<(
} int nbPages,
IEnumerable<AnswerEntity>? answers
public int getNbElements() )> ((
{ nbEl / count,
return dbContext.Answers.CountAsync().Result; tmp.Skip((page - 1) * count).Take(count)
} ));
}
public async Task<AnswerEntity?> removeAnswer(uint id)
{ public async Task<IEnumerable<AnswerEntity>?> getAnswersByIdQuestion(uint id)
var tmp = getAnswer(id).Result; {
if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp); if(dbContext.Questions.Where(q => q.Id == id).Any())
dbContext.Answers.Remove(tmp); {
await dbContext.SaveChangesAsync(); return await Task.FromResult<IEnumerable<AnswerEntity>?>(dbContext.Answers.Where(a => a.IdQuestion == id));
return await Task.FromResult<AnswerEntity?>(tmp); }
} return await Task.FromResult<IEnumerable<AnswerEntity>?>(null);
}
public async Task<AnswerEntity?> removeAnswer(AnswerEntity answer)
{ public int getNbElements()
var tmp = dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync().Result; {
if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp); return dbContext.Answers.CountAsync().Result;
dbContext.Answers.Remove(tmp); }
await dbContext.SaveChangesAsync();
return await Task.FromResult<AnswerEntity?>(tmp); public async Task<AnswerEntity?> removeAnswer(uint id)
} {
var tmp = getAnswer(id).Result;
public async Task<AnswerEntity?> updateAnswer(uint id, AnswerEntity answer) if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp);
{ dbContext.Answers.Remove(tmp);
var tmp = await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync(); await dbContext.SaveChangesAsync();
return await Task.FromResult<AnswerEntity?>(tmp);
}
public async Task<AnswerEntity?> removeAnswer(AnswerEntity answer)
{
var tmp = dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync().Result;
if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp);
dbContext.Answers.Remove(tmp);
await dbContext.SaveChangesAsync();
return await Task.FromResult<AnswerEntity?>(tmp);
}
public async Task<AnswerEntity?> updateAnswer(uint id, AnswerEntity answer)
{
var tmp = await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
if(tmp == null) if(tmp == null)
{ {
return null; return null;
} }
tmp.Content = answer.Content; tmp.Content = answer.Content;
tmp.Question = answer.Question; tmp.Question = answer.Question;
tmp.IdQuestion = answer.IdQuestion; tmp.IdQuestion = answer.IdQuestion;
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return tmp; return tmp;
} }
} }
} }

Loading…
Cancel
Save