public async Task <IActionResult> Edit(Guid id, ProdutoViewModel produtoViewModel)
        {
            if (id != produtoViewModel.Id)
            {
                return(this.NotFound());
            }

            var produtoAtualizacao = await this.ObterProduto(id);

            produtoViewModel.Fornecedor   = produtoAtualizacao.Fornecedor;
            produtoViewModel.FornecedorId = produtoAtualizacao.FornecedorId;

            if (!this.ModelState.IsValid)
            {
                return(this.View(produtoViewModel));
            }

            if (produtoViewModel.ImagemUpload != null &&
                !await produtoViewModel.UploadImagemAsync())
            {
                this.ModelState.AddModelError(string.Empty, "Já existe um arquivo com este nome!");
                return(this.View(produtoViewModel));
            }

            produtoAtualizacao.EditModel(produtoViewModel);

            await this._produtoService.Atualizar(this._mapper.Map <Produto>(produtoAtualizacao));

            if (!this.OperacaoValida())
            {
                return(this.View(produtoViewModel));
            }

            return(this.RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Create(ProdutoViewModel produtoViewModel)
        {
            produtoViewModel = await this.PopularFornecedores(produtoViewModel);

            if (!this.ModelState.IsValid)
            {
                return(this.View(produtoViewModel));
            }

            if (!await produtoViewModel.UploadImagemAsync())
            {
                this.ModelState.AddModelError(string.Empty, "Já existe um arquivo com este nome!");
                return(this.View(produtoViewModel));
            }

            await this._produtoService.Adicionar(this._mapper.Map <Produto>(produtoViewModel));

            if (!this.OperacaoValida())
            {
                return(this.View(produtoViewModel));
            }

            return(this.RedirectToAction("Index"));
        }