// GET: Operadors/Edit/5 public async Task <IActionResult> Edit(int?id) //esse id opcional colocado aqui é somente para não dar erro, pois na verdade o id é obrigatorio { if (id == null) { /* * return NotFound(); */ return(RedirectToAction(nameof(Error), new { message = "Id not provided" })); } /* * var operador = await _context.Operador.FindAsync(id); */ var operador = await _operadorService.FindByIdAsync(id.Value); // o id.Value é porque lá encima o argumento está como opcional if (operador == null) { /* * return NotFound(); */ return(RedirectToAction(nameof(Error), new { message = "Id not found" })); } List <Departamento> departamentos = await _departamentoService.FindAllAsync(); OperadorFormViewModel viewModel = new OperadorFormViewModel { Operador = operador, Departamentos = departamentos }; /* * return View(operador); */ return(View(viewModel)); }
// GET: Operadores/Create public async Task <IActionResult> Create() { var departamentos = await _departamentoService.FindAllAsync(); //criei uma variavel que através do serviço DepartamentoService, busca no banco de dados todos os departamentos var viewModel = new OperadorFormViewModel { Departamentos = departamentos }; // agora vamos instanciar um objeto do nosso viewModel, no Departamentos vamos iniciar com a lista de departamentos que acabamos de gerar acima return(View(viewModel)); }
// GET: Operadors/Create public async Task <IActionResult> Create() { /* * return View(); */ var departamentos = await _departamentoService.FindAllAsync(); //codigo para chamar uma lista de departamentos do DepartamentoService, e guardar essa lista na variavel departamentos var viewModel = new OperadorFormViewModel { Departamentos = departamentos }; //codigo para instanciar um novo OperadorFormViewModel já começando com a lista de departamentos acima, e chamando esse formulario de viewModel return(View(viewModel)); //codigo que manda esse novo formulario já com a lista de departamentos criada para a View }
public async Task <IActionResult> Create([Bind("Id,Nome,Email,BirthDate,BaseSalary,DepartamentoId")] Operador operador) { if (ModelState.IsValid) //teste criado para checar se as validações do Model estão atendidas, elas podem vir erradas se as validações não foram feitas a nivel de JavaScript { await _operadorService.InsertAsync(operador); return(RedirectToAction(nameof(Index))); } //return View(operador); //foi criado assim pelo framework, porem agora será pelo operadorFormViewModel //se as validações não foram atendidas não é criado na tabela e devolve com o objeto incompleto sem criar na tabela //essa situação pode ocorrer se as validações não foram feita a nivel de JavaScript //criei a lista de departamentos e atraves da ViewModel OperadorFormViewModel, consigo apresentar na tela de edição o combo de departamentos para a edição do operador var departamentos = await _departamentoService.FindAllAsync(); var viewModel = new OperadorFormViewModel { Operador = operador, Departamentos = departamentos }; return(View(viewModel)); // agora não mais retornando o operador somente, mas o operador e a lista de departamentos, com os erros de validação }
public async Task <IActionResult> Edit(int id, [Bind("Id,Nome,Email,BirthDate,BaseSalary,DepartamentoId")] Operador operador) { if (id != operador.Id) { //return BadRequest(); return(RedirectToAction(nameof(Error), new { message = "Id mismatch" })); } if (ModelState.IsValid) { try { await _operadorService.UpdateAsync(operador); } catch (ApplicationException e) { if (!await _operadorService.OperadorExistsAsync(operador.Id)) { //return NotFound(); return(RedirectToAction(nameof(Error), new { message = "Id not found" })); } else { //throw new DbConcurrencyException(e.Message); return(RedirectToAction(nameof(Error), new { message = e.Message })); } } return(RedirectToAction(nameof(Index))); } //criei a lista de departamentos e atraves da ViewModel OperadorFormViewModel, consigo apresentar na tela de edição o combo de departamentos para a edição do operador var departamentos = await _departamentoService.FindAllAsync(); var viewModel = new OperadorFormViewModel { Operador = operador, Departamentos = departamentos }; return(View(viewModel)); // agora não mais retornando o operador somente, mas o operador e a lista de departamentos }
// GET: Operadores/Edit/5 public async Task <IActionResult> Edit(int?id) //esse opcional "?" foi colocado somente para evitar erro de execução, na verdade o id é obrigatorio { if (id == null) { //return NotFound(); return(RedirectToAction(nameof(Error), new { message = "Id not provided" })); } var operador = await _operadorService.FindByIdAsync(id.Value); //essa variavel operador, vai ser usada no OperadorFormViewModel abaixo: if (operador == null) { //return NotFound(); return(RedirectToAction(nameof(Error), new { message = "Id not found" })); } //criei a lista de departamentos e atraves da ViewModel OperadorFormViewModel, consigo apresentar na tela de edição o combo de departamentos para a edição do operador List <Departamento> departamentos = await _departamentoService.FindAllAsync(); OperadorFormViewModel viewModel = new OperadorFormViewModel { Operador = operador, Departamentos = departamentos }; return(View(viewModel)); // agora não mais retornando o operador somente, mas o operador e a lista de departamentos }