Exemple #1
0
        private object AjustaChamadoInadimplencia(RegraCondicao condicao, int idOv, int matricula)
        {
            if (condicao.StatusInterno != -1)
            {
                return(condicao);
            }
            var retorno = condicao;

            using (var ctx = new DesenvContext())
            {
                var chamado = (from cc in ctx.tblCallCenterCalls
                               join cci in ctx.tblCallCenterCallsInadimplencia on cc.intCallCenterCallsID equals cci.intCallCenterCallsID
                               where (Constants.INADIMPLENCIA_CHAMADOS_PRIMEIROAVISO.Contains(cc.intStatusInternoID ?? 0) ||
                                      Constants.INADIMPLENCIA_CHAMADO_AVISOBLOQUEIO == cc.intStatusInternoID) &&
                               cc.intStatusID != 7 &&
                               cc.intClientID == matricula &&
                               cci.intOrderID == idOv &&
                               cc.dteOpen.Year == DateTime.Now.Year &&
                               cc.dteOpen.Month == DateTime.Now.Month
                               orderby cc.dteOpen descending
                               select cc).FirstOrDefault();
                if (chamado != null)
                {
                    retorno.StatusInterno = chamado.intStatusInternoID ?? 0;
                    return(AjustaValidadeChamadoInadimplencia(retorno, matricula, idOv));
                }
            }

            return(retorno);
        }
        public int SetCondicao(RegraCondicao regraCondicao)
        {
            using (var ctx = new DesenvContext())
            {
                var condicaoCriada = 0;
                var c = new tblAccess_Detail()
                {
                    txtDescricao       = regraCondicao.Descricao,
                    intProductGroupId  = regraCondicao.Produto,
                    intTipoAnoId       = (int)regraCondicao.TipoAno,
                    intStatusOV        = regraCondicao.StatusOV,
                    intStatusPagamento = regraCondicao.StatusPagamento,
                    intCallCategory    = regraCondicao.CallCategory,
                    intStatusInterno   = regraCondicao.StatusInterno,
                    intClientId        = regraCondicao.ClientId,
                    dteUltimaAlteracao = DateTime.Now,
                    intEmployeeID      = regraCondicao.EmployeeId,
                    bitAtivo           = regraCondicao.Ativo
                };

                ctx.tblAccess_Detail.Add(c);
                ctx.SaveChanges();
                condicaoCriada = c.intDetalheId;

                return(condicaoCriada);
            }
        }
Exemple #3
0
        public List <RegraCondicao> GetCondicoesAlunoChamados(int matricula)
        {
            using (var ctx = new DesenvContext())
            {
                var perfilAluno = (from ccc in ctx.tblCallCenterCalls
                                   join d in ctx.tblAccess_Detail on ccc.intStatusInternoID equals d.intStatusInterno
                                   where ccc.intClientID == matricula &&
                                   ccc.intStatusID != (int)ChamadoCallCenter.StatusChamado.Excluido
                                   select new
                {
                    //Data = ccc.dteOpen,
                    StatusInterno = ccc.intStatusInternoID ?? -1,
                    CallCategory = ccc.intCallCategoryID
                }).Distinct().ToList();

                var lCondicoes = new List <RegraCondicao>();
                foreach (var r in perfilAluno)
                {
                    var condicao = new RegraCondicao
                    {
                        TipoAno         = RegraCondicao.tipoAno.Todos,
                        Produto         = -1,
                        StatusOV        = -1,
                        StatusPagamento = -1,
                        StatusInterno   = r.StatusInterno,
                        CallCategory    = r.CallCategory
                    };

                    var condicaoAjustada = AjustaValidadeChamadoInadimplencia(condicao, matricula);

                    lCondicoes.Add(condicaoAjustada);
                }
                return(lCondicoes);
            }
        }
