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());
        }
Esempio n. 3
0
        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();
        }