public async Task <IActionResult> Edit(int Id, Vendedor vendedor)
        {
            // validação dos campos se foram preenchidos
            if (!ModelState.IsValid)
            {
                var departamentos = await _departamentoServico.FindAllAsync();

                var viewModel = new formVendedorViewModel {
                    Vendedor = vendedor, Departamentos = departamentos
                };
                return(View(viewModel));
            }

            if (Id != vendedor.Id)
            {
                return(RedirectToAction(nameof(Error), new { message = "Id não correspondem!" }));
            }

            try
            {
                await _vendedorServico.UpdateAsync(vendedor);

                return(RedirectToAction(nameof(Index)));
            }
            catch (ApplicationException e)
            {
                return(RedirectToAction(nameof(Error), new { message = e.Message }));
            }
        }
        // CREATE

        public async Task <IActionResult> Create()
        {
            var departamentos = await _departamentoServico.FindAllAsync();

            var viewModel = new formVendedorViewModel {
                Departamentos = departamentos
            };

            return(View(viewModel));
        }
        [ValidateAntiForgeryToken] // previnir ataques na sessão CSRF
        public async Task <IActionResult> Create(Vendedor vendedor)
        {
            // validação dos campos se foram preenchidos
            if (!ModelState.IsValid)
            {
                var departamentos = await _departamentoServico.FindAllAsync();

                var viewModel = new formVendedorViewModel {
                    Vendedor = vendedor, Departamentos = departamentos
                };
                return(View(viewModel));
            }

            await _vendedorServico.InserirAsync(vendedor);

            return(RedirectToAction(nameof(Index)));
        }
        // EDITAR

        public async Task <IActionResult> Edit(int?Id)
        {
            if (Id == null)
            {
                return(RedirectToAction(nameof(Error), new { message = "Id não fornecido!" }));
            }

            var obj = await _vendedorServico.FindByIdAsync(Id.Value);

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

            List <Departamento> departamentos = await _departamentoServico.FindAllAsync();

            formVendedorViewModel viewModel = new formVendedorViewModel {
                Vendedor = obj, Departamentos = departamentos
            };

            return(View(viewModel));
        }