TFS_ANTIGUO/SInCathay/ULA.Cathay.Credito/ControllersWebApi/IngresoCliente/PropuestaAPIController.cs

345 lines
No EOL
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Data.Entity;
using Ultimus.Utilitarios;
using ULA.Cathay.CreditoModel.Credito;
using ULA.Cathay.Credito.Json;
using Ultimus.Interfaces;
using ULA.Cathay.CreditoModel.DAL.Credito;
using ULA.Cathay.CreditoModel.Entidades;
namespace ULA.Cathay.Credito.ControllersWebApi
{
public class PropuestaAPIController : ApiController
{
UltimusLogs logs = new UltimusLogs("PropuestaAPIController");
[HttpGet]
public JsonSolicitud CargarPropuesta_old(int IDSolicitud, int? IDTipoSolicitante = 1, int? IdCliene = null)
{
JsonSolicitud model = new JsonSolicitud();
try
{
using (CreditoContex db = new CreditoContex())
{
#region Consulta Modelo
model.Solicitud = db.Solicitud.Where(c => c.IdSolicitud == IDSolicitud).FirstOrDefault();
model.Solicitud.ClearVirtualProperties();
if (model.Solicitud != null)
{
model.Solicitud.Oferta = db.Oferta.Where(c => c.IdSolicitud == IDSolicitud).FirstOrDefault();
if (model.Solicitud.Oferta != null)
model.Solicitud.Oferta.ClearVirtualProperties();
model.Solicitud.DetalleRequisitos = db.DetalleRequisitos.Where(c => c.IdSolicitud == IDSolicitud).AsNoTracking().FirstOrDefault();
if (model.Solicitud.DetalleRequisitos != null)
model.Solicitud.DetalleRequisitos.ClearVirtualProperties();
model.Solicitud.Solicitante = db.Solicitante.Where(c => c.IdSolicitud == IDSolicitud).AsNoTracking().ToList();
#region Consulta Modelo Solicitantes
if (model.Solicitud.Solicitante != null)
{
//model.Solicitud.Solicitante.ClearVirtualProperties();
List<TipoDocumento> TiposDocumentos = new List<TipoDocumento>();
TiposDocumentos = db.TipoDocumento.AsNoTracking().ToList();
ICollection<TipoExpedienteDocumentos> TipoExpedienteDocumentos;
TipoExpedienteDocumentos = db.TipoExpedienteDocumentos.AsNoTracking().ToList();
foreach (Solicitante modelSolicitante in model.Solicitud.Solicitante)
{
#region Consulta Modelo Cliente
modelSolicitante.Cliente = db.Cliente.Where(c => c.IdCliente == modelSolicitante.IdCliente).AsNoTracking().FirstOrDefault();
if (modelSolicitante.Cliente != null)
{
modelSolicitante.Cliente.ClearVirtualProperties();
#region Consulta Modelo Bitacora Documentos
modelSolicitante.Cliente.BitacoraDocumentosCliente = db.BitacoraDocumentosCliente.Where(c => c.IdCliente == modelSolicitante.IdCliente).AsNoTracking().ToList();
if (modelSolicitante.Cliente.BitacoraDocumentosCliente != null)
{
// modelSolicitante.Cliente.BitacoraDocumentosCliente.ClearVirtualProperties();
foreach (BitacoraDocumentosCliente modelBitacoraDocumentosCliente in modelSolicitante.Cliente.BitacoraDocumentosCliente)
{
//modelBitacoraDocumentosCliente.TipoDocumento = db.TipoDocumento.Where(c => c.IdTipoDocumento == modelBitacoraDocumentosCliente.IdTipoDocumento).FirstOrDefault(); Steven Rojas
modelBitacoraDocumentosCliente.TipoDocumento = TiposDocumentos.Find(c => c.IdTipoDocumento == modelBitacoraDocumentosCliente.IdTipoDocumento);
if (modelBitacoraDocumentosCliente.TipoDocumento != null)
{
modelBitacoraDocumentosCliente.TipoDocumento.ClearVirtualProperties();
//modelBitacoraDocumentosCliente.TipoDocumento.TipoExpedienteDocumentos = db.TipoExpedienteDocumentos.Where(c => c.IdTipoDocumento == modelBitacoraDocumentosCliente.IdTipoDocumento).ToList(); Steven Rojas
modelBitacoraDocumentosCliente.TipoDocumento.TipoExpedienteDocumentos = TipoExpedienteDocumentos.Where(c => c.IdTipoDocumento == modelBitacoraDocumentosCliente.IdTipoDocumento).ToList();
}
}
}
#endregion
}
#endregion
}
}
#endregion
}
#endregion
//var solicitante = model.Solicitud.Solicitante.Where(c => c.EsPrincipal == true).FirstOrDefault();
model = new EPowerServicioIntegracionAPIController().ObtenerConsultaEpower(model);
model.DetalleDocumento = db.TipoDocumento.Where(c => c.IdTipoDocumento == 37).FirstOrDefault();
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
}
catch (Exception ex)
{
logs.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
}
return model;
}
[HttpPost]
public JsonSolicitud GuardarPropuesta(JsonSolicitud model)
{
DetalleRequisitosDAL RequisistosDAL = new DetalleRequisitosDAL();
BitacoraDocumentosClienteDAL mBitacoraDocumentosClienteDAL = new BitacoraDocumentosClienteDAL();
try
{
using (CreditoContex db = new CreditoContex())
{
var user = model.UltimusUserID.Split('/').Length > 1 ? model.UltimusUserID.Split('/')[1] : model.UltimusUserID;
var ejecutivo = user != null ? db.Ejecutivo.AsNoTracking().Where(c => c.UserId.Trim().ToLower() == user.Trim().ToLower()).FirstOrDefault() : null;
#region PROPUESTA
var Propuesta = model.Solicitud.DetalleRequisitos;
Propuesta.IdSolicitud = model.Solicitud.IdSolicitud;
Propuesta.IdEjecutivo = ejecutivo != null ? (int?)ejecutivo.IdEjecutivo : null;
Propuesta = RequisistosDAL.InsertasActualizar(Propuesta);
#endregion
#region BitacoraDocumentos
//var solicitante = model.Solicitud.Solicitante.Where(c => c.EsPrincipal == true).FirstOrDefault();
foreach (Solicitante solicitante in model.Solicitud.Solicitante)
{
if (solicitante != null && solicitante.Cliente != null && solicitante.Cliente.BitacoraDocumentosCliente != null)
mBitacoraDocumentosClienteDAL.Actualizar(solicitante.Cliente.BitacoraDocumentosCliente.ToList(), null, solicitante.Cliente, model.EliminarPeriodo);
}
#endregion
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
}
catch (Exception ex)
{
logs.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
}
return model;
}
[HttpGet]
public JsonSolicitud CargarPropuesta(int IDSolicitud, int IDTipoSolicitante = 1, string UltimusStep = null)
{
JsonSolicitud model = new JsonSolicitud();
SolicitudDAL SolicitudDal;
OfertaDAL OfertaDal;
SolicitanteDAL SolicitanteDal;
DetalleRequisitosDAL DetalleRequisitosDal;
TipoDocumentoDAL TipoDocumentoDal;
ConsultaEpowerDAL ConsultaEpowerDal;
try
{
SolicitudDal = new SolicitudDAL();
OfertaDal = new OfertaDAL();
SolicitanteDal = new SolicitanteDAL();
DetalleRequisitosDal = new DetalleRequisitosDAL();
TipoDocumentoDal = new TipoDocumentoDAL();
ConsultaEpowerDal = new ConsultaEpowerDAL();
model.Solicitud = SolicitudDal.Obtener(IDSolicitud);
model.Solicitud.Oferta = OfertaDal.ObtenerOfertaSolicitud(IDSolicitud);
model.Solicitud.DetalleRequisitos = DetalleRequisitosDal.Obtener(IDSolicitud);
model.Solicitud.Solicitante = model.Solicitud.Solicitante ?? new List<Solicitante>();
model.ListaClientes = SolicitanteDal.ObtenerTipoSolicitantes(IDSolicitud, IDTipoSolicitante);
model.Solicitud.Solicitante.Add(SolicitanteDal.ObtenerSolicitanteDocumentos(
new Solicitante
{
IdSolicitud = IDSolicitud,
IdTipoSolicitante = IDTipoSolicitante,
IdCliente = (model.ListaClientes != null && model.ListaClientes.Count > 0 ? model.ListaClientes.First().IdCliente : 0)
}));
model.DetalleDocumento = TipoDocumentoDal.Obtener(37);
TipoDocumentoDal.db.Database.Connection.Close();
model.Solicitud = ConsultaEpowerDal.ObtenerRutaConsultaDocumentos(model.Solicitud);
model.TieneCodeudor = SolicitanteDal.VerificaTipoSolicitantes(IDSolicitud, EnumTipoSolicitante.CoDeudor);
model.TieneFiador = SolicitanteDal.VerificaTipoSolicitantes(IDSolicitud, EnumTipoSolicitante.Fiador);
model.TieneAccionistas = SolicitanteDal.VerificaTipoSolicitantes(IDSolicitud, EnumTipoSolicitante.Accionista);
model.VBGerenciaAnalisis = false;
model.VBOficialCumplimiento = false;
model.UltimusStep = UltimusStep;
if (model.ListaClientes != null && model.ListaClientes.Count() > 0)
ValidarRequiereVistoBuenoArea(model, model.ListaClientes.First().IdCliente);
else if (model.Solicitud.Solicitante != null && model.Solicitud.Solicitante.Count() > 0)
ValidarRequiereVistoBuenoArea(model, model.Solicitud.Solicitante.First().IdCliente);
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (Exception ex)
{
logs.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
}
finally
{
SolicitudDal = null;
OfertaDal = null;
SolicitanteDal = null;
DetalleRequisitosDal = null;
TipoDocumentoDal = null;
ConsultaEpowerDal = null;
}
return model;
}
[HttpPost]
public JsonSolicitud CargarBitacoraDocumentosSolicitante(JsonSolicitud model)
{
SolicitanteDAL SolicitanteDal;
ConsultaEpowerDAL ConsultaEpowerDal;
try
{
model = GuardarPropuesta(model);
ConsultaEpowerDal = new ConsultaEpowerDAL();
SolicitanteDal = new SolicitanteDAL();
model.Solicitud.Solicitante = new List<Solicitante>();
model.ListaClientes = SolicitanteDal.ObtenerTipoSolicitantes(model.SolicitanteDocumento.IdSolicitud, model.SolicitanteDocumento.IdTipoSolicitante);
model.Solicitud.Solicitante.Add(SolicitanteDal.ObtenerSolicitanteDocumentos(model.SolicitanteDocumento));
model.Solicitud = ConsultaEpowerDal.ObtenerRutaConsultaDocumentos(model.Solicitud);
if (model.SolicitanteDocumento.IdCliente == 0 && model.ListaClientes != null && model.ListaClientes.Count() > 0)
ValidarRequiereVistoBuenoArea(model, model.ListaClientes.First().IdCliente);
else
ValidarRequiereVistoBuenoArea(model, model.SolicitanteDocumento.IdCliente);
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (Exception ex)
{
logs.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
}
finally
{
SolicitanteDal = null;
ConsultaEpowerDal = null;
}
return model;
}
void ValidarRequiereVistoBuenoArea(JsonSolicitud model, int IdClienteActual)
{
BitacoraDocumentosClienteDAL BitacoraDocumentosClienteDal = new BitacoraDocumentosClienteDAL();
model.VBGerenciaAnalisis = false;
model.VBOficialCumplimiento = false;
if (model.UltimusStep != EnumEtapas.RE_Reco_Dar_Segui) return;
List<VistoBuenoAreaJSON> BitacoraDocumentos = BitacoraDocumentosClienteDal.ValidarRequiereVistoBuenoArea(model.Solicitud.IdSolicitud, IdClienteActual);
model.VBGerenciaAnalisis = BitacoraDocumentos != null && BitacoraDocumentos.Any(c => c.VBGerenciaAnalisis == true);
model.VBOficialCumplimiento = BitacoraDocumentos != null && BitacoraDocumentos.Any(c => c.VBOficialCumplimiento == true);
BitacoraDocumentosClienteDal = null;
BitacoraDocumentos = null;
}
[HttpPost]
public List<VistoBuenoAreaJSON> ValidarDocumentosPendientes(JsonSolicitud model)
{
BitacoraDocumentosClienteDAL BitacoraDocumentosClienteDal;
List<VistoBuenoAreaJSON> BitacoraDocumentos = null;
try
{
BitacoraDocumentosClienteDal = new BitacoraDocumentosClienteDAL();
foreach (Solicitante solicitante in model.Solicitud.Solicitante)
{
if (solicitante != null && solicitante.Cliente != null && solicitante.Cliente.BitacoraDocumentosCliente != null)
BitacoraDocumentosClienteDal.Actualizar(solicitante.Cliente.BitacoraDocumentosCliente.ToList(), null, solicitante.Cliente);
}
BitacoraDocumentos = BitacoraDocumentosClienteDal.ValidarPendientes(model.Solicitud.IdSolicitud, model.ParametrosDocumentosPendientes);
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (Exception ex)
{
logs.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
}
finally
{
}
return BitacoraDocumentos;
}
}
}