public async Task <IActionResult> Delete(int?id, int produtoId)
        {
            ViewBag.ProdutoId = produtoId;
            var produtoDescricao = await _produtoService.FindByIdAsync(EmpresaId, produtoId);

            ViewBag.ProdutoDescricao = produtoDescricao.Descricao;

            if (id == null)
            {
                return(RedirectToAction(nameof(Error), new { message = "Id não informado!" }));
            }

            var obj = await _codigoDeBarraService.FindByIdAsync(EmpresaId, id.Value);

            if (obj == null)
            {
                return(RedirectToAction(nameof(Error), new { message = "Id não encontrado!" }));
            }

            var viewModel = new CodigoDeBarraFormViewModel {
                CodigoDeBarra = obj
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> Edit(int id, CodigoDeBarra codigoDeBarra, int produtoId)
        {
            ViewBag.ProdutoId = produtoId;
            var produtoDescricao = await _produtoService.FindByIdAsync(EmpresaId, produtoId);

            ViewBag.ProdutoDescricao = produtoDescricao.Descricao;

            if (!ModelState.IsValid)
            {
                var produtos = await _produtoService.FindAllAsync(EmpresaId);

                var viewModel = new CodigoDeBarraFormViewModel
                {
                    CodigoDeBarra = codigoDeBarra,
                    Produtos      = produtos
                };
                return(View(viewModel));
            }
            if (id != codigoDeBarra.Id)
            {
                return(BadRequest());
            }
            try
            {
                codigoDeBarra.ProdutoId = produtoId;
                await _codigoDeBarraService.UpdateAsync(codigoDeBarra);

                return(RedirectToAction(nameof(Index), new { produtoId }));
            }
            catch (ApplicationException e)
            {
                return(RedirectToAction(nameof(Error), new { message = e.Message }));
            }
        }
        public async Task <IActionResult> Create(int produtoId)
        {
            ViewBag.ProdutoId = produtoId;
            var produtoDescricao = await _produtoService.FindByIdAsync(EmpresaId, produtoId);

            ViewBag.ProdutoDescricao = produtoDescricao.Descricao;

            var produtos = await _produtoService.FindAllAsync(EmpresaId);

            var viewModel = new CodigoDeBarraFormViewModel
            {
                Produtos = produtos
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> Create(CodigoDeBarra codigoDeBarra, int produtoId)
        {
            ViewBag.ProdutoId = produtoId;
            var produtoDescricao = await _produtoService.FindByIdAsync(EmpresaId, produtoId);

            ViewBag.ProdutoDescricao = produtoDescricao.Descricao;

            if (!ModelState.IsValid)
            {
                var viewModel = new CodigoDeBarraFormViewModel();
                return(View(viewModel));
            }
            codigoDeBarra.ProdutoId = produtoId;
            await _codigoDeBarraService.InsertAsync(codigoDeBarra);

            return(RedirectToAction(nameof(Index), new { produtoId }));
        }