503 lines
19 KiB
C#
503 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Ultimus.Utilitarios;
|
|
using ULA.Cathay.CreditoModel.Credito;
|
|
using ULA.Cathay.CreditoModel.Entidades;
|
|
using System.Data.Entity;
|
|
using System.Data.Entity.Validation;
|
|
using ULA.Cathay.CreditoModel.DAL.History;
|
|
using ULA.Cathay.CreditoModel.History;
|
|
|
|
|
|
namespace ULA.Cathay.CreditoModel.DAL.Credito
|
|
{
|
|
public class DatosGeneralesFormalizacionDAL
|
|
{
|
|
UltimusLogs logs = new UltimusLogs("DatosGeneralesFormalizacionDAL");
|
|
|
|
/// <summary>
|
|
/// Obtiene la información de la tabla Global.DatosGeneralesFormalizacion para la solicitud específica.
|
|
/// </summary>
|
|
/// <param name="IdSolicitud">Número de la solicitud</param>
|
|
/// <returns></returns>
|
|
public DatosGeneralesFormalizacion Obtener(int? IdSolicitud, int Incidente)
|
|
{
|
|
DatosGeneralesFormalizacion model = null;
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
model = db.DatosGeneralesFormalizacion
|
|
.Include(c => c.AreaResponsable)
|
|
.Include(c => c.Abogados)
|
|
.Include(c => c.CorredoraSeguros)
|
|
.Include(c => c.Sucursal)
|
|
.Include("FormalizacionTipoFacilidades.OfertaFacilidades.TipoFacilidad")
|
|
.Include("FormalizacionTipoFacilidades.OfertaFacilidades.OfertaFacilidadesGarantias")
|
|
.Include("FormalizacionTipoFacilidades.OfertaFacilidades.VerificacionFacturasContratosOrdenes")
|
|
.Include(c => c.FormaliacionInformacionAdicional.FormasPagos)
|
|
.Include(c => c.FormaliacionInformacionAdicional.FormaDesembolso)
|
|
.Include(c => c.FormaliacionInformacionAdicional.CertificadosMandato)
|
|
.Include(c => c.FormaDesembolso)
|
|
.Include(c => c.TipoHojaPendiente)
|
|
.Where(c => (!IdSolicitud.HasValue || c.IdSolicitud == IdSolicitud)
|
|
&& c.Incident == Incidente).FirstOrDefault();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
return model;
|
|
}
|
|
|
|
|
|
public DatosGeneralesFormalizacion ObtenerDatosGenerales(int? IdSolicitud, int Incidente)
|
|
{
|
|
DatosGeneralesFormalizacion model = null;
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
model = db.DatosGeneralesFormalizacion.Where(c => (!IdSolicitud.HasValue || c.IdSolicitud == IdSolicitud)
|
|
&& c.Incident == Incidente).FirstOrDefault();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
return model;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Registra(insertando o actualizando) en la tabla Global.DatosGeneralesFormalizacion la información enviada por parámetro.
|
|
/// </summary>
|
|
/// <param name="model">Objeto de la clase DatosGeneralesFormalizacion cargado con la informacion a ser registrada en la BD</param>
|
|
/// <returns>Objeto de la clase DatosGeneralesFormalizacionJSON actualizado con la informacion de los indices y data que se registró en la BD</returns>
|
|
public DatosGeneralesFormalizacion InsertarActualizar(DatosGeneralesFormalizacion model)
|
|
{
|
|
DatosGeneralesFormalizacion _modeloActual = null;
|
|
FormaliacionInformacionAdicional _modelFormaliacionInformacionAdicional = null;
|
|
try
|
|
{
|
|
using (CreditoContex Conn = new CreditoContex())
|
|
{
|
|
|
|
_modeloActual = Conn.DatosGeneralesFormalizacion.AsNoTracking().Where(q => q.IdSolicitud == model.IdSolicitud && q.Incident == model.Incident).FirstOrDefault();
|
|
|
|
#region AddDataToModel
|
|
|
|
switch (model.Step)
|
|
{
|
|
case EnumEtapas.FR_Ela_Hoja_Pendien:
|
|
case EnumEtapas.DE_Ela_Hoja_Pendientes:
|
|
var task = new history_taskDAL().Obtener(model.Incident);
|
|
|
|
if (task == null)
|
|
task = new List<history_task>();
|
|
|
|
if (task.Exists(x => x.type != "TaskCompleted" && (x.step_label == EnumEtapas.FR_Ela_Hoja_Pendien || x.step_label == EnumEtapas.DE_Ela_Hoja_Pendientes)) && model.ConsecutivoExcepcion == null)
|
|
model.ConsecutivoExcepcion = ObtenerConsecutivoExcepcion();
|
|
break;
|
|
case EnumEtapas.FR_Crear_Expediente:
|
|
if (model.Crear_Exp_FechaInicio == null)
|
|
model.Crear_Exp_FechaInicio = DateTime.Now;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if ((model.IdProceso == 0))
|
|
model.IdProceso = this.ObtenerIdProceso(model.Procesos);
|
|
#endregion
|
|
|
|
#region Save
|
|
|
|
_modelFormaliacionInformacionAdicional = model.FormaliacionInformacionAdicional;
|
|
model.ClearVirtualProperties();
|
|
|
|
if (_modeloActual == null)
|
|
{
|
|
model.FechaCrearLineaSAP = DateTime.Now;
|
|
Conn.DatosGeneralesFormalizacion.Add(model);
|
|
}
|
|
else
|
|
{
|
|
Conn.DatosGeneralesFormalizacion.Attach(model);
|
|
|
|
switch (model.Step)
|
|
{
|
|
case EnumEtapas.FR_Recibir_Consolidar_Doc:
|
|
Conn.Entry(model).Property(x => x.RequiereHojaPendientes).IsModified = true;
|
|
Conn.Entry(model).Property(x => x.DocumentacionCompleta).IsModified = true;
|
|
Conn.Entry(model).Property(x => x.DetallePendiente).IsModified = true;
|
|
Conn.Entry(model).Property(x => x.SolicitaCambiCondiciones).IsModified = true;
|
|
Conn.Entry(model).Property(x => x.IdTipoHojaPendiente).IsModified = true;
|
|
break;
|
|
default:
|
|
Conn.Entry<DatosGeneralesFormalizacion>(model).State = System.Data.Entity.EntityState.Modified;
|
|
break;
|
|
}
|
|
}
|
|
|
|
Conn.SaveChanges();
|
|
#endregion
|
|
}
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
_modeloActual = null;
|
|
model.FormaliacionInformacionAdicional = _modelFormaliacionInformacionAdicional;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
private int? ObtenerConsecutivoExcepcion()
|
|
{
|
|
int? Next_id;
|
|
int idActual;
|
|
int nReturn = 0;
|
|
|
|
try
|
|
{
|
|
using (CreditoContex Conn = new CreditoContex())
|
|
{
|
|
Next_id = Conn.DatosGeneralesFormalizacion.Max(t => (int?)t.ConsecutivoExcepcion);
|
|
idActual = (Next_id == null) ? 0 : Convert.ToInt32(Next_id);
|
|
nReturn = (idActual + 1);
|
|
}
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return nReturn;
|
|
|
|
}
|
|
|
|
private int ObtenerIdProceso(Procesos model)
|
|
{
|
|
int IdprocesoResult = 0;
|
|
ProcesosDAL ProcesosDAL = new ProcesosDAL();
|
|
try
|
|
{
|
|
IdprocesoResult = ProcesosDAL.ObtenerIdProceso(model);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
return IdprocesoResult;
|
|
}
|
|
|
|
public FormalizacionTipoFacilidades InsertarActualizar_Facilidad(FormalizacionTipoFacilidades facilidad)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
facilidad.OfertaFacilidades = null;
|
|
facilidad.DatosGeneralesFormalizacion = null;
|
|
|
|
|
|
if ((facilidad.IdProceso == null || facilidad.IdProceso == 0))
|
|
facilidad.IdProceso = this.ObtenerIdProceso(facilidad.Procesos);
|
|
|
|
|
|
if (db.FormalizacionTipoFacilidades.Where(c => c.IdSolicitud == facilidad.IdSolicitud
|
|
&& c.Incident == facilidad.Incident && c.IdProceso == facilidad.IdProceso && c.IdTipoFacilidad == facilidad.IdTipoFacilidad
|
|
&& c.IdSecuenciaFacilidad == facilidad.IdSecuenciaFacilidad).Any())
|
|
{
|
|
db.Entry<FormalizacionTipoFacilidades>(facilidad).State = EntityState.Modified;
|
|
}
|
|
else
|
|
{
|
|
db.FormalizacionTipoFacilidades.Add(facilidad);
|
|
}
|
|
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return facilidad;
|
|
|
|
}
|
|
|
|
public List<DatosGeneralesFormalizacion> Obtener_TramitesFormalizacion(int IdSolicitud)
|
|
{
|
|
List<DatosGeneralesFormalizacion> model = new List<DatosGeneralesFormalizacion>();
|
|
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
model = db.DatosGeneralesFormalizacion
|
|
.Include(c => c.AreaResponsable)
|
|
.Include(c => c.Abogados)
|
|
.Include(c => c.CorredoraSeguros)
|
|
.Include(c => c.Sucursal)
|
|
.Include(c => c.FormalizacionTipoFacilidades)
|
|
.Include(c => c.FormalizacionCondicionesGenerales)
|
|
.Include(c => c.FormalizacionCondicionesVarias)
|
|
.Where(c => c.IdSolicitud == IdSolicitud).ToList();
|
|
|
|
}
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
return model;
|
|
|
|
}
|
|
|
|
public DatosGeneralesFormalizacion Obtener_CondicionesGenerales(DatosGeneralesFormalizacion model)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
model.FormalizacionCondicionesGenerales = db.FormalizacionCondicionesGenerales
|
|
.Where(c => c.IdSolicitud == model.IdSolicitud && model.Incident == c.Incident).ToList();
|
|
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
public DatosGeneralesFormalizacion Obtener_CondicionesVarias(DatosGeneralesFormalizacion model)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
model.FormalizacionCondicionesVarias = db.FormalizacionCondicionesVarias
|
|
.Where(c => c.IdSolicitud == model.IdSolicitud && model.Incident == c.Incident).ToList();
|
|
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
public DatosGeneralesFormalizacion InsertarRemueve_CondicionesGenerales(DatosGeneralesFormalizacion model)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
var lista_actual = db.FormalizacionCondicionesGenerales.AsNoTracking().Where(c => c.IdSolicitud == model.IdSolicitud &&
|
|
model.Incident == c.Incident).ToList();
|
|
|
|
//inserta
|
|
if (model != null && model.FormalizacionCondicionesGenerales != null && model.FormalizacionCondicionesGenerales.Count > 0)
|
|
{
|
|
foreach (var item in model.FormalizacionCondicionesGenerales)
|
|
{
|
|
if (lista_actual == null || !lista_actual.Any(c => c.IdCondicion == item.IdCondicion && c.IdSolicitud == model.IdSolicitud && model.Incident == c.Incident))
|
|
{
|
|
item.IdProceso = model.IdProceso;
|
|
item.Fecha = DateTime.Now;
|
|
db.FormalizacionCondicionesGenerales.Add(item);
|
|
}
|
|
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
|
|
//remueve
|
|
if (lista_actual != null && lista_actual.Count > 0)
|
|
{
|
|
foreach (var item in lista_actual)
|
|
{
|
|
if (model.FormalizacionCondicionesGenerales == null || model.FormalizacionCondicionesGenerales.Count == 0
|
|
|| !model.FormalizacionCondicionesGenerales.Any(c => c.IdCondicion == item.IdCondicion && c.IdSolicitud == model.IdSolicitud &&
|
|
model.Incident == c.Incident))
|
|
{
|
|
db.FormalizacionCondicionesGenerales.Attach(item);
|
|
db.FormalizacionCondicionesGenerales.Remove(item);
|
|
}
|
|
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
public DatosGeneralesFormalizacion InsertarRemueve_CondicionesVarias(DatosGeneralesFormalizacion model)
|
|
{
|
|
try
|
|
{
|
|
using (CreditoContex db = new CreditoContex())
|
|
{
|
|
var lista_actual = db.FormalizacionCondicionesVarias.AsNoTracking().Where(c => c.IdSolicitud == model.IdSolicitud &&
|
|
model.Incident == c.Incident).ToList();
|
|
|
|
//inserta
|
|
if (model != null && model.FormalizacionCondicionesVarias != null && model.FormalizacionCondicionesVarias.Count > 0)
|
|
{
|
|
foreach (var item in model.FormalizacionCondicionesVarias)
|
|
{
|
|
if (lista_actual == null || !lista_actual.Any(c => c.IdCondicion == item.IdCondicion && c.IdSolicitud == model.IdSolicitud && model.Incident == c.Incident))
|
|
{
|
|
item.IdProceso = model.IdProceso;
|
|
item.Fecha = DateTime.Now;
|
|
db.FormalizacionCondicionesVarias.Add(item);
|
|
}
|
|
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
|
|
//remueve
|
|
if (lista_actual != null && lista_actual.Count > 0)
|
|
{
|
|
foreach (var item in lista_actual)
|
|
{
|
|
if (model.FormalizacionCondicionesVarias == null || model.FormalizacionCondicionesVarias.Count == 0
|
|
|| !model.FormalizacionCondicionesVarias.Any(c => c.IdCondicion == item.IdCondicion && c.IdSolicitud == model.IdSolicitud &&
|
|
model.Incident == c.Incident))
|
|
{
|
|
db.FormalizacionCondicionesVarias.Attach(item);
|
|
db.FormalizacionCondicionesVarias.Remove(item);
|
|
}
|
|
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
public FormaliacionInformacionAdicional InsertarActualizar_InfoAdicional(FormaliacionInformacionAdicional model)
|
|
{
|
|
FormaliacionInformacionAdicional _modeloActual;
|
|
try
|
|
{
|
|
using (CreditoContex Conn = new CreditoContex())
|
|
{
|
|
_modeloActual = Conn.FormaliacionInformacionAdicional.AsNoTracking().Where(q => q.IdSolicitud == model.IdSolicitud && q.Incident == model.Incident).FirstOrDefault();
|
|
|
|
if (_modeloActual == null)
|
|
{
|
|
Conn.FormaliacionInformacionAdicional.Add(model);
|
|
}
|
|
else
|
|
{
|
|
Conn.FormaliacionInformacionAdicional.Attach(model);
|
|
Conn.Entry<FormaliacionInformacionAdicional>(model).State = System.Data.Entity.EntityState.Modified;
|
|
}
|
|
|
|
Conn.SaveChanges();
|
|
|
|
}
|
|
}
|
|
catch (DbEntityValidationException ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logs.Error(ex);
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
_modeloActual = null;
|
|
}
|
|
|
|
return model;
|
|
}
|
|
|
|
}
|
|
}
|