TFS_ANTIGUO/SInCathay/ULA.Cathay.CreditoModel.DAL/Credito/SolicitudDAL.cs

181 lines
6.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using ULA.Cathay.CreditoModel.Credito;
using ULA.Cathay.CreditoModel.Entidades;
using Ultimus.Utilitarios;
using System.Data.Entity;
using System.Data.Entity.Validation;
namespace ULA.Cathay.CreditoModel.DAL.Credito
{
public class SolicitudDAL
{
private UltimusLogs logger = new UltimusLogs("SolicitudDAL");
public Solicitud Obtener(int IdSolicitud)
{
Solicitud ObjSolicitud = new Solicitud();
try
{
using (CreditoContex db = new CreditoContex())
ObjSolicitud = db.Solicitud.Where(x => x.IdSolicitud == IdSolicitud).FirstOrDefault();
}
catch (Exception ex)
{
ObjSolicitud = null;
logger.Error(ex);
}
finally
{
}
return ObjSolicitud;
}
public Solicitud Obtener(int Incident, string Proceso)
{
Solicitud ObjSolicitud = new Solicitud(); ;
try
{
using (CreditoContex db = new CreditoContex())
{
if (Proceso == "Formalizacion")
ObjSolicitud = db.DatosGeneralesFormalizacion.Include(c => c.Solicitud).Where(c => c.Incident == Incident).Select(c => c.Solicitud).FirstOrDefault();
else if(Proceso == "Seguimiento")
ObjSolicitud = db.DatosGeneralesSeguimiento.Include(c => c.Solicitud).Where(c => c.Incident == Incident).Select(c => c.Solicitud).FirstOrDefault();
else
{
ObjSolicitud = db.Solicitud
.Where(x => x.Incidente == Incident
&& x.Proceso.Trim().ToLower().Contains(Proceso.Trim().ToLower())).FirstOrDefault();
}
}
logger.Trace(string.Format("*{0}*{1}*{2}", Proceso, Incident, ObjSolicitud != null));
}
catch (Exception ex)
{
ObjSolicitud = null;
logger.Error(ex);
}
finally
{
}
return ObjSolicitud;
}
public void Actualizar(Solicitud model)
{
try
{
model.ClearVirtualProperties();
using (CreditoContex db = new CreditoContex())
{
Solicitud _model = db.Solicitud.AsNoTracking().Where(t => t.IdSolicitud == model.IdSolicitud).FirstOrDefault();
if (_model != null)
{
model.Solicitante = null;
db.Solicitud.Attach(model);
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();
}
}
}
catch (DbEntityValidationException ex1)
{
logger.Error(ex1);
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
}
public Solicitud Insertar(Solicitud model)
{
try
{
using (CreditoContex db = new CreditoContex())
{
Solicitud actual = db.Solicitud.AsNoTracking().Where(x => x.IdSolicitud == model.IdSolicitud).FirstOrDefault();
model.ClearVirtualProperties();
if (actual == null)
{
int? Next_id;
Next_id = db.Solicitud.Max(t => (int?)t.IdSolicitud);
model.IdSolicitud = Next_id.HasValue ? Next_id.Value + 1 : 1;
Next_id = null;
Next_id = db.Solicitud.Where(c => c.Proceso == model.Proceso).Max(t => (int?)t.IdSolicitudProceso);
model.IdSolicitudProceso = Next_id.HasValue ? Next_id.Value + 1 : 1;
model.FechaCreacion = DateTime.Now;
model.FechaModificacion = DateTime.Now;
model.IdEstadoBandeja = string.IsNullOrEmpty(model.IdEstadoBandeja) ? "N" : model.IdEstadoBandeja;
db.Solicitud.Add(model);
}
else
{
model.FechaModificacion = DateTime.Now;
model.FechaCreacion = actual.FechaCreacion;
model.UsuarioCreador = actual.UsuarioCreador;
db.Solicitud.Attach(model);
db.Entry(model).State = EntityState.Modified;
}
db.SaveChanges();
}
}
catch (DbEntityValidationException ex)
{
logger.Error(ex);
throw ex;
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return model;
}
public List<Solicitud> ObtenerSolicitudesNoEnviadas(string UsuarioIngresador)
{
List<Solicitud> listaSolicitudNoEnviada = new List<Solicitud>();
try
{
using (CreditoContex Conn = new CreditoContex())
{
listaSolicitudNoEnviada = Conn.Solicitud
.Include(x => x.Solicitante)
.Include("Solicitante.Cliente")
.Where(x => x.UsuarioCreador.Contains(UsuarioIngresador) == true
&& x.IdEstadoBandeja == EnumEstadoSolicitud.NOENVIADA
).ToList();
}
}
catch (Exception ex)
{
logger.Error(ex);
}
return listaSolicitudNoEnviada;
}
}
}