450 lines
17 KiB
C#
450 lines
17 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ULA.Cathay.CreditoModel.Credito;
|
|
using Ultimus.Interfaces;
|
|
using Ultimus.Utilitarios;
|
|
using System.Data.Entity;
|
|
using System.Data.Entity.Validation;
|
|
using ULA.Cathay.CreditoModel.Entidades;
|
|
|
|
namespace ULA.Cathay.CreditoModel.DAL.Credito
|
|
{
|
|
public class SolicitanteDAL
|
|
{
|
|
private UltimusLogs logger = new UltimusLogs("SolicitanteDAL");
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="IdSolicitud"></param>
|
|
/// <returns></returns>
|
|
public List<Solicitante> Obtener(int IdSolicitud)
|
|
{
|
|
List<Solicitante> listaSolicitante = new List<Solicitante>();
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
listaSolicitante = (db.Solicitante.Where(x => x.IdSolicitud == IdSolicitud)
|
|
.Include(e => e.Cliente)
|
|
.Include(e => e.TipoSolicitante)
|
|
.Include(e => e.Cliente.TipoIdentificacion)
|
|
.Include(e => e.Cliente.TipoFuenteIngreso)
|
|
.Include(e => e.Cliente.TipoTramite)
|
|
.Include(e => e.Cliente.ClasificacionCliente)
|
|
.Include(e => e.Cliente.TipoCliente)
|
|
.Include(e => e.Cliente.Ejecutivo)
|
|
.Include(e => e.Cliente.EmailCliente)
|
|
.Include(e => e.Solicitud.Oferta)
|
|
.Include(e => e.Solicitud.DetalleRequisitos)
|
|
.Include(e => e.Solicitud.Oferta.OfertaFacilidades)
|
|
).ToList();
|
|
|
|
foreach (var lista in listaSolicitante)
|
|
{
|
|
if (lista.TipoSolicitante != null)
|
|
lista.TipoSolicitante.ClearVirtualProperties();
|
|
|
|
if (lista.Cliente != null)
|
|
{
|
|
if (lista.Cliente.TipoIdentificacion != null)
|
|
lista.Cliente.TipoIdentificacion.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoFuenteIngreso != null)
|
|
lista.Cliente.TipoFuenteIngreso.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoTramite != null)
|
|
lista.Cliente.TipoTramite.ClearVirtualProperties();
|
|
if (lista.Cliente.ClasificacionCliente != null)
|
|
lista.Cliente.ClasificacionCliente.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoCliente != null)
|
|
lista.Cliente.TipoCliente.ClearVirtualProperties();
|
|
if (lista.Cliente.Ejecutivo != null)
|
|
lista.Cliente.Ejecutivo.ClearVirtualProperties();
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
|
|
}
|
|
|
|
return listaSolicitante;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Obtiene la informacion basica de los clientes enlazados como solicitantes en la solicitud
|
|
/// Importante: La informacion adicional que se requiera debe obtenida con los respectivos metodos de los diferentes DAL. NO POR INCLUIDE
|
|
/// </summary>
|
|
/// <param name="IdSolicitud">Numero de la solicitud</param>
|
|
/// <returns></returns>
|
|
public List<Solicitante> ObtenerSolicitantes(int IdSolicitud)
|
|
{
|
|
List<Solicitante> listaSolicitante = new List<Solicitante>();
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
listaSolicitante = (db.Solicitante
|
|
.Where(x => x.IdSolicitud == IdSolicitud)
|
|
.Include(e => e.Cliente)
|
|
.Include(e => e.TipoSolicitante)
|
|
.Include(e => e.Cliente.TipoIdentificacion)
|
|
.Include(e => e.Cliente.TipoFuenteIngreso)
|
|
.Include(e => e.Cliente.TipoTramite)
|
|
.Include(e => e.Cliente.ClasificacionCliente)
|
|
.Include(e => e.Cliente.TipoCliente)
|
|
.Include(e => e.Cliente.Ejecutivo)
|
|
).ToList();
|
|
}
|
|
|
|
|
|
foreach (var lista in listaSolicitante)
|
|
{
|
|
if (lista.TipoSolicitante != null)
|
|
lista.TipoSolicitante.ClearVirtualProperties();
|
|
|
|
if (lista.Cliente != null)
|
|
{
|
|
if (lista.Cliente.TipoIdentificacion != null)
|
|
lista.Cliente.TipoIdentificacion.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoFuenteIngreso != null)
|
|
lista.Cliente.TipoFuenteIngreso.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoTramite != null)
|
|
lista.Cliente.TipoTramite.ClearVirtualProperties();
|
|
if (lista.Cliente.ClasificacionCliente != null)
|
|
lista.Cliente.ClasificacionCliente.ClearVirtualProperties();
|
|
if (lista.Cliente.TipoCliente != null)
|
|
lista.Cliente.TipoCliente.ClearVirtualProperties();
|
|
if (lista.Cliente.Ejecutivo != null)
|
|
lista.Cliente.Ejecutivo.ClearVirtualProperties();
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return listaSolicitante;
|
|
}
|
|
|
|
public Solicitante ObteneCliente(int IdSolicitud)
|
|
{
|
|
Solicitante ObjSolicitante = new Solicitante();
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
ObjSolicitante = (db.Solicitante
|
|
.Where(x => x.IdSolicitud == IdSolicitud && x.EsPrincipal == true)
|
|
.Include(e => e.Cliente)
|
|
).FirstOrDefault();
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw ex;
|
|
|
|
}
|
|
return ObjSolicitante;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="IdCliente"></param>
|
|
/// <returns></returns>
|
|
public Solicitante ObtenerIdCliente(int IdCliente)
|
|
{
|
|
Solicitante ObjSolicitante = new Solicitante(); ;
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
ObjSolicitante = (db.Solicitante
|
|
.Where(x => x.IdCliente == IdCliente)
|
|
.Include(e => e.Cliente)
|
|
.Include(e => e.Cliente.TipoIdentificacion)
|
|
.Include(e => e.Cliente.TipoFuenteIngreso)
|
|
.Include(e => e.Cliente.TipoTramite)
|
|
.Include(e => e.Cliente.ClasificacionCliente)
|
|
.Include(e => e.Cliente.TipoCliente)
|
|
.Include(e => e.Cliente.Ejecutivo)
|
|
).FirstOrDefault();
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw ex;
|
|
|
|
}
|
|
return ObjSolicitante;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public BaseJson InsertarActualizar(Solicitante model)
|
|
{
|
|
Solicitante ModeloActual = new Solicitante();
|
|
TipoSolicitante TipoSolicitante = null;
|
|
BaseJson ValorRetorno = new BaseJson();
|
|
bool ChangeTipoSolicitante = false;
|
|
bool Exist = false;
|
|
|
|
try
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
|
|
|
|
if (model.TipoSolicitante != null)
|
|
TipoSolicitante = model.TipoSolicitante;
|
|
|
|
model.TipoSolicitante = null;
|
|
model.Cliente = null;
|
|
model.Solicitud = null;
|
|
|
|
using (CreditoContex Conn = new CreditoContex())
|
|
{
|
|
if (TipoSolicitante != null)
|
|
ChangeTipoSolicitante = (model.IdTipoSolicitante != TipoSolicitante.IdTipoSolicitante);
|
|
|
|
|
|
Exist = Conn.Solicitante.Where(q => q.IdSolicitud == model.IdSolicitud && q.IdCliente == model.IdCliente && q.IdTipoSolicitante == model.IdTipoSolicitante).Any();
|
|
|
|
if (ChangeTipoSolicitante && Exist)
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
ValorRetorno.DescripcionRespuesta = "Ya existe un registro del cliente bajo el tipo de participación seleccionado";
|
|
return ValorRetorno;
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ChangeTipoSolicitante)
|
|
{
|
|
|
|
ModeloActual = Conn.Solicitante.Where(q => q.IdSolicitud == model.IdSolicitud && q.IdCliente == model.IdCliente && q.IdTipoSolicitante == TipoSolicitante.IdTipoSolicitante).FirstOrDefault();
|
|
if (ModeloActual != null)
|
|
{
|
|
Conn.Solicitante.Remove(ModeloActual);
|
|
Conn.SaveChanges();
|
|
ModeloActual = null;
|
|
}
|
|
}
|
|
else
|
|
ModeloActual = Conn.Solicitante.Where(q => q.IdSolicitud == model.IdSolicitud && q.IdCliente == model.IdCliente && q.IdTipoSolicitante == model.IdTipoSolicitante).FirstOrDefault();
|
|
|
|
|
|
|
|
if (ModeloActual == null)
|
|
{
|
|
model.FechaCreacion = DateTime.Now;
|
|
Conn.Solicitante.Add(model);
|
|
}
|
|
else
|
|
{
|
|
model.FechaModificacion = DateTime.Now;
|
|
model.UsuarioModificado = model.UsuarioCreador;
|
|
model.FechaCreacion = ModeloActual.FechaCreacion;
|
|
model.UsuarioCreador = ModeloActual.UsuarioCreador;
|
|
Conn.Entry(ModeloActual).State = System.Data.Entity.EntityState.Detached;
|
|
Conn.Solicitante.Attach(model);
|
|
Conn.Entry(model).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
Conn.SaveChanges();
|
|
|
|
if (TipoSolicitante != null)
|
|
model.TipoSolicitante = TipoSolicitante;
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
ValorRetorno.DescripcionRespuesta = exs.Message;
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
ValorRetorno.DescripcionRespuesta = ex.Message;
|
|
logger.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
ModeloActual = null;
|
|
}
|
|
|
|
return ValorRetorno;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public BaseJson Eliminar(Solicitante model)
|
|
{
|
|
Solicitante ModeloActual = new Solicitante();
|
|
|
|
BaseJson ValorRetorno = new BaseJson();
|
|
|
|
try
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
|
|
model.TipoSolicitante = null;
|
|
model.Cliente = null;
|
|
model.Solicitud = null;
|
|
|
|
using (CreditoContex Conn = new CreditoContex())
|
|
{
|
|
ModeloActual = Conn.Solicitante.Where(q => q.IdSolicitud == model.IdSolicitud && q.IdCliente == model.IdCliente && q.IdTipoSolicitante == model.IdTipoSolicitante).FirstOrDefault();
|
|
|
|
if (ModeloActual != null)
|
|
{
|
|
Conn.Solicitante.Remove(ModeloActual);
|
|
Conn.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
|
|
logger.Error(ex);
|
|
}
|
|
finally
|
|
{
|
|
ModeloActual = null;
|
|
}
|
|
|
|
return ValorRetorno;
|
|
}
|
|
|
|
|
|
public Solicitante ObtenerSolicitanteDocumentos(Solicitante model)
|
|
{
|
|
Solicitante ObjSolicitante = new Solicitante();
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
|
|
ObjSolicitante = db.Solicitante
|
|
.Include("Cliente.BitacoraDocumentosCliente.TipoDocumento")
|
|
.Include("Cliente.BitacoraDocumentosCliente.TipoDocumento.TipoExpedienteDocumentos.TipoExpediente")
|
|
.Include("Cliente.BitacoraDocumentosCliente.TipoDocumento.TipoDocumentoEpower")
|
|
.AsNoTracking()
|
|
.FirstOrDefault(x => x.IdSolicitud == model.IdSolicitud
|
|
&& ((model.IdCliente > 0 && x.IdCliente == model.IdCliente)
|
|
|| (model.IdCliente == 0 && x.IdTipoSolicitante == model.IdTipoSolicitante)
|
|
));
|
|
|
|
}
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw ex;
|
|
|
|
}
|
|
return ObjSolicitante;
|
|
}
|
|
|
|
public List<ListaNombreClientesJSON> ObtenerTipoSolicitantes(int IdSolicitud, int IdTipoSolicitante)
|
|
{
|
|
List<ListaNombreClientesJSON> solicitantes = null;
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
solicitantes = (
|
|
from s in db.Solicitante.Where(c => c.IdSolicitud == IdSolicitud && c.IdTipoSolicitante == IdTipoSolicitante)
|
|
where s.IdSolicitud == IdSolicitud && s.IdTipoSolicitante == IdTipoSolicitante
|
|
select new ListaNombreClientesJSON
|
|
{
|
|
IdCliente = s.IdCliente,
|
|
IdTipoSolicitante = s.IdTipoSolicitante,
|
|
NombreCompleto = ((s.Cliente.PrimerNombre != null ? s.Cliente.PrimerNombre : string.Empty)
|
|
+ (s.Cliente.PrimerApellido != null ? " "+s.Cliente.PrimerApellido : string.Empty) + (s.Cliente.RazonSocial != null ? s.Cliente.RazonSocial : string.Empty))
|
|
}).ToList();
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
throw;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw;
|
|
}
|
|
return solicitantes;
|
|
}
|
|
|
|
public bool VerificaTipoSolicitantes(int IdSolicitud, int IdTipoSolicitante)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
return db.Solicitante.Any(c => c.IdSolicitud == IdSolicitud && c.IdTipoSolicitante == IdTipoSolicitante);
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException exs)
|
|
{
|
|
logger.Error(exs);
|
|
throw;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error(ex);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|