public async Task <IActionResult> Edit(int id, [Bind("Id,ResponsavelId,AlunoId")] AlunoResponsavel alunoResponsavel) { if (id != alunoResponsavel.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(alunoResponsavel); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AlunoResponsavelExists(alunoResponsavel.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["AlunoId"] = new SelectList(_context.Aluno, "Id", "Id", alunoResponsavel.AlunoId); ViewData["ResponsavelId"] = new SelectList(_context.Responsavel, "Id", "Id", alunoResponsavel.ResponsavelId); return(View(alunoResponsavel)); }
public async Task <IActionResult> Create([Bind("Id,ResponsavelId,AlunoId")] AlunoResponsavel alunoResponsavel) { if (ModelState.IsValid) { _context.Add(alunoResponsavel); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["AlunoId"] = new SelectList(_context.Aluno, "Id", "Id", alunoResponsavel.AlunoId); ViewData["ResponsavelId"] = new SelectList(_context.Responsavel, "Id", "Id", alunoResponsavel.ResponsavelId); return(View(alunoResponsavel)); }
public async Task <BaseResult> Handle(AlterarAlunoCommand command, CancellationToken cancellationToken) { if (!command.Validar()) { return(command.BaseResult); } var aluno = await _alunoRepository.ObterPorIdAsync(command.AlunoId); if (aluno == null) { AdicionarErro("Não foi possível localizar o aluno!"); return(BaseResult); } // Atualiza o endereço var endereco = aluno.Endereco; endereco.Atualizar(command.Endereco.Logradouro, command.Endereco.Numero, command.Endereco.Complemento, command.Endereco.Bairro, command.Endereco.Cep, command.Endereco.Cidade, command.Endereco.Estado); // Atualiza os responsáveis List <AlunoResponsavel> ResponsaveisParaRemover = new List <AlunoResponsavel>(); List <AlunoResponsavel> ResponsaveisParAdcionar = new List <AlunoResponsavel>(); List <AlunoResponsavel> novosAlunoResponsavels = new List <AlunoResponsavel>(); foreach (var item in command.Responsaveis) { var responsavel = await _alunoRepository.ObterResponsavelPorIdAsync(item.id); responsavel.Atualizar(item.Nome, item.DataNascimento, item.Rg, item.Cpf, item.Telefone, item.Celular, item.Email, item.Observacao); novosAlunoResponsavels.Add(new AlunoResponsavel(aluno, responsavel)); } // Se um responsavel está gravado mas não está na lista de nova (indica que foi retirado) foreach (AlunoResponsavel responsavel in aluno.AlunosResponsaveis) { if (novosAlunoResponsavels.Any(e => e.AlunoId == responsavel.AlunoId && e.ResponsavelId == responsavel.ResponsavelId) == false) { ResponsaveisParaRemover.Add(responsavel); } } // Se um responsavel está na lista nova mas está na gravada (indica que foi incluso) foreach (AlunoResponsavel responsavel in novosAlunoResponsavels) { AlunoResponsavel isIncluso = aluno.AlunosResponsaveis. Where(m => m.ResponsavelId == responsavel.ResponsavelId).FirstOrDefault(); if (isIncluso == null) { ResponsaveisParAdcionar.Add(responsavel); } } aluno.Atualizar(command.Nome, command.DataNascimento, command.Rg, command.Cpf, command.Observacao, command.TurmaId); aluno.AtribuirEndereco(endereco); aluno.AtribuirResponsaveis(novosAlunoResponsavels); _alunoRepository.Alterar(aluno); await _alunoRepository.SalvarAsync(); return(BaseResult); }