using Entity; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Internal; using Shared; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace Contextlib { public class DbImagesManager : IImagesService { private WTFContext _context; private GenericRepository _repository; public DbImagesManager(WTFContext context) { _context = context ?? throw new ArgumentNullException(nameof(context), "Database context cannot be null."); _repository = new GenericRepository(context); } public async Task AddImage(Images image) { _repository.Insert(image); await _context.SaveChangesAsync(); } public async Task> GetAllImage() { return new PaginationResult(await CountImage(), 0, await CountImage(), _repository.GetItems(0, await CountImage()).ToList()); } public async Task GetImageById(int id) { var image = _repository.GetById(id); if(image == null) { throw new KeyNotFoundException($"No image with the id {id}"); } return image; } public async Task GetLastImageId() { var last = await GetAllImage(); int id = 1; { foreach (Images image in last.items) { if(image.Id >= id) id = image.Id + 1; } } return id; } public async Task> GetSomeImage(int index, int pageSize) { var images = _repository.GetItems(index, pageSize); return new PaginationResult(images.Count(),index,pageSize,images.ToList()); } public async Task RemoveImage(int id) { _repository.Delete(id); await _context.SaveChangesAsync(); } public async Task UpdateImage(int id, Images image) { var img = _repository.GetById(id); var modif = false; if (image != null && img != null) { if (image.ImgPath != null) { img.ImgPath = image.ImgPath; modif = true; } _repository.Update(img); if (modif) { await _context.SaveChangesAsync(); } } } public async Task CountImage() { return await _context.images.CountAsync(); } public async Task GetImageByPath(string path) { var image = _repository.GetItems(item => item.ImgPath == path,0,1).FirstOrDefault(); return image; } } }