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); } }
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); } }
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); } }
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); } }
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); }
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); }
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); }
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); } }
public bool AlunoPreencheCondicao(List <RegraCondicao> condicoesPreenchidasPeloAluno, RegraCondicao condicaoDaRegra) { foreach (var condicaoDoAluno in condicoesPreenchidasPeloAluno) { if (_accessEntity.IsCondicaoNaRegra(condicaoDoAluno, condicaoDaRegra)) { return(true); } } return(false); }
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); }
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); } }