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

187 lines
6.7 KiB
C#
Raw Blame History

using System;
using System.Collections.Generic;
using System.Linq;
using ULA.Cathay.CreditoModel.Credito;
using Ultimus.Interfaces;
using Ultimus.Utilitarios;
namespace ULA.Cathay.CreditoModel.DAL.Credito
{
public class ControlVisitasDAL
{
private UltimusLogs logger = new UltimusLogs("ClienteDAL");
#region Obtener
public List<ControlVisitas> Obtener(int IdSolicitud)
{
List<ControlVisitas> listaControlVisitas = null;
try
{
using (CreditoContex db = new CreditoContex())
{
listaControlVisitas = new List<ControlVisitas>();
listaControlVisitas = db.ControlVisitas.Where(cv => cv.IdSolicitud == IdSolicitud).ToList();
}
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return listaControlVisitas;
}
public ControlVisitas ObtenerDatosCorreo(int? IdSolicitud, int IdControlVisitas)
{
ControlVisitas listaControlVisitas = null;
try
{
using (CreditoContex db = new CreditoContex())
{
listaControlVisitas = new ControlVisitas();
listaControlVisitas = db.ControlVisitas.Where(cv => cv.IdSolicitud == IdSolicitud && cv.IdControlVisitas== IdControlVisitas ).FirstOrDefault();
}
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return listaControlVisitas;
}
#endregion
#region Insertar
public int InsertarActualizar(ControlVisitas model)
{
EmailSolicitud ModeloEmailActual = new EmailSolicitud();
List<EmailSolicitud> ModeloEmailnew = new List<EmailSolicitud>();
ControlVisitas ModeloControlVisitasnew = new ControlVisitas();
int IdControlVisita=0;
int? Next_idvisita;
int idvisitaActual=0;
try
{
using (CreditoContex dataContex = new CreditoContex())
{
ControlVisitas ModeloActual = dataContex.ControlVisitas.Where(e => e.IdSolicitud == model.IdSolicitud && e.IdControlVisitas == model.IdControlVisitas).FirstOrDefault();
Vehiculo ModelVehiculo = dataContex.Vehiculo.Where(x => x.IdVehiculo == model.IdVehiculo).FirstOrDefault();
if (ModelVehiculo != null)
model.ValorKilometro = ModelVehiculo.ValorKilometro;
ModeloEmailnew = model.EmailSolicitud.ToList();
ModeloControlVisitasnew = model;
ModeloControlVisitasnew.EmailSolicitud = null;
if (ModeloActual != null)
{
dataContex.Entry(ModeloActual).State = System.Data.Entity.EntityState.Detached;
dataContex.ControlVisitas.Attach(ModeloControlVisitasnew);
dataContex.Entry(ModeloControlVisitasnew).State = System.Data.Entity.EntityState.Modified;
}
else
{
Next_idvisita = dataContex.ControlVisitas.Max(t => (int?)t.IdControlVisitas);
idvisitaActual = (Next_idvisita == null) ? 0 : Convert.ToInt32(Next_idvisita);
ModeloControlVisitasnew.IdControlVisitas = (idvisitaActual+ 1);
dataContex.ControlVisitas.Add(ModeloControlVisitasnew);
}
dataContex.SaveChanges();
IdControlVisita = ModeloControlVisitasnew.IdControlVisitas;
#region EmailSolicitud
//Remueve los email existentes
new EmailSolicitudDAL().Remover(new EmailSolicitud() { IdSolicitud = model.IdSolicitud, IdControlVisitas = model.IdControlVisitas });
//Registra los email nuevos
foreach (EmailSolicitud ItemEmail in ModeloEmailnew)
{
ItemEmail.IdSolicitud = model.IdSolicitud;
if (ModeloActual == null || ModeloActual.IdControlVisitas == 0)
ItemEmail.IdControlVisitas = (idvisitaActual + 1);
else
ItemEmail.IdControlVisitas = ModeloActual.IdControlVisitas;
EmailSolicitud respInsEmailSolicitud = new EmailSolicitudDAL().Insertar(ItemEmail);
if (respInsEmailSolicitud == null)
{
throw new Exception("Ha ocurrido un error al intentar registrar la informaci<63>n de correo(s)");
}
}
#endregion
}
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return IdControlVisita;
}
#endregion
public BaseJson EliminarControlVisita(ControlVisitas model)
{
BaseJson respuesta = new BaseJson();
try
{
using (CreditoContex dataContex = new CreditoContex())
{
List<EmailSolicitud> lista = dataContex.EmailSolicitud.Where(x => x.IdControlVisitas == model.IdControlVisitas && x.IdSolicitud == model.IdSolicitud).ToList();
foreach (var email in lista)
{
List<RecipienteEmailSolicitud> listaRecipiente = dataContex.RecipienteEmailSolicitud.Where(x => x.IdEmailSolicitud == email.IdEmailSolicitud).ToList();
dataContex.RecipienteEmailSolicitud.RemoveRange(listaRecipiente);
dataContex.SaveChanges();
}
dataContex.EmailSolicitud.RemoveRange(lista);
dataContex.SaveChanges();
List<ControlVisitas> listaVisita = dataContex.ControlVisitas.Where(x => x.IdControlVisitas == model.IdControlVisitas ).ToList();
dataContex.ControlVisitas.RemoveRange(listaVisita);
dataContex.SaveChanges();
respuesta.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return respuesta;
}
}
}