Beispiel #1
0
        public ActionResult ConsolidarCargosRubi(int?id)
        {
            GestaoCompentenciasCargosViewModel model = new GestaoCompentenciasCargosViewModel();

            model.CicloAvaliacaoSelecionadoID = id;

            CarregarInformacoesRubi(model);

            AssociacaoCargoCompetenciaDAO associacaoCargoCompetenciaDAO = new AssociacaoCargoCompetenciaDAO();

            if (model.AssociacoesCargosCompetencias != null)
            {
                var associacoesCargoCompetencia = new List <AssociacaoCargoCompetencia>();

                foreach (var item in model.AssociacoesCargosCompetencias)
                {
                    var associacao = associacaoCargoCompetenciaDAO.Obter(id.Value, item.CargoRubiID, item.AreaRubiID, item.SetorRubiID.Value);

                    if (associacao == null)
                    {
                        associacoesCargoCompetencia.Add(new AssociacaoCargoCompetencia
                        {
                            AreaCompetencia    = item.AreaCompetencia,
                            AreaCompetenciaID  = item.AreaCompetenciaID,
                            AreaRubi           = item.AreaRubi,
                            AreaRubiID         = item.AreaRubiID,
                            CargoCompetencia   = item.CargoCompetencia,
                            CargoCompetenciaID = item.CargoCompetenciaID,
                            CargoRubi          = item.CargoRubi,
                            CargoRubiID        = item.CargoRubiID,
                            CicloAvaliacao_ID  = id.Value,
                            ID = item.ID,
                            SetorCompetencia   = item.SetorCompetencia,
                            SetorCompetenciaID = item.SetorCompetenciaID,
                            SetorRubi          = item.SetorRubi,
                            SetorRubiID        = item.SetorRubiID
                        });
                    }
                }

                associacaoCargoCompetenciaDAO.PersistirColecao(associacoesCargoCompetencia);
            }

            CarregarAssociacoesCargoCompetencias(model);

            model.Pagina = 1;

            return(View("/Views/CiclosAvaliacao/GestaoCompetenciasCargos.cshtml", model));
        }
