Exemple #1
0
        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));
        }
Exemple #2
0
        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.");
        }