public void Execute(ComicUpdateDTO request) { var comic = Context.Comics .Include(c => c.Publisher) .Include(c => c.Pictures) .Include(c => c.ComicGenres) .Include(c => c.ComicAuthors) .Where(c => c.Id == request.ComicId && c.DeletedAt == null) .FirstOrDefault(); if (comic == null) { throw new EntityNotFoundException("Comic", request.ComicId); } if (request.Name != null) { if (comic.Name != request.Name) { if (Context.Comics.Any(c => c.Name == request.Name)) { throw new EntityAlreadyExistsException("Comic", request.Name); } comic.Name = request.Name; } } Mapper.Automap(request, comic); comic.UpdatedAt = DateTime.Now; if (request.Publisher != null) { var foundPublisher = Context.Publishers.FirstOrDefault(p => p.Id == request.Publisher && p.DeletedAt == null); comic.Publisher = foundPublisher ?? throw new EntityNotFoundException("Publisher", (int)request.Publisher); } if (request.ImagePath != null) { comic.Pictures.Clear(); comic.Pictures.Add(new Picture { Path = request.ImagePath, UpdatedAt = DateTime.Now }); } if (request.Genres != null) { UpdateGenres(request, comic); } if (request.Authors != null) { UpdateAuthors(request, comic); } Context.SaveChanges(); }
private void UpdateAuthors(ComicUpdateDTO request, Comic comic) { comic.ComicAuthors.Clear(); foreach (var author in request.Authors) { var foundAuthor = Context.Authors.FirstOrDefault(a => a.Id == author && a.DeletedAt == null); if (foundAuthor == null) { throw new EntityNotFoundException("Authors", author); } comic.ComicAuthors.Add(new ComicAuthors { Comic = comic, Author = foundAuthor, UpdatedAt = DateTime.Now }); } }
private void UpdateGenres(ComicUpdateDTO request, Comic comic) { comic.ComicGenres.Clear(); foreach (var genre in request.Genres) { var foundGenre = Context.Genres.FirstOrDefault(g => g.Id == genre && g.DeletedAt == null); if (foundGenre == null) { throw new EntityNotFoundException("Genres", genre); } comic.ComicGenres.Add(new ComicGenres { Comic = comic, Genre = foundGenre, UpdatedAt = DateTime.Now }); } }
public IActionResult Put(int id, [FromForm] ComicUpdateDTO comic) { if (comic.Image != null) { string extenstion = Path.GetExtension(comic.Image.FileName); if (!allowedFileUploadTypes.Contains(extenstion)) { return(UnprocessableEntity(new ErrorMessage { Message = "Image extension is not allowed." })); } } try { if (comic.Image != null) { var fileName = Guid.NewGuid().ToString() + "_" + comic.Image.FileName; var uploadPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads", fileName); comic.Image.CopyTo(new FileStream(uploadPath, FileMode.Create)); comic.ImagePath = $"https://{HttpContext.Request.Host}/uploads/{fileName}"; } comic.ComicId = id; updateCommand.Execute(comic); return(NoContent()); } catch (EntityNotFoundException e) { return(NotFound(new ErrorMessage { Message = e.Message })); } catch (EntityAlreadyExistsException e) { return(Conflict(new ErrorMessage { Message = e.Message })); } }
public ActionResult Edit(int id, [FromForm] ComicUpdateDTO comic) { LoadData(); LoadById(id); try { if (comic.Image != null) { comic.ImagePath = UploadImage(comic.Image); } comic.ComicId = id; updateCommand.Execute(comic); return(RedirectToAction(nameof(Index))); } catch (EntityAlreadyExistsException e) { TempData["error"] = e.Message; return(View()); } catch (EntityNotFoundException e) { TempData["error"] = e.Message; return(View()); } catch (UnsupportedTypeException e) { TempData["error"] = e.Message; return(View()); } catch (Exception) { TempData["error"] = "Please fill up all field in this form."; return(View()); } }