Exemple #4
0
        public RegraCondicao AjustaChamadoSomenteAula(int idOv, int matricula)
        {
            try
            {
                using (var ctx = new DesenvContext())
                {
                    var chamado = ctx.tblCallCenterCalls.Where(c => c.intClientID == matricula && c.intStatusInternoID == 8037).FirstOrDefault();

                    var retorno = new RegraCondicao();

                    if (chamado == null || chamado.dteOpen.Year != DateTime.Now.Year)
                    {
                        return retorno = new RegraCondicao()
                        {
                                   CallCategory  = -1,
                                   StatusInterno = -1
                        }
                    }
                    ;
                    else
                    {
                        var oV = ctx.tblSellOrders.Where
                                     (so => so.intOrderID == idOv).FirstOrDefault();

                        if (Convert.ToDateTime(oV.dteDate).Year != chamado.dteOpen.Year)
                        {
                            return retorno = new RegraCondicao()
                            {
                                       CallCategory  = -1,
                                       StatusInterno = -1
                            }
                        }
                        ;

                        if (oV.dteDate < chamado.dteOpen)
                        {
                            return retorno = new RegraCondicao()
                            {
                                       CallCategory  = 171,
                                       StatusInterno = 8037
                            }
                        }
                        ;
                        else
                        {
                            return retorno = new RegraCondicao()
                            {
                                       CallCategory  = -1,
                                       StatusInterno = -1
                            }
                        };
                    }
                }
            }
            catch
            {
                throw;
            }
        }
        public List <RegraCondicao> GetCondicoesAlunoChamados(int matricula)
        {
            var isCacheEnable = !RedisCacheManager.CannotCache(RedisCacheConstants.Access.KeyGetCondicoesAlunoChamados);
            var key           = isCacheEnable ? RedisCacheManager.GenerateKey(RedisCacheConstants.Access.KeyGetCondicoesAlunoChamados, matricula) : null;
            List <RegraCondicao> listaRegraCondicao = isCacheEnable ? RedisCacheManager.GetItemObject <List <RegraCondicao> >(key) : null;

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

            using (var ctx = new DesenvContext())
            {
                var perfilAluno = (from ccc in ctx.tblCallCenterCalls
                                   join d in ctx.tblAccess_Detail on ccc.intStatusInternoID equals d.intStatusInterno
                                   where ccc.intClientID == matricula &&
                                   ccc.intStatusID != (int)ChamadoCallCenter.StatusChamado.Excluido
                                   select new
                {
                    //Data = ccc.dteOpen,
                    StatusInterno = ccc.intStatusInternoID ?? -1,
                    CallCategory = ccc.intCallCategoryID
                }).Distinct().ToList();

                var lCondicoes = new List <RegraCondicao>();
                foreach (var r in perfilAluno)
                {
                    var condicao = new RegraCondicao
                    {
                        TipoAno         = RegraCondicao.tipoAno.Todos,
                        Produto         = -1,
                        StatusOV        = -1,
                        StatusPagamento = -1,
                        StatusInterno   = r.StatusInterno,
                        CallCategory    = r.CallCategory
                    };

                    var condicaoAjustada = AjustaValidadeChamadoInadimplencia(condicao, matricula);

                    lCondicoes.Add(condicaoAjustada);
                }

                listaRegraCondicao = lCondicoes;

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

                return(listaRegraCondicao);
            }
        }
Exemple #6
0
        public List <ProdutoEmpresa> GetProdutosEmpresa(RegraCondicao condicaoDaRegra)
        {
            using (var ctx = new DesenvContext())
            {
                var produtos = (from pe in ctx.tblAccess_ProdutoEmpresas
                                join e in ctx.tblAccess_Empresas on pe.intEmpresaId equals e.intEmpresaId
                                where condicaoDaRegra.EmpresaId == pe.intEmpresaId
                                select new ProdutoEmpresa()
                {
                    EmpresaId = e.intEmpresaId,
                    ProdutoId = pe.intProductGroupId,
                }).ToList();


                return(produtos);
            }
        }
Exemple #7
0
        public RegraCondicao AjustaChamadoPrimeiroAviso(RegraCondicao condicao, int matricula, int ov = 0)
        {
            var condicaoretorno = condicao;

            using (var ctx = new DesenvContext())
            {
                //var chamado = ctx.tblCallCenterCallsInadimplencia.Where(o => o.intOrderID == ov).OrderByDescending(o => o.intCallCenterInadimplenciaID).FirstOrDefault();

                //var chamado = (from ccIn in ctx.tblCallCenterCallsInadimplencia
                //               join cc in ctx.tblCallCenterCalls on ccIn.intCallCenterCallsID equals cc.intCallCenterCallsID
                //               where (ov != 0 && ccIn.intOrderID == ov && cc.intCallCategoryID == 2277)
                //               select new
                //               {
                //                   id = ccIn.intCallCenterCallsID
                //               }).FirstOrDefault();


                //var objCcc = ctx.tblCallCenterCalls.Where(x => x.intStatusInternoID == condicao.StatusInterno && x.intStatusID != 7 && x.intCallCenterCallsID == chamado.id).FirstOrDefault();

                var objCcc = (from cc in ctx.tblCallCenterCalls
                              join ci in ctx.tblCallCenterCallsInadimplencia on cc.intCallCenterCallsID equals ci.intCallCenterCallsID
                              where cc.intStatusInternoID == condicao.StatusInterno && cc.intStatusID != 7 && ((ov == 0 && cc.intClientID == matricula) || ci.intOrderID == ov) && cc.intCallCategoryID == 2277
                              select new
                {
                    dteDataPrevisao2 = cc.dteDataPrevisao2
                }).FirstOrDefault();

                var HasChamadoInadimplenciaVencido = false;

                if ((objCcc != null && objCcc.dteDataPrevisao2 != null) && objCcc.dteDataPrevisao2 < DateTime.Now.Date)
                {
                    HasChamadoInadimplenciaVencido = true;
                }

                //var HasChamadoInadimplenciaVencido = ctx.tblCallCenterCalls.Where(x => x.intStatusInternoID == condicao.StatusInterno && x.intStatusID != 7 && x.dteDataPrevisao2 < DateTime.Now.Date).Any();
                if (HasChamadoInadimplenciaVencido)
                {
                    condicaoretorno.StatusInterno = Constants.INADIMPLENCIA_CHAMADO_AVISOBLOQUEIO;
                }
            }
            return(condicaoretorno);
        }
