public IActionResult Post([FromForm] ComicAddDTO comic) { string extenstion = Path.GetExtension(comic.Image.FileName); if (!allowedFileUploadTypes.Contains(extenstion)) { return(UnprocessableEntity(new ErrorMessage { Message = "Image extension is not allowed." })); } try { 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}"; addCommand.Execute(comic); return(StatusCode(201)); } catch (EntityAlreadyExistsException e) { return(Conflict(new ErrorMessage { Message = e.Message })); } catch (EntityNotFoundException e) { return(NotFound(new ErrorMessage { Message = e.Message })); } }
public ActionResult Create([FromForm] ComicAddDTO request) { LoadData(); try { request.ImagePath = UploadImage(request.Image); addCommand.Execute(request); return(RedirectToAction(nameof(Index))); } catch (EntityAlreadyExistsException e) { TempData["error"] = e.Message; RedirectToAction("Create"); } catch (EntityNotFoundException e) { TempData["error"] = e.Message; RedirectToAction("Create"); } catch (UnsupportedTypeException e) { TempData["error"] = e.Message; return(View()); } catch (Exception) { TempData["error"] = "Please fill up all field in this form."; RedirectToAction("Create"); } return(View()); }
public void Execute(ComicAddDTO request) { if (Context.Comics.Any(c => c.Name == request.Name)) { throw new EntityAlreadyExistsException("Name", request.Name); } ; var publisher = Context.Publishers.FirstOrDefault(p => p.Id == request.Publisher && p.DeletedAt == null); if (publisher == null) { throw new EntityNotFoundException("Publisher", request.Publisher); } Comic newComic = new Comic { Name = request.Name.Trim(), Description = request.Description.Trim(), Issues = request.Issues, PublishedAt = request.PublishedAt, Publisher = publisher }; pictures.Add(new Picture { Path = request.ImagePath }); Context.Comics.Add(newComic); 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); } var cg = new ComicGenres() { Comic = newComic, Genre = foundGenre }; genres.Add(cg); } 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); } var ca = new ComicAuthors() { Comic = newComic, Author = foundAuthor }; authors.Add(ca); } newComic.ComicGenres = genres; newComic.ComicAuthors = authors; newComic.Pictures = pictures; Context.SaveChanges(); }