Esempio n. 1
0
        public List <RegraCondicao> GetCondicoesAlunoOVs(int matricula, int idAplicacao)
        {
            var aplicacoesServico = Utilidades.AplicacoesServico();

            using (var ctx = new DesenvContext())
            {
                var produtosExtensivos = new[] { 1, 5 };
                var ajusteSomenteAula  = new RegraCondicao();
                var statusPermitidos   = new[] { 0, 2, 5 };
                var perfilAluno        = (from so in ctx.tblSellOrders
                                          join sod in ctx.tblSellOrderDetails on so.intOrderID equals sod.intOrderID
                                          join prod in ctx.tblProducts on sod.intProductID equals prod.intProductID
                                          join c in ctx.tblCourses on prod.intProductID equals c.intCourseID
                                          //join pgd in ctx.tblPaymentDocuments on so.intOrderID equals pgd.intSellOrderID
                                          //join ccc in ctx.tblCallCenterCalls on so.intClientID equals ccc.intClientID
                                          where so.intClientID == matricula && statusPermitidos.Contains(so.intStatus ?? 1)
                                          orderby so.dteDate descending
                                          select new
                {
                    IdOv = so.intOrderID,
                    GrupoProduto = prod.intProductGroup1 ?? -1,
                    GrupoProduto2 = prod.intProductGroup2 ?? -1,
                    StatusOV = so.intStatus.Value,
                    StatusPagamento = so.intStatus2,
                    Ano = c.intYear.Value,
                    Turma = c.intCourseID,
                    Filial = so.intStoreID
                }).Distinct();
                var condicoesAluno    = new List <RegraCondicao>();
                var isAntesDataLimite = Utilidades.IsBeforeDataLimite(idAplicacao, Utilidades.GetYear());
                foreach (var r in perfilAluno)
                {
                    if (!(r.GrupoProduto == (int)Produto.Produtos.CPMED && r.GrupoProduto2 != (int)Produto.Produtos.APOSTILA_CPMED))
                    {
                        var tipoAno  = GetTipoAno(r.Ano);
                        var statusOv = OrdemVendaEntity.GetRealStatusOv((OrdemVenda.StatusOv)r.StatusOV, (RegraCondicao.tipoAno)tipoAno, matricula, isAntesDataLimite);

                        if (produtosExtensivos.Contains(r.GrupoProduto))
                        {
                            ajusteSomenteAula = AjustaChamadoSomenteAula(r.IdOv, matricula);
                        }
                        else
                        {
                            ajusteSomenteAula = new RegraCondicao()
                            {
                                CallCategory = -1, StatusInterno = -1
                            }
                        };

                        var condicaoSomenteAula = new RegraCondicao
                        {
                            ClientId        = matricula,
                            TipoAno         = tipoAno,
                            Produto         = r.GrupoProduto,
                            StatusOV        = (int)statusOv,
                            StatusPagamento = r.StatusPagamento ?? -1,
                            StatusInterno   = ajusteSomenteAula.StatusInterno,
                            CallCategory    = ajusteSomenteAula.CallCategory,
                            CourseId        = r.Turma,
                            StoreId         = r.Filial,
                            AnoOV           = r.Ano
                        };
                        var ajusteStatusInadimplencia = AjustaChamadoInadimplencia(condicaoSomenteAula, r.IdOv, matricula);

                        if (aplicacoesServico.Contains(idAplicacao) && condicaoSomenteAula.StatusInterno < default(int))
                        {
                            condicaoSomenteAula.StatusInterno = ObterUltimoStatusChamadoInadimplencia(r.IdOv, matricula);
                        }
                        condicoesAluno.Add(condicaoSomenteAula);
                    }
                }

                if (VerificaDireitoRevalida(matricula, condicoesAluno, isAntesDataLimite, idAplicacao))
                {
                    var condicaoRevalida = new RegraCondicao  //Add ov de Revalida
                    {
                        ClientId        = matricula,
                        TipoAno         = RegraCondicao.tipoAno.Atual,
                        Produto         = 63,
                        StatusOV        = -1,
                        StatusPagamento = -1,
                        StatusInterno   = ajusteSomenteAula.StatusInterno,
                        CallCategory    = ajusteSomenteAula.CallCategory,
                        CourseId        = -1,
                        StoreId         = -1
                    };

                    condicoesAluno.Add(condicaoRevalida);
                }

                return(condicoesAluno);
            }
        }
