diff --git a/WF_EF_Api/Contextlib/DbQuoteManager.cs b/WF_EF_Api/Contextlib/DbQuoteManager.cs index a5fc2d1..9d8b2f7 100644 --- a/WF_EF_Api/Contextlib/DbQuoteManager.cs +++ b/WF_EF_Api/Contextlib/DbQuoteManager.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Entity; +using Microsoft.EntityFrameworkCore.Metadata.Internal; using Shared; namespace Contextlib @@ -35,43 +36,80 @@ namespace Contextlib public async Task> GetAllQuote() { - List quotes = _repo.GetItems(0, _repo.Count(), [nameof(Quote.Id)]).ToList(); + List quotes = _repo.GetItems(item=> item.IsValid, + 0, _repo.Count(), [] + ).ToList(); return new PaginationResult(quotes.Count, 0, quotes.Count, quotes); } public async Task> GetAllQuoteLang(int index, int pageSize, int lang) { - throw new NotImplementedException(); + List quotes = _repo.GetItems(item => item.IsValid && item.Langage==(LangEnum)lang , + index, pageSize, [] + ).ToList(); + + return new PaginationResult(quotes.Count, index, pageSize, quotes); } public async Task GetDailyQuote(DateOnly date, int lang) { - throw new NotImplementedException(); + List quotes = _repo.GetItems(item => item.IsValid && item.Langage == (LangEnum)lang, + 0, _repo.Count(), [] + ).ToList(); + Quote quote = _repo.GetById(date.DayNumber % quotes.Count()) ?? quotes.First(); + + return quote; } public async Task> GetFavorites(int index, int pageSize, int UserId) { - throw new NotImplementedException(); + List quotes = _repo.GetItems(item => item.IsValid && item.Favorite.Where(p=>p.Id==UserId)!=null , + index, pageSize, [nameof(Quote.Favorite)] + ).ToList(); + + return new PaginationResult(quotes.Count, index, pageSize, quotes); } public async Task> GetInvalidQuote(int index, int pageSize, int lang) { - throw new NotImplementedException(); + List quotes = _repo.GetItems(item => !item.IsValid && item.Langage == (LangEnum)lang, + index, pageSize, [] + ).ToList(); + + return new PaginationResult(quotes.Count, index, pageSize, quotes); } public async Task> GetInvalidQuote(int index, int pageSize) { - throw new NotImplementedException(); + List quotes = _repo.GetItems(item => !item.IsValid, + index, pageSize, [] + ).ToList(); + + return new PaginationResult(quotes.Count, index, pageSize, quotes); } public async Task GetLastQuoteId() { - throw new NotImplementedException(); + PaginationResult users = await GetAllQuote(); + int lastQuoteId = 0; + foreach (Quote quote in users.items) + { + if (quote.Id >= lastQuoteId) + { + lastQuoteId = quote.Id + 1; + } + } + return lastQuoteId; } public async Task GetQuoteById(int id) { - throw new NotImplementedException(); + Quote? quote = _repo.GetById(id, item => item.Id == id, []); + if (quote == null) + { + throw new KeyNotFoundException($"Error : No quotes found with the ID: {id}."); + } + return quote; } public async Task> GetSomeQuote(int index, int pageSize) diff --git a/WF_EF_Api/WfApi/Program.cs b/WF_EF_Api/WfApi/Program.cs index 54d221a..3eb2b8d 100644 --- a/WF_EF_Api/WfApi/Program.cs +++ b/WF_EF_Api/WfApi/Program.cs @@ -13,6 +13,7 @@ builder.Services.AddScoped, QuoteService>(); //EF builder.Services.AddScoped(); + builder.Services.AddScoped, DbUsersManager>(); builder.Services.AddScoped, DbQuoteManager>(); //builder.Services.AddScoped, DbCharacterManager>();