Beispiel #2
0
        //[CriacaoMapeamento(typeof(DeItemListaGestaoCompetenciasCargosViewModelParaAssociacaoCargoCompetencia))]
        //[CriacaoMapeamento(typeof(DeListaItemListaGestaoCompetenciasCargosViewModelParaListaAssociacaoCargoCompetencia))]
        public ActionResult GestaoCompetenciasCargos(GestaoCompentenciasCargosViewModel model)
        {
            if (ModelState.IsValid)
            {
                AssociacaoCargoCompetenciaDAO associacaoCargoCompetenciaDAO = new AssociacaoCargoCompetenciaDAO();

                CarregarInformacoesSistemaCompentencias(model);

                if (model.AssociacoesCargosCompetencias != null)
                {
                    for (int i = (model.Pagina - 1) * 20; i < (((model.Pagina * 20) > model.AssociacoesCargosCompetencias.Count) ? model.AssociacoesCargosCompetencias.Count : (model.Pagina * 20)); i++)
                    {
                        if (model.AssociacoesCargosCompetencias[i].CargoCompetenciaID.HasValue)
                        {
                            model.AssociacoesCargosCompetencias[i].CargoCompetencia = model.CargosCompentencia.First(p => p.Value.Equals(model.AssociacoesCargosCompetencias[i].CargoCompetenciaID.Value.ToString())).Text;
                        }

                        if (model.AssociacoesCargosCompetencias[i].AreaCompetenciaID.HasValue)
                        {
                            model.AssociacoesCargosCompetencias[i].AreaCompetencia = model.AreasCompentencia.First(p => p.Value.Equals(model.AssociacoesCargosCompetencias[i].AreaCompetenciaID.ToString())).Text;
                        }

                        if (model.AssociacoesCargosCompetencias[i].SetorCompetenciaID.HasValue)
                        {
                            model.AssociacoesCargosCompetencias[i].SetorCompetencia = model.SetoresCompentencia.First(p => p.Value.Equals(model.AssociacoesCargosCompetencias[i].SetorCompetenciaID.ToString())).Text;
                        }

                        model.AssociacoesCargosCompetencias[i].CicloAvaliacaoID = model.CicloAvaliacaoSelecionadoID.Value;
                    }

                    var            cicloAvaliacaoDAO = new CicloAvaliacaoDAO();
                    CicloAvaliacao ciclo             = cicloAvaliacaoDAO.Obter(model.CicloAvaliacaoSelecionadoID.Value);

                    var associacoesCargoCompetencia = new List <AssociacaoCargoCompetencia>();

                    for (int i = (model.Pagina - 1) * 20; i < (((model.Pagina * 20) > model.AssociacoesCargosCompetencias.Count) ? model.AssociacoesCargosCompetencias.Count : (model.Pagina * 20)); i++)
                    {
                        associacoesCargoCompetencia.Add(new AssociacaoCargoCompetencia
                        {
                            AreaCompetencia    = model.AssociacoesCargosCompetencias[i].AreaCompetencia,
                            AreaCompetenciaID  = model.AssociacoesCargosCompetencias[i].AreaCompetenciaID,
                            AreaRubi           = model.AssociacoesCargosCompetencias[i].AreaRubi,
                            AreaRubiID         = model.AssociacoesCargosCompetencias[i].AreaRubiID,
                            CargoCompetencia   = model.AssociacoesCargosCompetencias[i].CargoCompetencia,
                            CargoCompetenciaID = model.AssociacoesCargosCompetencias[i].CargoCompetenciaID,
                            CargoRubi          = model.AssociacoesCargosCompetencias[i].CargoRubi,
                            CargoRubiID        = model.AssociacoesCargosCompetencias[i].CargoRubiID,
                            CicloAvaliacao_ID  = model.AssociacoesCargosCompetencias[i].CicloAvaliacaoID,
                            ID = model.AssociacoesCargosCompetencias[i].ID,
                            SetorCompetencia   = model.AssociacoesCargosCompetencias[i].SetorCompetencia,
                            SetorCompetenciaID = model.AssociacoesCargosCompetencias[i].SetorCompetenciaID,
                            SetorRubi          = model.AssociacoesCargosCompetencias[i].SetorRubi,
                            SetorRubiID        = model.AssociacoesCargosCompetencias[i].SetorRubiID
                        });
                    }

                    associacaoCargoCompetenciaDAO.PersistirColecao(associacoesCargoCompetencia);

                    #region <<<<< Criar as avaliações dos cargos que sofreram alterações. >>>>>
                    foreach (var item in associacoesCargoCompetencia)
                    {
                        if (item.AreaCompetenciaID.HasValue && item.CargoCompetenciaID.HasValue && item.SetorCompetenciaID.HasValue)
                        {
                            //Pega todos os usuarios do cargo, area e setor
                            var usuariosRubi = new IntegracaoRubi().ListarUSU_V034FAD(item.CargoRubiID, item.AreaRubiID, item.SetorRubiID.Value);

                            if (usuariosRubi != null)
                            {
                                foreach (var usuarioRubi in usuariosRubi)
                                {
                                    //Para cada usuario do rubi pegar seu respectivo usuario no competencias
                                    var usuarioCompetencia = new UsuarioDAO().Obter(usuarioRubi.NUMCAD, usuarioRubi.NUMEMP);

                                    //Caso não exista usuário no competencias, pegar as informações do AD e criar o usuário.
                                    if (usuarioCompetencia == null)
                                    {
                                        PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);

                                        DirectorySearcher directorySearcher = new DirectorySearcher(principalContext.ConnectedServer);

                                        directorySearcher.Filter = "(&(company=" + usuarioRubi.NUMEMP + ")(department=" + usuarioRubi.NUMCAD + ")" + System.Configuration.ConfigurationManager.ConnectionStrings["ADFilterConnectionString"].ConnectionString + ")";

                                        SearchResult searchResult = directorySearcher.FindOne();

                                        DirectoryEntry directoryEntry = searchResult.GetDirectoryEntry();

                                        if (directoryEntry.Properties.Count > 0)
                                        {
                                            CadastrarUsuario(directoryEntry.Properties["sAMAccountName"][0].ToString(), usuarioRubi.NUMEMP, usuarioRubi.NUMCAD);

                                            usuarioCompetencia = new UsuarioDAO().Obter(usuarioRubi.NUMCAD, usuarioRubi.NUMEMP);
                                        }
                                    }

                                    //Caso exista usuário cadastrado no sistema ou no AD, prosseguir pra criar a sua avaliação e o seu pdi.
                                    if (usuarioCompetencia != null)
                                    {
                                        //Verificar se existe seu gestor cadastrado no competencias, caso não exista cadastrar.
                                        var gestor = new UsuarioDAO().Obter(usuarioRubi.USU_LD1CAD.Value, usuarioRubi.USU_LD1EMP.Value);
                                        if (gestor == null)
                                        {
                                            PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);

                                            DirectorySearcher directorySearcher = new DirectorySearcher(principalContext.ConnectedServer);

                                            directorySearcher.Filter = "(&(company=" + usuarioRubi.USU_LD1EMP.Value + ")(department=" + usuarioRubi.USU_LD1CAD.Value + ")" + System.Configuration.ConfigurationManager.ConnectionStrings["ADFilterConnectionString"].ConnectionString + ")";

                                            SearchResult searchResult = directorySearcher.FindOne();

                                            DirectoryEntry directoryEntry = searchResult.GetDirectoryEntry();

                                            if (directoryEntry.Properties.Count > 0)
                                            {
                                                CadastrarUsuario(directoryEntry.Properties["sAMAccountName"][0].ToString(), usuarioRubi.USU_LD1EMP.Value, usuarioRubi.USU_LD1CAD.Value);
                                            }
                                        }

                                        //Para cada usuario no competencia verificar se existe uma avaliação criada dentro desse ciclo
                                        var avaliacaoColaborador = new AvaliacaoColaboradorDAO().Obter(model.CicloAvaliacaoSelecionadoID.Value, usuarioCompetencia.ID);

                                        if (avaliacaoColaborador == null)
                                        {
                                            if (ciclo.SituacaoCicloAvaliacao_ID.Value < 5)
                                            {
                                                AvaliacaoColaborador avaliacao = new AvaliacaoColaborador();

                                                AvaliacaoColaboradorDAO avaliacaoColaboradorDAO = new AvaliacaoColaboradorDAO();

                                                avaliacao.DataCriacao       = DateTime.Today;
                                                avaliacao.CicloAvaliacao_ID = model.CicloAvaliacaoSelecionadoID.Value;
                                                avaliacao.Colaborador_ID    = usuarioCompetencia.ID;
                                                avaliacao.GestorRubi_ID     = usuarioRubi.USU_LD1CAD;
                                                avaliacao.GestorRubiEmp_ID  = usuarioRubi.USU_LD1EMP;
                                                if (ciclo.SituacaoCicloAvaliacao_ID.Value == 1 || ciclo.SituacaoCicloAvaliacao_ID.Value == 2)
                                                {
                                                    avaliacao.StatusAvaliacaoColaborador_ID = ciclo.SituacaoCicloAvaliacao_ID.Value;
                                                }
                                                else if (ciclo.SituacaoCicloAvaliacao_ID.Value == 3)
                                                {
                                                    avaliacao.StatusAvaliacaoColaborador_ID = (int)Enumeradores.StatusAvaliacaoColaborador.ObjetivosMetasDefinidos;
                                                }
                                                else if (ciclo.SituacaoCicloAvaliacao_ID.Value == 4)
                                                {
                                                    avaliacao.StatusAvaliacaoColaborador_ID = (int)Enumeradores.StatusAvaliacaoColaborador.AutoAvaliacao;
                                                }

                                                avaliacao.CargoRubiID         = item.CargoRubiID;
                                                avaliacao.AreaRubiID          = item.AreaRubiID;
                                                avaliacao.SetorRubiID         = item.SetorRubiID;
                                                avaliacao.DataUltimaAlteracao = DateTime.Now;

                                                avaliacaoColaboradorDAO.Incluir(avaliacao);
                                            }
                                        }

                                        //Para cada usuario no competencia verificar se existe um pdi criado dentro desse ciclo
                                        var avaliacaoPdiColaborador = new AvaliacaoPDIColaboradorDAO().Obter(model.CicloAvaliacaoSelecionadoID.Value, usuarioCompetencia.ID);

                                        if (avaliacaoPdiColaborador == null)
                                        {
                                            if (ciclo.SituacaoCicloAvaliacao_ID.Value < 8)
                                            {
                                                AvaliacaoPDIColaborador avaliacaoPdi = new AvaliacaoPDIColaborador();

                                                AvaliacaoPDIColaboradorDAO avaliacaoPDIColaboradorDAO = new AvaliacaoPDIColaboradorDAO();

                                                avaliacaoPdi.DataCriacao       = DateTime.Today;
                                                avaliacaoPdi.CicloAvaliacao_ID = model.CicloAvaliacaoSelecionadoID.Value;
                                                avaliacaoPdi.Colaborador_ID    = usuarioCompetencia.ID;
                                                avaliacaoPdi.GestorRubi_ID     = usuarioRubi.USU_LD1CAD;
                                                avaliacaoPdi.GestorRubiEmp_ID  = usuarioRubi.USU_LD1EMP;
                                                avaliacaoPdi.StatusPDI_ID      = (int)Enumeradores.StatusPDI.Criada;

                                                avaliacaoPdi.CargoRubiID = item.CargoRubiID;
                                                avaliacaoPdi.AreaRubiID  = item.AreaRubiID;
                                                avaliacaoPdi.SetorRubiID = item.SetorRubiID;

                                                avaliacaoPDIColaboradorDAO.Incluir(avaliacaoPdi);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                }
            }

            return(GestaoCompetenciasCargos(model.CicloAvaliacaoSelecionadoID, model.Pagina));
        }