Esempio n. 2
0
        public List <RegraCondicao> GetCondicoesAlunoOVs(int matricula, int idAplicacao)
        {
            var isCacheEnable = !RedisCacheManager.CannotCache(RedisCacheConstants.Access.KeyGetCondicoesAlunoOVs);
            var key           = isCacheEnable ? RedisCacheManager.GenerateKey(RedisCacheConstants.Access.KeyGetCondicoesAlunoOVs, matricula, idAplicacao) : null;
            List <RegraCondicao> listaRegraCondicao = isCacheEnable ? RedisCacheManager.GetItemObject <List <RegraCondicao> >(key) : null;


            if (listaRegraCondicao != null)
            {
                return(listaRegraCondicao);
            }

            using (var ctx = new DesenvContext())
            {
                var produtosExtensivos = new[] { 1, 5 };
                var ajusteSomenteAula  = new RegraCondicao();
                var statusPermitidos   = new[] { 0, 2, 5 };
                var perfilAluno        = (from so in ctx.tblSellOrders
                                          join sod in ctx.tblSellOrderDetails on so.intOrderID equals sod.intOrderID
                                          join prod in ctx.tblProducts on sod.intProductID equals prod.intProductID
                                          join c in ctx.tblCourses on prod.intProductID equals c.intCourseID
                                          //join pgd in ctx.tblPaymentDocuments on so.intOrderID equals pgd.intSellOrderID
                                          //join ccc in ctx.tblCallCenterCalls on so.intClientID equals ccc.intClientID
                                          where so.intClientID == matricula && statusPermitidos.Contains(so.intStatus ?? 1)
                                          orderby so.dteDate descending
                                          select new
                {
                    IdOv = so.intOrderID,
                    Produto = prod.intProductGroup1 ?? -1,
                    StatusOV = so.intStatus.Value,
                    StatusPagamento = so.intStatus2,
                    Ano = c.intYear.Value,
                    Turma = c.intCourseID,
                    Filial = so.intStoreID
                }).Distinct();
                var condicoesAluno    = new List <RegraCondicao>();
                var isAntesDataLimite = Utilidades.IsBeforeDataLimite(idAplicacao, Utilidades.GetYear());
                foreach (var r in perfilAluno)
                {
                    var tipoAno  = GetTipoAno(r.Ano);
                    var statusOv = OrdemVendaEntity.GetRealStatusOv((OrdemVenda.StatusOv)r.StatusOV, (RegraCondicao.tipoAno)tipoAno, matricula, isAntesDataLimite);

                    if (produtosExtensivos.Contains(r.Produto))
                    {
                        ajusteSomenteAula = AjustaChamadoSomenteAula(r.IdOv, matricula);
                    }
                    else
                    {
                        ajusteSomenteAula = new RegraCondicao()
                        {
                            CallCategory = -1, StatusInterno = -1
                        }
                    };

                    var condicaoSomenteAula = new RegraCondicao
                    {
                        ClientId        = matricula,
                        TipoAno         = tipoAno,
                        Produto         = r.Produto,
                        StatusOV        = (int)statusOv,
                        StatusPagamento = r.StatusPagamento ?? -1,
                        StatusInterno   = ajusteSomenteAula.StatusInterno,
                        CallCategory    = ajusteSomenteAula.CallCategory,
                        CourseId        = r.Turma,
                        StoreId         = r.Filial
                    };
                    var ajusteStatusInadimplencia = AjustaChamadoInadimplencia(condicaoSomenteAula, r.IdOv, matricula);
                    condicoesAluno.Add(condicaoSomenteAula);
                }

                if (VerificaDireitoRevalida(matricula, condicoesAluno, isAntesDataLimite, idAplicacao))
                {
                    var condicaoRevalida = new RegraCondicao  //Add ov de Revalida
                    {
                        ClientId        = matricula,
                        TipoAno         = RegraCondicao.tipoAno.Atual,
                        Produto         = 63,
                        StatusOV        = -1,
                        StatusPagamento = -1,
                        StatusInterno   = ajusteSomenteAula.StatusInterno,
                        CallCategory    = ajusteSomenteAula.CallCategory,
                        CourseId        = -1,
                        StoreId         = -1
                    };

                    condicoesAluno.Add(condicaoRevalida);
                }

                listaRegraCondicao = condicoesAluno;

                if (isCacheEnable && listaRegraCondicao != null)
                {
                    var timeoutHour = 1;
                    RedisCacheManager.SetItemObject(key, listaRegraCondicao, TimeSpan.FromHours(timeoutHour));
                }

                return(listaRegraCondicao);
            }
        }