Example #1
0
        public void AtualizaTreinamentoeCertificacaoDoCanal(ProdutoTreinamento ProdPortifolio)
        {
            //procura em qual produtos do portifolio está
            if (ProdPortifolio.Produto != null && ProdPortifolio.NroMinimoProf.Value > 0)
            {
                List <ProdutoPortfolio> lstProdutoPorfolio = RepositoryService.ProdutoPortfolio.ListarPorProduto(ProdPortifolio.Produto.Id);

                foreach (ProdutoPortfolio _ProdutoPorfolio in lstProdutoPorfolio)
                {
                    if (_ProdutoPorfolio.Product.ExigeTreinamento.HasValue)
                    {
                        Portfolio _Portfolio = RepositoryService.Portfolio.ObterPor(_ProdutoPorfolio.Portfolio.Id);

                        List <CategoriasCanal> lstCategoriasCanal = RepositoryService.CategoriasCanal.ListarPor(null, _Portfolio.UnidadeNegocio.Id, null, null, null);

                        foreach (CategoriasCanal _CategoriasCanal in lstCategoriasCanal)
                        {
                            List <ColaboradorTreinadoCertificado> lstColaboradorTreinadoCertificadoDoCanal = RepositoryService.ColaboradorTreinadoCertificado.ListarPor(_CategoriasCanal.Canal.Id, ProdPortifolio.Treinamento.Id);

                            List <TreinamentoCanal> lstTreinamentoCanal = RepositoryService.TreinamentoCanal.ListarPor(ProdPortifolio.Treinamento.Id, _CategoriasCanal.Canal.Id);

                            foreach (TreinamentoCanal _treinamentocanal in lstTreinamentoCanal)
                            {
                                if (lstColaboradorTreinadoCertificadoDoCanal.Count >= ProdPortifolio.NroMinimoProf.Value)
                                {
                                    _treinamentocanal.StatusCompromisso = new Lookup(RepositoryService.StatusCompromissos.ObterPor("Cumprido").ID.Value, "");
                                }
                                else
                                {
                                    _treinamentocanal.StatusCompromisso = new Lookup(RepositoryService.StatusCompromissos.ObterPor("Não Cumprido").ID.Value, "");
                                }

                                RepositoryService.TreinamentoCanal.Update(_treinamentocanal);
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        public void CriaTreinamentoeCertificacaoDoCanal(ProdutoTreinamento ProdPortifolio)
        {
            //procura em qual produtos do portifolio está
            if (ProdPortifolio.Produto != null && ProdPortifolio.NroMinimoProf.Value > 0)
            {
                List <ProdutoPortfolio> lstProdutoPorfolio = RepositoryService.ProdutoPortfolio.ListarPorProduto(ProdPortifolio.Produto.Id);

                foreach (ProdutoPortfolio _ProdutoPorfolio in lstProdutoPorfolio)
                {
                    Portfolio _Portfolio = RepositoryService.Portfolio.ObterPor(_ProdutoPorfolio.Portfolio.Id);

                    List <CategoriasCanal> lstCategoriasCanal = RepositoryService.CategoriasCanal.ListarPor(null, _Portfolio.UnidadeNegocio.Id, null, null, null);

                    foreach (CategoriasCanal _CategoriasCanal in lstCategoriasCanal)
                    {
                        TreinamentoCanal treinamentocanal = new TreinamentoCanal(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                        treinamentocanal.Canal       = new Lookup(_CategoriasCanal.Canal.Id, "account");
                        treinamentocanal.Treinamento = new Lookup(ProdPortifolio.Treinamento.Id, "");
                        treinamentocanal.Nome        = _CategoriasCanal.Canal.Name + " - " + ProdPortifolio.Treinamento.Name;
                        treinamentocanal.DataLimite  = DateTime.Now.AddMonths(1);

                        //consulta os profissionais certificados do canal.
                        List <ColaboradorTreinadoCertificado> lstColaboradorTreinadoCertificado = RepositoryService.ColaboradorTreinadoCertificado.ListarPor(_CategoriasCanal.Canal.Id, ProdPortifolio.Treinamento.Id);

                        if (lstColaboradorTreinadoCertificado.Count >= ProdPortifolio.NroMinimoProf.Value)
                        {
                            treinamentocanal.StatusCompromisso = new Lookup(RepositoryService.StatusCompromissos.ObterPor("Cumprido").ID.Value, "");
                        }
                        else
                        {
                            treinamentocanal.StatusCompromisso = new Lookup(RepositoryService.StatusCompromissos.ObterPor("Não Cumprido").ID.Value, "");
                        }

                        treinamentocanal.ID = RepositoryService.TreinamentoCanal.Create(treinamentocanal);
                    }
                }
            }
        }
Example #3
0
        // TREINAMENTO
        // CASO DE USO 2 - VERIFICAÇÃO DO STATUS DOS TREINAMENTOS E CERTIFICAÇÃO DO CANAL
        public void VerificacaoDoStatusTreinamentosECertificacaoCanal()
        {
            Trace       = new SDKore.Helper.Trace("MonitoramentoVerificaStatus");
            mensagemLog = new List <string>();

            InserirLog(DateTime.Now + " - Inicio - Verificação do Status dos Treinamentos e Certificados dos Canais!");

            ParametroGlobal paramGlobal = ParametroGlobal.ListarParamGlobalPorTipoParam((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.DatasTrimestre).FirstOrDefault();

            if (paramGlobal == null)
            {
                throw new ApplicationException("A execução do monitoramento foi interrompida, o parâmetro global não foi encontrado ou está preenchido com valores incorretos.");
            }

            // Obtem lista de canais matriz ou filial // (CASO USO TREINAMENTO 2: STEP 1)
            List <Conta> lstContas = ContaService.ListarContasParticipantes();

            InserirLog(string.Empty);
            InserirLog(DateTime.Now + " - Foram encontrados " + lstContas.Count + " participantes do PCI para processar!");

            foreach (Conta canal in lstContas)
            {
                // (CASO USO TREINAMENTO 2: STEP 3)
                List <TreinamentoCanal> lstTreinamentoCanal = this.ListarTreinamentoPorCanal(canal.ID.Value);

                InserirLog(string.Empty);
                InserirLog(DateTime.Now + " --- Foram encontrados " + lstTreinamentoCanal.Count + " treinamentos do Canal [" + canal.CodigoMatriz + "] para processar!");

                // (CASO USO TREINAMENTO 2: STEP 4)
                foreach (var treinamentoCanal in lstTreinamentoCanal)
                {
                    try
                    {
                        InserirLog(DateTime.Now + " ----- Treinamentos do Canal [" + treinamentoCanal.Nome + "]");


                        // (CASO USO TREINAMENTO 2: STEP 5)
                        TreinamentoCertificacao treinamentoCertficacao = TreinamentoCertificacao.ObterPor(treinamentoCanal.Treinamento.Id);
                        if (treinamentoCanal.CompromissoCanal != null)
                        {
                            CompromissosDoCanal compCanal = CompromissoDoCanal.BuscarPorGuid(treinamentoCanal.CompromissoCanal.Id);

                            // (CASO USO TREINAMENTO 2: STEP 5)
                            if (treinamentoCertficacao.ID != null && compCanal.UnidadeDeNegocio != null)
                            {
                                List <ProdutoTreinamento> lstProdTrei = ProdutoTreinamento.ListarPorTreinamento(treinamentoCertficacao.ID.Value, compCanal.UnidadeDeNegocio.Id);
                                int numMinimoProfissionais            = lstProdTrei.Max(x => x.NroMinimoProf.Value);

                                // (CASO USO TREINAMENTO 2: STEP 6)
                                List <ColaboradorTreinadoCertificado> lstColaboradorTreinadoCertificadoDoCanal = RepositoryService.ColaboradorTreinadoCertificado.ListarPor(canal.ID.Value, treinamentoCertficacao.ID.Value);

                                // (CASO USO TREINAMENTO 2: STEP 7)
                                if (lstColaboradorTreinadoCertificadoDoCanal.Count >= numMinimoProfissionais)
                                {
                                    InserirLog(DateTime.Now + " ----- Atualizando para Cumprido");

                                    treinamentoCanal.StatusCompromisso = new Lookup(StatusCompromissoCumprido.ID.Value, "");
                                    RepositoryService.TreinamentoCanal.Update(treinamentoCanal);
                                }
                                else if (treinamentoCanal.DataLimite < DateTime.Today)
                                {
                                    InserirLog(DateTime.Now + " ----- Atualizando para Não Cumprido");

                                    treinamentoCanal.StatusCompromisso = new Lookup(StatusCompromissoNaoCumprido.ID.Value, "");
                                    RepositoryService.TreinamentoCanal.Update(treinamentoCanal);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        string mensagem = SDKore.Helper.Error.Handler(ex);
                        InserirLog(DateTime.Now + " - ERRO: " + mensagem);
                    }
                }
            }


            InserirLog(string.Empty);
            InserirLog(DateTime.Now + " - Fim - Verificação do Status dos Treinamentos e Certificados dos Canais!");

            this.EnviaEmailDeLog("Verificação do status do Treinamento");
        }
Example #4
0
        // TREINAMENTO
        // CASO DE USO 1 – GERAÇÃO TREINAMENTO E CERTIFICAÇÃO DO CANAL
        public void GeracaoTreinamentoECertificacaoDoCanal()
        {
            Trace       = new SDKore.Helper.Trace("GeraTreinamento");
            mensagemLog = new List <string>();

            InserirLog(DateTime.Now + " - Inicio Geração Treinamento e Certificacao do Canal");

            ParametroGlobal paramGlobal = ParametroGlobal.ListarParamGlobalPorTipoParam((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.DatasTrimestre).FirstOrDefault();

            if (paramGlobal == null)
            {
                throw new ApplicationException("A execução do monitoramento foi interrompida, o parâmetro global não foi encontrado ou está preenchido com valores incorretos.");
            }

            List <Conta> lstContas = ContaService.ListarContasParticipantes();

            InserirLog(DateTime.Now + " - Foram encontrados " + lstContas.Count + " participantes do PCI para processar!");


            foreach (Conta canal in lstContas)
            {
                try
                {
                    InserirLog(string.Empty);
                    InserirLog(DateTime.Now + " -- Canal[" + canal.CodigoMatriz + "]");

                    List <TreinamentoCanal> lstTreinamentoCanal = this.ListarTreinamentoPorCanal(canal.ID.Value);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstTreinamentoCanal.Count() + " treinamento do canal!");

                    // Inativa status de treinamentos e certificações
                    this.InativaTreinamentosDeCanal(lstTreinamentoCanal);

                    // lista produtos portifolios
                    List <ProdutoPortfolio> lstProdutoPortifolio = new Servicos.ProdutoService(OrganizationName, isOffline).ProdutosPortfolio(canal, canal.Classificacao.Id, null);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstProdutoPortifolio.Count + " produtos do portfolio!");

                    // filtra produto por produto que exija treinamento
                    var lstProdPortExigeTrein = lstProdutoPortifolio.Where(x => x.Product.ExigeTreinamento == true);

                    InserirLog(DateTime.Now + " --- Foram encontrados " + lstProdPortExigeTrein.Count() + " produtos do portfolio que exigem treinamento!");

                    // para cada produto portifolio
                    foreach (var prodPort in lstProdPortExigeTrein)
                    {
                        InserirLog(DateTime.Now + " ---- Produto: " + prodPort.Product.Codigo + " - Unidade Negocio: " + prodPort.Product.UnidadeNegocio.Name);

                        List <CompromissosDoCanal> lstCompCanal = new List <CompromissosDoCanal>();
                        // se forma de apuração de beneficio e compromisso do canal for por filial
                        if (canal.ApuracaoBeneficiosCompromissos.Value == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Por_Filiais ||
                            canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Matriz)
                        {
                            // compromisso do canal 33
                            lstCompCanal = CompromissosDoCanal.ListarPorCod33EPorMatriz(canal.ID.Value, prodPort.Product.UnidadeNegocio.Id);
                        }
                        else if (canal.ApuracaoBeneficiosCompromissos.Value == (int)Enum.Conta.ApuracaoDeBeneficiosECompromissos.Centralizada_Na_Matriz &&
                                 canal.TipoConta == (int)Enum.Conta.MatrizOuFilial.Filial)
                        {
                            lstCompCanal = CompromissosDoCanal.ListarPorCod33EPorMatriz(canal.ContaPrimaria.Id, prodPort.Product.UnidadeNegocio.Id);
                        }

                        InserirLog(DateTime.Now + " ----- Foram encontrados " + lstCompCanal.Count() + " Compromisso do Canal ");

                        if (lstCompCanal.Count() > 0)
                        {
                            // lista de produto treinamento certificação
                            List <ProdutoTreinamento> lstProdTrei = ProdutoTreinamento.ListarPorProduto(prodPort.Produto.Id);

                            InserirLog(DateTime.Now + " ------ Foram encontrados " + lstProdTrei.Count() + " Produtos do Treinamento ");

                            // Cria TReinamento do canal ou ativa se ja existir
                            foreach (var prodTrei in lstProdTrei)
                            {
                                InserirLog(DateTime.Now + " ------- Produto por Treinamento Certificação: " + prodTrei.Treinamento.Name);

                                this.CriaTreinamentoCanalOuAtiva(prodTrei.Treinamento.Id, prodTrei.Treinamento.Name, canal, lstCompCanal[0].ID);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string mensagem = SDKore.Helper.Error.Handler(ex);
                    InserirLog(DateTime.Now + " - ERRO: " + mensagem);
                }
            }

            InserirLog(string.Empty);
            InserirLog(DateTime.Now + " - Fim GeracaoTreinamentoECertificacaoDoCanal");

            this.EnviaEmailDeLog("Geracao Treinamento e Certificação");
        }