/// <summary> /// ID do beneficiario titular /// </summary> public static Object CarregaTitularID(String contratoNumero, Object operadoraId, PersistenceManager pm) { Object contratoId = Contrato.CarregaContratoID(operadoraId, contratoNumero, pm); if (contratoId == null) { return(null); } return(CarregaTitularID(contratoId, pm)); }
/// <summary> /// Altera o status dos atendimentos para "concluído" e efetiva as ações. /// </summary> /// <param name="atendimentoIDs">Lista de ids de atendimentos a serem processados.</param> public void EfetivaAtendimento(List <String> atendimentoItemIDs) { PersistenceManager pm = new PersistenceManager(); pm.BeginTransactionContext(); Atendimento atendimento; try { IList <AtendimentoItem> itensAtendimento = AtendimentoItem.CarregaAtendimentoItens(atendimentoItemIDs, pm); if (itensAtendimento != null) { Object contratoId = null; String[] arrAux = null, arrAux2 = null; ContratoBeneficiario cb = null; foreach (AtendimentoItem item in itensAtendimento) { item.Status = (Int32)Atendimento.eStatus.Concluido; //true; pm.Save(item); atendimento = new Atendimento(item.AtendimentoId); pm.Load(atendimento); if (eTipoAtendimentoItem.SegundaViaCartao == ((eTipoAtendimentoItem)item.Tipo)) { #region Marca o beneficiário para segunda via de cartao arrAux = item.BeneficiarioIds.Split(','); contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); for (int i = 0; i < arrAux.Length; i++) { //TODO: criar uma sobrecarga que recebe um array de beneficiarioIDs e faz a alteração de forma atomica ContratoBeneficiario.AlteraStatusBeneficiario(contratoId, arrAux[i], ContratoBeneficiario.eStatus.SegundaViaCartaoPendente, pm); } #endregion } if (eTipoAtendimentoItem.CancelamentoContrato == ((eTipoAtendimentoItem)item.Tipo)) { #region Marca o contrato para cancelamento contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); ContratoBeneficiario titular = ContratoBeneficiario.CarregarTitular(contratoId, pm); titular.Status = (Int32)ContratoBeneficiario.eStatus.CancelamentoPendente; pm.Save(titular); #endregion #region Cancela o contrato e adiciona histórico contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); Contrato.AlteraStatusDeContrato(contratoId, true, pm); #endregion } else if (eTipoAtendimentoItem.AdicionarBeneficiarios == ((eTipoAtendimentoItem)item.Tipo)) { #region Adiciona o beneficiario como ContratoBeneficiario NOVO, calcula o novo valor do contrato, a vigencia dele, e atualiza as cobrancas arrAux = item.BeneficiarioIds.Split(','); arrAux2 = item.ParentescoIds.Split(','); DateTime dataAdmissao = atendimento.DataHora; contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); for (int i = 0; i < arrAux.Length; i++) { cb = new ContratoBeneficiario(); cb.Ativo = true; cb.BeneficiarioID = arrAux[i];// bId; cb.ContratoID = contratoId; cb.Data = dataAdmissao; cb.ParentescoID = arrAux2[i]; //obter info da classe atendimento cb.Tipo = (Int32)ContratoBeneficiario.TipoRelacao.Dependente; cb.Status = (Int32)ContratoBeneficiario.eStatus.Novo; cb.NumeroSequencial = ContratoBeneficiario.ProximoNumeroSequencial(contratoId, arrAux[i], pm); pm.Save(cb); } ContratoStatusHistorico.Salvar(atendimento.NumeroContrato, atendimento.OperadoraID, ContratoStatusHistorico.eStatus.BeneficiarioAdicionado, pm); #endregion } else if (eTipoAtendimentoItem.AlteracaoCadastro == ((eTipoAtendimentoItem)item.Tipo)) { #region Marca o ContratoBeneficiario como pendente para ENVIAR para a operadora contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); arrAux = item.BeneficiarioIds.Split(','); foreach (String benefID in arrAux) { cb = ContratoBeneficiario.CarregarPorContratoEBeneficiario(contratoId, benefID, pm); cb.Status = (Int32)ContratoBeneficiario.eStatus.AlteracaoCadastroPendente; pm.Save(cb); } ContratoStatusHistorico.Salvar(atendimento.NumeroContrato, atendimento.OperadoraID, ContratoStatusHistorico.eStatus.BeneficiarioAlterado, pm); #endregion } else if (eTipoAtendimentoItem.CancelarBeneficiarios == ((eTipoAtendimentoItem)item.Tipo)) { #region Marca os beneficiarios para cancelamento contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); arrAux = item.BeneficiarioIds.Split(','); DateTime dataCancelamento = atendimento.DataHora; foreach (String benefID in arrAux) { cb = ContratoBeneficiario.CarregarPorContratoEBeneficiario(contratoId, benefID, pm); cb.Status = (Int32)ContratoBeneficiario.eStatus.ExclusaoPendente; cb.Ativo = false; cb.DataInativacao = dataCancelamento; pm.Save(cb); } ContratoStatusHistorico.Salvar(atendimento.NumeroContrato, atendimento.OperadoraID, ContratoStatusHistorico.eStatus.BeneficiarioCancelado, pm); #endregion } else if (eTipoAtendimentoItem.MudancaDePlano == ((eTipoAtendimentoItem)item.Tipo)) { #region Marca o titular para mudança de plano do contrato contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); cb = ContratoBeneficiario.CarregarTitular(contratoId, pm); cb.Status = (Int32)ContratoBeneficiario.eStatus.MudancaPlanoPendente; pm.Save(cb); ContratoStatusHistorico.Salvar(atendimento.NumeroContrato, atendimento.OperadoraID, ContratoStatusHistorico.eStatus.MudancaDePlano, pm); #endregion #region Altera o plano, calcula novo valor, a vigencia dele, modifica as cobranças //contratoId = Contrato.CarregaContratoID(atendimento.OperadoraID, atendimento.NumeroContrato, pm); Contrato contrato = new Contrato(contratoId); pm.Load(contrato); contrato.PlanoID = item.PlanoId; contrato.TipoAcomodacao = item.AcomodacaoId; pm.Save(contrato); DateTime dataAlteracao = atendimento.DataHora; //Historico de alteracao de planos ContratoPlano cp = new ContratoPlano(); cp.ContratoID = contratoId; cp.PlanoID = item.PlanoId; cp.TipoAcomodacao = item.AcomodacaoId; cp.Data = atendimento.DataHora; pm.Save(cp); //contratoADMid = contrato.ContratoADMID; //CalendarioAdmissaoVigencia.CalculaDatasDeVigenciaEVencimento(contratoADMid, // dataAlteracao, out vigencia, out vencimento, out diaSemJuros, out valorDataLimite, pm); //cobrancas = Cobranca.CarregarTodas(contratoId, pm); //if (cobrancas != null && cobrancas.Count > 0) //{ // foreach (Cobranca cobranca in cobrancas) // { // if (((Cobranca.eTipo)cobranca.Tipo) == Cobranca.eTipo.Dupla || // ((Cobranca.eTipo)cobranca.Tipo) == Cobranca.eTipo.Complementar) // { continue; } // if (cobranca.DataVencimento >= vigencia) // { // cobranca.Valor = Contrato.CalculaValorDaProposta(contratoId, cobranca.DataVencimento, pm); // pm.Save(cobranca); // } // } //} #endregion } } } pm.Commit(); } catch (Exception ex) { pm.Rollback(); throw ex; } finally { pm = null; } }