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 Obtener(int IdSolicitud) { List listaControlVisitas = null; try { using (CreditoContex db = new CreditoContex()) { listaControlVisitas = new List(); 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 ModeloEmailnew = new List(); 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ó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 lista = dataContex.EmailSolicitud.Where(x => x.IdControlVisitas == model.IdControlVisitas && x.IdSolicitud == model.IdSolicitud).ToList(); foreach (var email in lista) { List listaRecipiente = dataContex.RecipienteEmailSolicitud.Where(x => x.IdEmailSolicitud == email.IdEmailSolicitud).ToList(); dataContex.RecipienteEmailSolicitud.RemoveRange(listaRecipiente); dataContex.SaveChanges(); } dataContex.EmailSolicitud.RemoveRange(lista); dataContex.SaveChanges(); List 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; } } }