public async Task <IActionResult> Create([Bind("Id", "NomeCompleto", "Email", "Senha", "ConfirmarSenha", "IdPerfil", "IdContrato", "Horario", "CargaHorariaSemanal")] Funcionario funcionario, int[] Idcursos) { try { if (ModelState.IsValid) { // se não houver um funcionario com o mesmo e-mail if (!haveFuncionario(funcionario)) { _context.Add(funcionario); await _context.SaveChangesAsync(); var currentFuncionario = _context.Funcionarios.Where(f => f.Email.Equals(funcionario.Email)).SingleOrDefault(); // criando a relação Funcionario -> Curso, e populando a tabela associativa foreach (var curso in Idcursos) { FuncionarioCurso funcionarioCurso = new FuncionarioCurso(); funcionarioCurso.IdCurso = curso; funcionarioCurso.IdFunc = currentFuncionario.Id; _context.Add(funcionarioCurso); await _context.SaveChangesAsync(); } return(RedirectToAction(nameof(Index))); } ViewData["MSG_E"] = "Já existe um Funcionario cadastrado com esse e-mail."; } } catch (DbUpdateException) { ModelState.AddModelError("", "Não foi possível inserir os dados."); } var perfis = _context.Perfis.OrderBy(i => i.Nivel).ToList(); perfis.Insert(0, new Perfil() { Id = 0, Nivel = "Selecione o Perfil de Funcionário" }); ViewBag.Perfis = perfis; var contratos = _context.Contratos.OrderBy(i => i.Tipo).ToList(); contratos.Insert(0, new Contrato() { Id = 0, Tipo = "Selecione o Tipo de Contrato do Funcionário" }); ViewBag.Contratos = contratos; var cursos = _context.Cursos.OrderBy(c => c.Nome).ToList(); cursos.Insert(0, new Curso() { Id = 0, Nome = "Selecione os Cursos que esse Funcionário está relacionado" }); ViewBag.Cursos = new MultiSelectList(cursos, "Id", "Nome"); return(View(funcionario)); }
public async Task <IActionResult> Edit(long?id, [Bind("Id", "NomeCompleto", "Email", "Senha", "ConfirmarSenha", "IdPerfil", "IdContrato", "Horario", "CargaHorariaSemanal")] Funcionario funcionario, int[] Idcursos) { if (id != funcionario.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(funcionario); await _context.SaveChangesAsync(); // Deletando os registros ligados a esse funcionario na tabela FuncionarioCurso, é necessário fazer essa // exclusão por não haver a possibilidade de alterar registros de uma tabela associativa deleteFuncionarioCurso(funcionario.Id); // retorna o atual funcionario var currentFuncionario = _context.Funcionarios.Where(f => f.Id.Equals(id)).SingleOrDefault(); // cria novamente a relação Funcionario -> Curso, populando a tabela associativa foreach (var curso in Idcursos) { FuncionarioCurso funcionarioCurso = new FuncionarioCurso(); funcionarioCurso.IdCurso = curso; funcionarioCurso.IdFunc = currentFuncionario.Id; _context.Add(funcionarioCurso); await _context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException) { if (!FuncionarioExists(funcionario.Id)) { NotFound(); return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewBag.Perfis = new SelectList(_context.Perfis.OrderBy(i => i.Nivel), "Id", "Nivel", funcionario.IdPerfil); ViewBag.Contratos = new SelectList(_context.Contratos.OrderBy(i => i.Tipo), "Id", "Tipo", funcionario.IdContrato); ViewBag.Cursos = new MultiSelectList(_context.Cursos.OrderBy(c => c.Nome), "Id", "Nome"); return(View(funcionario)); }
private async Task <(CursoGoogle curso, FuncionarioCurso funcionarioCurso)> ObterFuncionarioECurso( RemoverAtribuicaoFuncionarioTurmaEolDto funcionarioASeremRemovido) { FuncionarioCurso funcionarioCurso = null; var curso = await mediator.Send(new ObterCursoPorTurmaComponenteCurricularQuery( funcionarioASeremRemovido.TurmaCodigo, funcionarioASeremRemovido.ComponenteCurricularCodigo)); if (curso != null) { funcionarioCurso = await mediator.Send( new ObterFuncionarioCursoPorUsuarioRfCursoIdQuery( long.Parse(funcionarioASeremRemovido.UsuarioRf), curso.Id)); } return(curso, funcionarioCurso); }
private UsuarioGoogleDto DefinaNovoResponsavelPeloCurso(IEnumerable <UsuarioGoogleDto> funcionariosDoCurso, FuncionarioCurso professor) { UsuarioGoogleDto funcionarioResponsavel; var tiposFuncionarios = new[] { "/Professores", "/Admin/CP", "/Admin/AD", "/Admin/DIRETOR" }; var funcionarios = funcionariosDoCurso.Where(o => !o.Email.Equals(professor.Email)).ToList(); foreach (var tipoFuncionario in tiposFuncionarios) { funcionarioResponsavel = funcionarios.FirstOrDefault(o => o.OrganizationPath.Equals(tipoFuncionario)); if (funcionarioResponsavel != null) { return(funcionarioResponsavel); } } throw new NegocioException( "Não foi possível localizar novo responsável pelo curso. O professor não poderá ser removido."); }