Beispiel #1
0
        /// <summary>
        /// Cria um usuário administrador.
        /// </summary>
        /// <param name="user"></param>
        public void PostAdministrador(UsuarioDTO user)
        {
            bool funcionarioExistente = false;

            user.Login = user.Login.Trim().ToLower();
            user.Email = user.Email.Trim().ToLower();
            Usuario userBD = db.Usuarios.Find(user.Login);

            if (user.FuncionarioId.HasValue)
            {
                funcionarioExistente = funcionariosService.FuncionarioExiste(user.FuncionarioId.Value);
            }
            else
            {
                funcionarioExistente = funcionariosService.FuncionarioExiste(user.MatriculaFuncionario, user.CodigoEmpresa);
            }

            if (!funcionarioExistente)
            {
                Funcionario funcLogin = funcionariosService.GetByLogin(user.Login);
                if (funcLogin != null)
                {
                    throw new Exception("Já existe outro usuário cadastrado com esse Login!");
                }

                Funcionario funcionario = new Funcionario()
                {
                    MatriculaFuncionario = user.MatriculaFuncionario,
                    Nome          = user.Nome,
                    Email         = user.Email,
                    Login         = user.Login,
                    CodigoEmpresa = user.CodigoEmpresa
                };
                funcionariosService.AddOrUpdateFuncionario(funcionario);
            }
            else
            {
                Funcionario func = null;
                if (user.FuncionarioId.HasValue)
                {
                    func = funcionariosService.GetFuncionario(user.FuncionarioId.Value);
                }
                else
                {
                    func = funcionariosService.GetFuncionario(user.MatriculaFuncionario, user.CodigoEmpresa);
                }

                func.CodigoEmpresa = user.CodigoEmpresa;
                func.Nome          = user.Nome;
                func.Email         = user.Email;
                funcionariosService.AddOrUpdateFuncionario(func);
            }

            if (userBD != null)
            {
                userBD.Nome   = user.Nome;
                userBD.Perfil = Perfil.ADMINISTRADOR;
                userBD.Empresas.Clear();
                AddEmpresas(userBD, user.Empresas.Select(e => e.Codigo).ToList());
                db.SaveChanges();
                return;
            }


            userBD = new Usuario
            {
                Nome          = user.Nome,
                Login         = user.Login,
                FuncionarioId = user.FuncionarioId,
                Perfil        = Perfil.ADMINISTRADOR
            };

            db.Usuarios.Add(userBD);
            db.SaveChanges();

            AddEmpresas(userBD, user.Empresas.Select(e => e.Codigo).ToList());

            db.SaveChanges();
        }
        public List <InconsistenciaFuncionarioDTO> ImportacaoFuncionarios(DataSet ds, int codEleicao)
        {
            int l = 2;
            FuncionariosService funcService     = new FuncionariosService();
            UsuariosService     userService     = new UsuariosService();
            EleicoesService     eleicoesService = new EleicoesService();
            GestoresService     gestoresService = new GestoresService();
            //List<InconsistenciaFuncionarioDTO> inconsistencias = new List<InconsistenciaFuncionarioDTO>(); //Guarda os funcionários com a mesma matrícula com Login's diferentes
            HashSet <string> notRequiredFields = new HashSet <string> {
                "Email", "Nome do Gestor"
            };

            try
            {
                Eleicao eleicao = eleicoesService.GetEleicao(codEleicao);
                foreach (DataRow r in ds.Tables[0].Rows)
                {
                    //Condição de parada
                    if (r[1] == null || r[1].ToString() == "")
                    {
                        return(null);
                    }

                    //Validações
                    foreach (DataColumn c in ds.Tables[0].Columns)
                    {
                        if (!notRequiredFields.Contains(c.ColumnName))
                        {
                            if (r[c.ColumnName] == null || r[c.ColumnName].ToString() == "")
                            {
                                throw new ResourceNotFoundException(ds.DataSetName, l, c.ColumnName);
                            }
                        }
                    }

                    if (!DateTime.TryParse(r[5].ToString(), out DateTime dataAdmissao))
                    {
                        throw new FormatoDataInvalidoException(ds.DataSetName, l, r[5].ToString());
                    }

                    if (!DateTime.TryParse(r[6].ToString(), out DateTime dataNascimento))
                    {
                        throw new FormatoDataInvalidoException(ds.DataSetName, l, r[6].ToString());
                    }

                    Gestor gestor = null;
                    if (r[8].ToString() == "")
                    {
                        gestor = null;
                    }
                    else
                    {
                        gestor = gestoresService.Get(r[8].ToString());
                        if (gestor == null)
                        {
                            throw new GestorNaoEncontradoException(r[8].ToString());
                        }
                    }

                    string      login     = r[1].ToString().Trim().ToLower();
                    string      matricula = r[0].ToString();
                    Funcionario func      = new Funcionario
                    {
                        MatriculaFuncionario = matricula,
                        Login          = login,
                        Nome           = r[2].ToString(),
                        Cargo          = r[3].ToString(),
                        Area           = r[4].ToString(),
                        DataAdmissao   = dataAdmissao,
                        DataNascimento = dataNascimento,
                        CodigoGestor   = gestor?.Codigo,
                        Email          = r[7].ToString(),
                        CodigoEmpresa  = eleicao.Unidade.CodigoEmpresa
                    };

                    Funcionario funcMatricula = null;
                    try
                    {
                        funcMatricula = funcService.GetFuncionario(matricula, eleicao.Unidade.CodigoEmpresa);

                        if (funcMatricula.Login != login)
                        {
                            throw new Exception($"O funcionario {func.Nome} (matrícula {matricula}) já está cadastrado com o login {funcMatricula.Login}. Altere a planilha ou altere o registro atual em \"Base Geral\".");
                        }
                    }
                    catch (FuncionarioNaoEncontradoException) { }

                    Funcionario atual = funcService.GetByLogin(login);

                    if (atual == null || atual.MatriculaFuncionario == matricula)
                    {
                        if (atual != null)
                        {
                            func.Id = atual.Id;
                        }
                        funcService.AddOrUpdateFuncionario(func);
                    }
                    else
                    {
                        throw new Exception($"Já existe um funcionário cadastrado com o login {login}! Matrícula: {atual.MatriculaFuncionario}.");
                    }

                    Usuario usuario = null;
                    try
                    {
                        usuario = userService.GetUsuario(login);
                        usuario.FuncionarioId = atual.Id;
                        usuario.Nome          = func.Nome;
                        userService.AddOrUpdateUsuario(usuario);
                    }
                    catch (UsuarioNaoEncontradoException) { }
                    eleicoesService.AddFuncionario(codEleicao, func.Id);

                    l++;
                }
            }
            catch (ResourceNotFoundException e)
            {
                throw e;
            }
            catch (FormatoDataInvalidoException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new ExcelException(e.Message, ds.DataSetName, l);
            }

            return(null);
        }