Correction Quote avec les ThenInclude qui marche pas dans le GenericRepository

pull/6/head
kekentin 3 weeks ago
parent 5ecf9e768f
commit e51db914c2

@ -4,6 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Entity; using Entity;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal; using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Shared; using Shared;
@ -21,9 +22,6 @@ namespace Contextlib
} }
public async Task AddQuote(Quote quote) public async Task AddQuote(Quote quote)
{ {
if (quote == null) if (quote == null)
@ -36,26 +34,25 @@ namespace Contextlib
public async Task<PaginationResult<Quote>> GetAllQuote() public async Task<PaginationResult<Quote>> GetAllQuote()
{ {
List<Quote> quotes = _repo.GetItems(item=> item.IsValid, List<Quote> quotes = _context.quotes.Where(item => item.IsValid)
0, _repo.Count(), [] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images)
).ToList(); .ToList();
return new PaginationResult<Quote>(quotes.Count, 0, quotes.Count, quotes); return new PaginationResult<Quote>(quotes.Count, 0, quotes.Count, quotes);
} }
public async Task<PaginationResult<Quote>> GetAllQuoteLang(int index, int pageSize, int lang) public async Task<PaginationResult<Quote>> GetAllQuoteLang(int index, int pageSize, int lang)
{ {
List<Quote> quotes = _repo.GetItems(item => item.IsValid && item.Langage==(LangEnum)lang , List<Quote> quotes = _context.quotes.Where(item => item.IsValid && item.Langage == (LangEnum)lang)
index, pageSize, [] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images)
).ToList(); .Skip(index * pageSize).Take(pageSize).ToList();
return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes); return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes);
} }
public async Task<Quote> GetDailyQuote(DateOnly date, int lang) public async Task<Quote> GetDailyQuote(DateOnly date, int lang)
{ {
List<Quote> quotes = _repo.GetItems(item => item.IsValid && item.Langage == (LangEnum)lang, List<Quote> quotes = _context.quotes.Where(item => item.IsValid && item.Langage == (LangEnum)lang)
0, _repo.Count(), [] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images).Include(q => q.Favorite)
).ToList(); .ToList();
Quote quote = _repo.GetById(date.DayNumber % quotes.Count()) ?? quotes.First(); Quote quote = _repo.GetById(date.DayNumber % quotes.Count()) ?? quotes.First();
return quote; return quote;
@ -63,36 +60,36 @@ namespace Contextlib
public async Task<PaginationResult<Quote>> GetFavorites(int index, int pageSize, int UserId) public async Task<PaginationResult<Quote>> GetFavorites(int index, int pageSize, int UserId)
{ {
List<Quote> quotes = _repo.GetItems(item => item.IsValid && item.Favorite.Where(p=>p.Id==UserId)!=null , List<Quote> quotes = _context.quotes.Where(item => item.IsValid && item.Favorite.Where(p => p.Id == UserId) != null)
index, pageSize, [nameof(Quote.Favorite)] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images).Include(q => q.Favorite)
).ToList(); .Skip(index * pageSize).Take(pageSize).ToList();
return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes); return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes);
} }
public async Task<PaginationResult<Quote>> GetInvalidQuote(int index, int pageSize, int lang) public async Task<PaginationResult<Quote>> GetInvalidQuote(int index, int pageSize, int lang)
{ {
List<Quote> quotes = _repo.GetItems(item => !item.IsValid && item.Langage == (LangEnum)lang, List<Quote> quotes = _context.quotes.Where(item => !item.IsValid && item.Langage == (LangEnum)lang)
index, pageSize, [] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images)
).ToList(); .Skip(index * pageSize).Take(pageSize).ToList();
return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes); return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes);
} }
public async Task<PaginationResult<Quote>> GetInvalidQuote(int index, int pageSize) public async Task<PaginationResult<Quote>> GetInvalidQuote(int index, int pageSize)
{ {
List<Quote> quotes = _repo.GetItems(item => !item.IsValid, List<Quote> quotes = _context.quotes.Where(item => !item.IsValid)
index, pageSize, [] .Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images)
).ToList(); .Skip(index * pageSize).Take(pageSize).ToList();
return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes); return new PaginationResult<Quote>(quotes.Count, index, pageSize, quotes);
} }
public async Task<int> GetLastQuoteId() public async Task<int> GetLastQuoteId()
{ {
PaginationResult<Quote> users = await GetAllQuote(); PaginationResult<Quote> quotes = await GetAllQuote();
int lastQuoteId = 0; int lastQuoteId = 0;
foreach (Quote quote in users.items) foreach (Quote quote in quotes.items)
{ {
if (quote.Id >= lastQuoteId) if (quote.Id >= lastQuoteId)
{ {
@ -104,7 +101,9 @@ namespace Contextlib
public async Task<Quote> GetQuoteById(int id) public async Task<Quote> GetQuoteById(int id)
{ {
Quote? quote = _repo.GetById(id, item => item.Id == id, []); Quote? quote = _context.quotes.Where(item => item.Id == id)
.Include(q => q.Source).Include(q => q.Character).ThenInclude(c => c.Images)
.First();
if (quote == null) if (quote == null)
{ {
throw new KeyNotFoundException($"Error : No quotes found with the ID: {id}."); throw new KeyNotFoundException($"Error : No quotes found with the ID: {id}.");

@ -69,7 +69,7 @@ namespace StubbedContextLib
new Quote() { Id = 7, Content = "Je suis la dernière Targaryen. Je suis la reine des dragons", IdCharacter = 7, IdSource = 3, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 }, new Quote() { Id = 7, Content = "Je suis la dernière Targaryen. Je suis la reine des dragons", IdCharacter = 7, IdSource = 3, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 },
new Quote() { Id = 8, Content = "Je ne suis pas prêt à affronter ça. C'est trop pour moi.", IdCharacter = 8, IdSource = 5, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 }, new Quote() { Id = 8, Content = "Je ne suis pas prêt à affronter ça. C'est trop pour moi.", IdCharacter = 8, IdSource = 5, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 },
new Quote() { Id = 9, Content = "Aidez-moi, Obi-Wan Kenobi, vous êtes mon seul espoir.", IdCharacter = 9, IdSource = 5, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 }, new Quote() { Id = 9, Content = "Aidez-moi, Obi-Wan Kenobi, vous êtes mon seul espoir.", IdCharacter = 9, IdSource = 5, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 },
new Quote() { Id = 10, Content = "La quoi ?", IdCharacter = 10, IdSource = 4, IdUsersPropose = 1, IsValid = true, Langage = LangEnum.vf, Likes = 11025 } new Quote() { Id = 10, Content = "La quoi ?", IdCharacter = 10, IdSource = 4, IdUsersPropose = 1, IsValid = false, Langage = LangEnum.vf, Likes = 11025 }
); );
modelBuilder.Entity<Commentary>().HasData( modelBuilder.Entity<Commentary>().HasData(

@ -26,9 +26,9 @@ namespace WfApi.Controllers
{ {
try try
{ {
var result = _commentary.GetCommentaryByQuote(id, index, count); var result =await _commentary.GetCommentaryByQuote(id, index, count);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }

@ -25,13 +25,16 @@ namespace WfApi.Controllers
//===================================== ROUTE GET ===================================== //===================================== ROUTE GET =====================================
[HttpGet("{id}")] // Indiquer que l'id est dans l'URL [HttpGet("{id}")] // Indiquer que l'id est dans l'URL
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetQuote(int id) public async Task<IActionResult> GetQuote(int id)
{ {
try try
{ {
var result = _quote.GetQuoteById(id); var result = await _quote.GetQuoteById(id);
if (result.IsCompletedSuccessfully) if (result!=null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -48,13 +51,16 @@ namespace WfApi.Controllers
[HttpGet("all")] [HttpGet("all")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetAllQuote(int index = 0, int count = 10) public async Task<IActionResult> GetAllQuote(int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.GetSomeQuote(index, count); var result = await _quote.GetSomeQuote(index, count);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -69,13 +75,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("allbylang")] [HttpGet("allbylang")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetAllQuoteByLang(TypeLangageDTO lang,int index = 0, int count = 10) public async Task<IActionResult> GetAllQuoteByLang(TypeLangageDTO lang,int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.GetAllQuoteLang(index, count,(int)lang); var result = await _quote.GetAllQuoteLang(index, count,(int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -90,15 +99,18 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("dailyquote")] [HttpGet("dailyquote")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetDailyQuote([FromQuery] int year, [FromQuery] int month, [FromQuery] int day, TypeLangageDTO lang) public async Task<IActionResult> GetDailyQuote([FromQuery] int year, [FromQuery] int month, [FromQuery] int day, TypeLangageDTO lang)
{ {
try try
{ {
DateOnly date = new DateOnly(year, month, day); DateOnly date = new DateOnly(year, month, day);
var result = _quote.GetDailyQuote(date, (int)lang); var result = await _quote.GetDailyQuote(date, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -113,13 +125,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("invalid")] [HttpGet("invalid")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetInvalidQuote(TypeLangageDTO lang, int index = 0, int count = 10) public async Task<IActionResult> GetInvalidQuote(TypeLangageDTO lang, int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.GetInvalidQuote(index, count, (int)lang); var result =await _quote.GetInvalidQuote(index, count, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -134,13 +149,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("suggest")] [HttpGet("suggest")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetSuggestQuote(TypeLangageDTO lang, int index = 0, int count = 10) public async Task<IActionResult> GetSuggestQuote(TypeLangageDTO lang, int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.GetSuggestions(index, count, (int)lang); var result = await _quote.GetSuggestions(index, count, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -155,13 +173,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("searchByCharacter")] [HttpGet("searchByCharacter")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetQuoteSearchByCharacter(TypeLangageDTO lang, string character, int index = 0, int count = 10) public async Task<IActionResult> GetQuoteSearchByCharacter(TypeLangageDTO lang, string character, int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.SearchByCharacter(character, index, count, (int)lang); var result = await _quote.SearchByCharacter(character, index, count, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -176,13 +197,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("searchByCharac")] [HttpGet("searchByCharac")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetQuoteSearchBySource(TypeLangageDTO lang, string source, int index = 0, int count = 10) public async Task<IActionResult> GetQuoteSearchBySource(TypeLangageDTO lang, string source, int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.SearchBySource(source, index, count, (int)lang); var result = await _quote.SearchBySource(source, index, count, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -197,13 +221,16 @@ namespace WfApi.Controllers
} }
} }
[HttpGet("searchByContent")] [HttpGet("searchByContent")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetQuoteSearchByContent(TypeLangageDTO lang, string content, int index = 0, int count = 10) public async Task<IActionResult> GetQuoteSearchByContent(TypeLangageDTO lang, string content, int index = 0, int count = 10)
{ {
try try
{ {
var result = _quote.SearchByContent(content, index, count, (int)lang); var result =await _quote.SearchByContent(content, index, count, (int)lang);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -221,6 +248,9 @@ namespace WfApi.Controllers
//===================================== ROUTE POST ===================================== //===================================== ROUTE POST =====================================
[HttpPost] [HttpPost]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> CreateQuote([FromBody] QuoteDTO newQuote) public async Task<IActionResult> CreateQuote([FromBody] QuoteDTO newQuote)
{ {
try try
@ -247,6 +277,9 @@ namespace WfApi.Controllers
} }
//===================================== ROUTE PUT ===================================== //===================================== ROUTE PUT =====================================
[HttpPut()] [HttpPut()]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> UpdateQuote([FromQuery] int id, [FromBody] QuoteDTO updatedquote) public async Task<IActionResult> UpdateQuote([FromQuery] int id, [FromBody] QuoteDTO updatedquote)
{ {
try try
@ -266,6 +299,9 @@ namespace WfApi.Controllers
} }
} }
[HttpPut("valide")] [HttpPut("valide")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> ValideQuote([FromQuery] int id) public async Task<IActionResult> ValideQuote([FromQuery] int id)
{ {
try try
@ -289,6 +325,9 @@ namespace WfApi.Controllers
//===================================== ROUTE DELETE ===================================== //===================================== ROUTE DELETE =====================================
[HttpDelete("delete")] [HttpDelete("delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> DeleteQuote([FromQuery] int idQuote) public async Task<IActionResult> DeleteQuote([FromQuery] int idQuote)
{ {
try try

@ -53,9 +53,9 @@ namespace WfApi.Controllers
{ {
try try
{ {
var result = _user.GetUserById(id); var result =await _user.GetUserById(id);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -104,9 +104,9 @@ namespace WfApi.Controllers
{ {
try try
{ {
var result = _user.GetSomeUser(index, count); var result =await _user.GetSomeUser(index, count);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -163,9 +163,9 @@ namespace WfApi.Controllers
try try
{ {
var result = _user.GetHashPassword(username); var result =await _user.GetHashPassword(username);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -222,9 +222,9 @@ namespace WfApi.Controllers
try try
{ {
var result = _user.GetUserByUsername(username); var result =await _user.GetUserByUsername(username);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -280,9 +280,9 @@ namespace WfApi.Controllers
} }
try try
{ {
var result = _user.GetUserByEmail(email); var result =await _user.GetUserByEmail(email);
if (result.IsCompletedSuccessfully) if (result != null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -329,9 +329,9 @@ namespace WfApi.Controllers
{ {
try try
{ {
var result = _user.CountUser(); var result =await _user.CountUser();
if (result.IsCompletedSuccessfully) if (result!=null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -389,9 +389,9 @@ namespace WfApi.Controllers
} }
try try
{ {
var result = _user.ExistUsername(username); var result =await _user.ExistUsername(username);
if (result.IsCompletedSuccessfully) if (result!=null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }
@ -448,9 +448,9 @@ namespace WfApi.Controllers
} }
try try
{ {
var result = _user.ExistEmail(email); var result =await _user.ExistEmail(email);
if (result.IsCompletedSuccessfully) if (result!=null)
{ {
return await Task.FromResult<IActionResult>(Ok(result)); return await Task.FromResult<IActionResult>(Ok(result));
} }

@ -15,6 +15,7 @@ builder.Services.AddScoped<ICommentaryService<CommentaryDTO>, CommentaryService>
//EF //EF
builder.Services.AddScoped<WTFContext, StubWTFContext>(); builder.Services.AddScoped<WTFContext, StubWTFContext>();
builder.Services.AddScoped<IUserService<Users>, DbUsersManager>(); builder.Services.AddScoped<IUserService<Users>, DbUsersManager>();
builder.Services.AddScoped<IQuoteService<Quote>, DbQuoteManager>(); builder.Services.AddScoped<IQuoteService<Quote>, DbQuoteManager>();
//builder.Services.AddScoped<ICharacterService<Character>, DbCharacterManager>(); //builder.Services.AddScoped<ICharacterService<Character>, DbCharacterManager>();

Loading…
Cancel
Save