public async Task <IActionResult> Edit(int id, Especialista especialista)
        {
            if (!ModelState.IsValid)//validação do JavaScript estiver desabilitado
            {
                var departamentos = await _departamentoService.FindAllAsync();

                var viewModel = new EspecialistaFormViewModel {
                    Departamento = departamentos
                };
                return(View(viewModel));
            }
            if (id != especialista.Id)
            {
                return(RedirectToAction(nameof(Error), new { message = "id mismatch" }));
            }
            try
            {
                await _especialistaService.UpdateAsync(especialista);

                return(RedirectToAction(nameof(Index)));
            }
            catch (ApplicationException e)
            {
                return(RedirectToAction(nameof(Error), new { message = e.Message }));
            }
        }
        public async Task <IActionResult> Create()
        {
            var departamentos = await _departamentoService.FindAllAsync();

            var viewModel = new EspecialistaFormViewModel {
                Departamento = departamentos
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> Create(Especialista especialista)
        {
            if (!ModelState.IsValid)//validação do JavaScript estiver desabilitado
            {
                var departamentos = await _departamentoService.FindAllAsync();

                var viewModel = new EspecialistaFormViewModel {
                    Departamento = departamentos
                };
                return(View(viewModel));
            }
            await _especialistaService.InsertAsync(especialista);

            return(RedirectToAction(nameof(Index)));
        }
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Error), new { message = "id not provided" }));
            }
            var obj = await _especialistaService.FindByIdAsync(id.Value);

            if (obj == null)
            {
                return(RedirectToAction(nameof(Error), new { message = "Id not found" }));
            }
            List <Departamento> departamentos = await _departamentoService.FindAllAsync();

            EspecialistaFormViewModel viewModel = new EspecialistaFormViewModel {
                Especialista = obj, Departamento = departamentos
            };

            return(View(viewModel));
        }