public RetornoModel ConfirmarIndicacao(IndicadoModel model) { RetornoModel retorno = new RetornoModel(); retorno = ValidaDados(model); if (retorno.Sucesso) { HistoriaService historiaService = new HistoriaService(); HistoriaMidiaService historiaMidiaService = new HistoriaMidiaService(); Historia historiaTela = model.Historia; Indicado indicadoTela = model.Indicado; model.Historia = historiaService.Carregar(model.Codigo); model.Historia.Midias = historiaMidiaService.Listar(model.Historia.ID, true); model.Responsavel = (model.Historia.CodigoIndicadoResponsavel == model.Codigo); if (model.Historia.ID != historiaTela.ID) { return(new RetornoModel() { Sucesso = false, Mensagem = "Você não pode manipular um ID diferente do seu código." }); } model.Historia.ComentarioIndicado = historiaTela.ComentarioIndicado; if (model.Responsavel) { if ((model.Historia.IndicadoAprovacaoOriginal != enumAprovacao.aprovado) || (model.Historia.IndicadoAprovacaoResponsavel != enumAprovacao.pendente)) { return(new RetornoModel { Mensagem = "Não existe nenhuma pendência vinculada a este código.", Sucesso = false }); } model.Historia.ComentarioIndicadoResponsavel = historiaTela.ComentarioIndicado; } else { if (model.Historia.IndicadoAprovacaoOriginal != enumAprovacao.pendente) { return(new RetornoModel { Mensagem = "Não existe nenhuma pendência vinculada a este código.", Sucesso = false }); } model.Historia.ComentarioIndicadoOriginal = historiaTela.ComentarioIndicado; } if (historiaTela.Midias != null) { if (model.Historia.Midias == null) { model.Historia.Midias = new List <HistoriaMidia>(); } foreach (var htm in historiaTela.Midias) { if (htm.ID == 0) { htm.AdicionadoOrigem = ((model.Responsavel) ? enumAlteracaoOrigem.IndicadoResponsavel : enumAlteracaoOrigem.Indicado); htm.InativoOrigem = enumAlteracaoOrigem.Nenhum; htm.DataCadastro = DateTime.Now; htm.HistoriaID = model.Historia.ID; htm.ArquivoTipo = htm.ArquivoTipo; model.Historia.Midias.Add(htm); historiaMidiaService.Salvar(htm); } else if (htm.Inativo) { var midia = model.Historia.Midias.FirstOrDefault(t => t.ID == htm.ID); if (midia != null) { midia.InativoOrigem = ((model.Responsavel) ? enumAlteracaoOrigem.IndicadoResponsavel : enumAlteracaoOrigem.Indicado); midia.Inativo = true; historiaMidiaService.Salvar(midia); model.Historia.Midias.Remove(midia); } } } } if (model.Responsavel) { model.Indicado = dal.Carregar(model.Historia.IndicadoID.Value); if (model.Indicado.ID != indicadoTela.ID) { return(new RetornoModel() { Sucesso = false, Mensagem = "Você não pode manipular um ID diferente do seu código" }); } ConfirmarIndicacaoUpdateIndicado(indicadoTela, model.Indicado); model.Historia.TriagemAprovacao = enumAprovacao.pendente; model.Historia.TriagemAprovacaoNormal = enumAprovacao.pendente; model.Historia.IndicadoAprovacaoResponsavel = enumAprovacao.aprovado; model.Historia.IndicadoAprovacao = enumAprovacao.aprovado; model.Historia.AlteracaoOrigem = enumAlteracaoOrigem.IndicadoResponsavel; model.Indicado.AlteracaoOrigem = enumAlteracaoOrigem.IndicadoResponsavel; } else { if (model.Estrangeiro) { // Salva o RNE no DocumentoNumero e o Passaport no DocumentoNumeroComplemento indicadoTela.DocumentoTipoID = enumDocumentoTipoNome.outro; } else { indicadoTela.DocumentoTipoID = enumDocumentoTipoNome.cpf; } model.Indicado = CarregarIndicadoPorDocumento(indicadoTela); model.Historia.AlteracaoOrigem = enumAlteracaoOrigem.Indicado; if (model.Indicado == null) { model.Indicado = indicadoTela; model.Indicado.DataCadastro = DateTime.Now; } else { ConfirmarIndicacaoUpdateIndicado(indicadoTela, model.Indicado); } model.Indicado.AlteracaoOrigem = enumAlteracaoOrigem.Indicado; if (MenorIdade(model.Indicado)) { model.Historia.TriagemAprovacao = enumAprovacao.semNecessidade; model.Historia.TriagemAprovacaoNormal = enumAprovacao.semNecessidade; model.Historia.IndicadoAprovacaoResponsavel = enumAprovacao.pendente; model.Historia.IndicadoAprovacaoOriginal = enumAprovacao.aprovado; model.Historia.IndicadoAprovacao = enumAprovacao.pendente; model.Historia.CodigoIndicadoResponsavel = historiaService.GeraCodigo(); //zera os dados do robo para disparo para o responsavel model.Historia.DataEmailAguardandoAprovacao = DateTime.Now; model.Historia.QuantidadeEmailAguardandoAprovacao = 0; } else // indicado maior de idade { model.Historia.TriagemAprovacao = enumAprovacao.pendente; model.Historia.TriagemAprovacaoNormal = enumAprovacao.pendente; model.Historia.IndicadoAprovacaoResponsavel = enumAprovacao.semNecessidade; model.Historia.IndicadoAprovacaoOriginal = enumAprovacao.aprovado; model.Historia.IndicadoAprovacao = enumAprovacao.aprovado; } } //calculando cidade onde irá carregar a tocha CidadeParticipanteService cpService = new CidadeParticipanteService(); model.Indicado.CidadeParticipanteID = cpService.CarregarPorCidade(model.Indicado.CidadeID).ID; model.Indicado.DataModificacao = DateTime.Now; model.Historia.DataModificacao = DateTime.Now; if (!String.IsNullOrEmpty(model.Indicado.FotoArquivoNome)) { model.IndicadoFotoInfo.file = model.Indicado.FotoArquivoNome; model.Indicado.FotoArquivoNome = GerarFotoArquivoNome(model.IndicadoFotoInfo); } //insere Indicado no banco se nao existir com mesmo documento senao atualiza if (model.Responsavel) { SalvarResponsavelAprovacao(model.Indicado); } else { model.Indicado.ID = SalvarConfirmarIndicacaoIndicado(model.Indicado); } model.Historia.IndicadoID = model.Indicado.ID; historiaService.Salvar(model.Historia); try { //enviar emails if (model.Responsavel) { EnviarEmailsConfirmacaoResponsavel(model); } else { EnviarEmailsConfirmacaoIndicado(model); } } catch (Exception ex) { LogUtil.Error(ex); } } else { return(retorno); } return(new RetornoModel { Sucesso = true, Mensagem = "Ok" }); }
public RetornoModel <IndicadoModel> CarregarConfirmarIndicacao(string Codigo) { IndicadoModel model = new IndicadoModel(); HistoriaService sc = new HistoriaService(); HistoriaMidiaService scMidia = new HistoriaMidiaService(); model.Codigo = Codigo; model.Historia = sc.Carregar(Codigo); //buscando historia a partir do codigo do indicado OU RESPONSAVEL if (model.Historia == null) // se a historia existe, monta o model { return(new RetornoModel <IndicadoModel> { Mensagem = "Código inválido!", Sucesso = false }); } model.Historia.Midias = scMidia.Listar(model.Historia.ID, true); model.Responsavel = (Codigo == model.Historia.CodigoIndicadoResponsavel); if (model.Responsavel) { if ((model.Historia.IndicadoAprovacaoOriginal != enumAprovacao.aprovado) || (model.Historia.IndicadoAprovacaoResponsavel != enumAprovacao.pendente)) { string mensagem = "Não existe nenhuma pendência vinculada a este código."; if (model.Historia.IndicadoAprovacaoResponsavel == enumAprovacao.aprovado) { mensagem = "Essa indicação já foi aprovada."; } else if (model.Historia.IndicadoAprovacaoResponsavel == enumAprovacao.naoAprovado) { mensagem = "Essa indicação já foi recusada."; } return(new RetornoModel <IndicadoModel> { Mensagem = mensagem, Sucesso = false }); } model.Indicado = dal.Carregar(model.Historia.IndicadoID.Value); model.Estrangeiro = (model.Indicado.DocumentoTipoID != enumDocumentoTipoNome.cpf); model.Indicado.UsuarioID = 0; } else { if (model.Historia.IndicadoAprovacaoOriginal != enumAprovacao.pendente) { string mensagem = "Não existe nenhuma pendência vinculada a este código."; if (model.Historia.IndicadoAprovacaoOriginal == enumAprovacao.aprovado) { mensagem = "Essa indicação já foi aprovada."; } else if (model.Historia.IndicadoAprovacaoOriginal == enumAprovacao.naoAprovado) { mensagem = "Essa indicação já foi recusada."; } return(new RetornoModel <IndicadoModel> { Mensagem = mensagem, Sucesso = false }); } model.Indicado = new Indicado(); model.Indicado.Nome = model.Historia.IndicadoNome; model.Indicado.Email = model.Historia.IndicadoEmail; } model.Historia.CodigoIndicado = null; model.Historia.CodigoIndicadoResponsavel = null; HistoriaCategoriaService categoriaService = new HistoriaCategoriaService(); model.Categoria = categoriaService.Carregar(model.Historia.HistoriaCategoriaID); //buscando os estados EstadoService service = new EstadoService(); model.Estados = service.Listar(); ParentescoService parentescoService = new ParentescoService(); model.Parentesco = parentescoService.Listar(true); model.IndicadoFotoInfo = CarregarFotoInfo(model.Indicado.FotoArquivoNome); if (model.IndicadoFotoInfo == null) { model.IndicadoFotoInfo = new UploadFotoModel(); } return(new RetornoModel <IndicadoModel> { Retorno = model, Mensagem = "Código confirmado com sucesso!", Sucesso = true }); }