Exemple #8
0
        private RegraCondicao AjustaChamadoBloqueio(RegraCondicao condicao, int matricula)
        {
            var condicaoretorno = condicao;

            using (var ctx = new DesenvContext())
            {
                var HasPrimeiroAviso = ctx.tblCallCenterCalls.Where(x => Constants.INADIMPLENCIA_CHAMADOS_PRIMEIROAVISO.Contains(x.intStatusInternoID ?? 0) &&
                                                                    x.intStatusID != 7 &&
                                                                    x.intClientID == matricula &&
                                                                    (x.dteDataPrevisao2.Value) < DateTime.Now
                                                                    ).Any();


                if (!HasPrimeiroAviso)
                {
                    condicaoretorno.StatusInterno = -1;
                }
            }
            return(condicaoretorno);
        }
Exemple #9
0
        public RegraCondicao AjustaValidadeChamadoInadimplencia(RegraCondicao condicao, int matricula, int ov = 0)
        {
            var condicaoretorno        = condicao;
            var isChamadoPrimeiroAviso = Constants.INADIMPLENCIA_CHAMADOS_PRIMEIROAVISO.Contains(condicao.StatusInterno);
            var isChamadoBloqueio      = Constants.INADIMPLENCIA_CHAMADO_AVISOBLOQUEIO.Equals(condicao.StatusInterno);

            if (!isChamadoPrimeiroAviso && !isChamadoBloqueio)
            {
                return(condicaoretorno);
            }
            if (isChamadoPrimeiroAviso)
            {
                return(AjustaChamadoPrimeiroAviso(condicao, matricula, ov));
            }
            if (isChamadoBloqueio)
            {
                return(AjustaChamadoBloqueio(condicao, matricula));
            }

            return(condicaoretorno);
        }
Exemple #10
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);
            }
        }
Exemple #11
0
 public bool AlunoPreencheCondicao(List <RegraCondicao> condicoesPreenchidasPeloAluno, RegraCondicao condicaoDaRegra)
 {
     foreach (var condicaoDoAluno in condicoesPreenchidasPeloAluno)
     {
         if (_accessEntity.IsCondicaoNaRegra(condicaoDoAluno, condicaoDaRegra))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #12
0
        public bool IsCondicaoNaRegra(RegraCondicao condicao, RegraCondicao condicaoDaRegra)
        {
            var isStatusInterno = (condicaoDaRegra.StatusInterno.Equals(-1)) ? true : condicao.StatusInterno == condicaoDaRegra.StatusInterno;

            if (!isStatusInterno)
            {
                return(false);
            }

            var isTipoAno = (condicaoDaRegra.TipoAno.Equals((RegraCondicao.tipoAno)(-1))) ? true : condicao.TipoAno == condicaoDaRegra.TipoAno;

            if (!isTipoAno)
            {
                return(false);
            }

            var isProduto = (condicaoDaRegra.Produto.Equals(-1)) ? true : condicao.Produto == condicaoDaRegra.Produto;

            if (!isProduto)
            {
                return(false);
            }

            var isStatusOV = (condicaoDaRegra.StatusOV.Equals(-1)) ? true : condicao.StatusOV == condicaoDaRegra.StatusOV;

            if (!isStatusOV)
            {
                return(false);
            }

            var isStatusPagamento = (condicaoDaRegra.StatusPagamento.Equals(-1)) ? true : condicao.StatusPagamento == condicaoDaRegra.StatusPagamento;

            if (!isStatusPagamento)
            {
                return(false);
            }

            var isCliente = (condicaoDaRegra.ClientId.Equals(-1)) ? true : condicao.ClientId == condicaoDaRegra.ClientId;

            if (!isCliente)
            {
                return(false);
            }

            var isCallCategory = (condicaoDaRegra.CallCategory.Equals(-1)) ? true : condicao.CallCategory == condicaoDaRegra.CallCategory;

            if (!isCallCategory)
            {
                return(false);
            }

            var isStore = (condicaoDaRegra.StoreId.Equals(-1)) ? true : condicao.StoreId == condicaoDaRegra.StoreId;

            if (!isStore)
            {
                return(false);
            }

            var isCourse = (condicaoDaRegra.CourseId.Equals(-1)) ? true : condicao.CourseId == condicaoDaRegra.CourseId;

            if (!isCourse)
            {
                return(false);
            }

            var isClienteGrupo = (condicaoDaRegra.GroupId.Equals(-1)) ? true : condicaoDaRegra.ListGroupClientId.Contains(condicao.ClientId);

            if (!isClienteGrupo)
            {
                return(false);
            }

            var isOVMinimaPermitida = condicaoDaRegra.AnoMinimo.Equals(-1) ? true : condicao.AnoOV >= condicaoDaRegra.AnoMinimo;

            if (!isOVMinimaPermitida)
            {
                return(false);
            }

            return(true);
        }
Exemple #13
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);
            }
        }