using DbContextLib; using Entities; using Microsoft.EntityFrameworkCore; using Model.OrderCriteria; using Shared; using Shared.ModelToEntities; namespace DbDataManager.Service; public class InquiryDataService : IInquiryService { private UserDbContext DbContext { get; set; } public InquiryDataService(UserDbContext context) { DbContext = context; context.Database.EnsureCreated(); } public InquiryEntity GetInquiryById(int id) { var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); } return inquiryEntity; } public InquiryEntity GetInquiryByTitle(string title) { var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Title == title); if (inquiryEntity == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(title)); } return inquiryEntity; } public IEnumerable GetInquiries(int page, int number, InquiryOrderCriteria orderCriteria) { return DbContext.Inquiries.Skip((page - 1) * number).Take(number).ToList() .Select(u => u); } public bool DeleteInquiry(int id) { var inquiryEntity = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); if (inquiryEntity == null) { return false; } DbContext.Inquiries.Remove(inquiryEntity); DbContext.SaveChangesAsync(); return true; } public InquiryEntity UpdateInquiry(int id, InquiryEntity inquiry) { var updatingInquiry = DbContext.Inquiries.FirstOrDefault(u => u.Id == id); if (updatingInquiry == null) { throw new ArgumentException("Impossible de trouver l'enquête", nameof(id)); } updatingInquiry.Title = inquiry.Title; updatingInquiry.Description = inquiry.Description; updatingInquiry.IsUser = inquiry.IsUser; updatingInquiry.IdInquiryTable = inquiry.IdInquiryTable; updatingInquiry.IdDatabase = inquiry.IdDatabase; // Permet d'indiquer en Db que l'entité a été modifiée. DbContext.Entry(updatingInquiry).State = EntityState.Modified; DbContext.SaveChangesAsync(); return updatingInquiry; } public InquiryEntity CreateInquiry(string title, string description, bool isUser, int tableId, int solutionId) { var newInquiryEntity = new InquiryEntity() { Title = title, Description = description, IsUser = isUser, IdDatabase = tableId, IdInquiryTable = solutionId, }; DbContext.Inquiries.Add(newInquiryEntity); DbContext.SaveChangesAsync(); return newInquiryEntity; } public Task AddItem(InquiryEntity? item) { throw new NotImplementedException(); } public Task DeleteItem(int id) { throw new NotImplementedException(); } public Task UpdateItem(int? id, TDto? newItem) where TDto : class { throw new NotImplementedException(); } public async Task> GetItems(int page, int count, object? orderCriteria = null, string? filter = null, object? valueFilter = null) { var inquiries = await DbContext.GetItemsWithFilter(page, count, orderCriteria, filter, valueFilter); return inquiries; } }