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

269 lines
9.8 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;
namespace ULA.Cathay.CreditoModel.DAL.Credito
{
public class EmailSolicitudDAL
{
private UltimusLogs logger = new UltimusLogs("EmailSolicitudDAL");
private bool ExistsModel = false;
#region Obtener
public List<EmailSolicitud> Obtener(int? IdSolicitud, int? IdEtapa, int? IdControlVisitas, string NombrePlantilla)
{
List<EmailSolicitud> listaEmailSolicitud = null;
try
{
listaEmailSolicitud = new List<EmailSolicitud>();
using (CreditoContex db = new CreditoContex())
{
listaEmailSolicitud = db.EmailSolicitud
.Include(x => x.RecipienteEmailSolicitud)
.Include(x => x.AdjuntoEmailSolicitud)
.AsNoTracking()
.Where(x => x.IdSolicitud == IdSolicitud
&& (IdEtapa == null || x.IdEtapa == IdEtapa)
&& (IdControlVisitas == null || x.IdControlVisitas == IdControlVisitas)
&& (string.IsNullOrEmpty(NombrePlantilla) || x.NombrePlantilla == NombrePlantilla)).ToList();
}
ExistsModel = listaEmailSolicitud != null && listaEmailSolicitud.Count() > 0;
}
catch (Exception ex)
{
logger.Error(" Error : Obtener " + "=" + ex.Message + ex.StackTrace);
}
return listaEmailSolicitud;
}
#endregion
#region Actualizar
public string Actualizar(EmailSolicitud model)
{
try
{
List<EmailSolicitud> _EmailSolicitudList = Obtener(model.IdSolicitud, model.IdEtapa, model.IdControlVisitas, model.NombrePlantilla);
using (CreditoContex db = new CreditoContex())
{
foreach (EmailSolicitud _EmailSolicitudItem in _EmailSolicitudList)
{
_EmailSolicitudItem.Subject = model.Subject;
_EmailSolicitudItem.Body = model.Body;
db.Entry(_EmailSolicitudItem).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
}
}
}
catch (Exception ex)
{
logger.Error(" Error : Actualizar" + "=" + ex.Message + ex.StackTrace);
return TipoCodigoRespuesta.ERROR.ToString();
}
return TipoCodigoRespuesta.EXITOSO.ToString();
}
#endregion
#region Insertar
public EmailSolicitud Insertar(EmailSolicitud model)
{
bool IsRegistraRecipiente = false;
EmailSolicitud respuesta = new EmailSolicitud();
try
{
IsRegistraRecipiente = model.RecipienteEmailSolicitud != null && model.RecipienteEmailSolicitud.Count() > 0;
using (CreditoContex db = new CreditoContex())
{
EmailSolicitud _modelActual = Obtener(model.IdSolicitud, model.IdEtapa, model.IdControlVisitas, model.NombrePlantilla).FirstOrDefault();
if (ExistsModel)
{
model.IdEmailSolicitud = _modelActual.IdEmailSolicitud;
if (IsRegistraRecipiente)
RegistrarRecipienteEmailSolicitud(db, model);
else
RegistrarEmailSolicitud(db, model);
}
else
{
RegistrarEmailSolicitud(db, model);
if (IsRegistraRecipiente)
RegistrarRecipienteEmailSolicitud(db, model);
}
db.SaveChanges();
respuesta = model;
}
}
catch (Exception ex)
{
logger.Error( " Error : Insertar" + "=" + ex.Message + ex.StackTrace);
throw ex;
}
return respuesta;
}
private string RegistrarEmailSolicitud(CreditoContex db, EmailSolicitud _model)
{
int NextIdEmailSolicitud;
ICollection<RecipienteEmailSolicitud> recipientes = null;
try
{
recipientes = _model.RecipienteEmailSolicitud;
_model.Etapas = null;
_model.Solicitud = null;
_model.ControlVisitas = null;
_model.RecipienteEmailSolicitud = null;
if (!ExistsModel)
{
NextIdEmailSolicitud = db.EmailSolicitud.Max(t => (int?)t.IdEmailSolicitud).GetValueOrDefault(0);
_model.IdEmailSolicitud = (NextIdEmailSolicitud + 1);
db.EmailSolicitud.Add(_model);
}
else
{
db.EmailSolicitud.Attach(_model);
db.Entry(_model).State = System.Data.Entity.EntityState.Modified;
}
_model.RecipienteEmailSolicitud = recipientes;
}
catch (Exception ex)
{
logger.Error( " Error : RegistrarEmailSolicitud" + "=" + ex.Message + ex.StackTrace);
return TipoCodigoRespuesta.ERROR.ToString();
}
return TipoCodigoRespuesta.EXITOSO.ToString();
}
private string RegistrarRecipienteEmailSolicitud(CreditoContex db, EmailSolicitud _model)
{
int NextIdRecipienteEmailSolicitud;
try
{
foreach (RecipienteEmailSolicitud recipiente in _model.RecipienteEmailSolicitud)
{
NextIdRecipienteEmailSolicitud = db.RecipienteEmailSolicitud.Max(t => (int?)t.IdRecipienteEmailSolicitud).GetValueOrDefault(0);
recipiente.IdRecipienteEmailSolicitud = (NextIdRecipienteEmailSolicitud + 1);
recipiente.IdEmailSolicitud = _model.IdEmailSolicitud;
db.RecipienteEmailSolicitud.Add(recipiente);
}
}
catch (Exception ex)
{
logger.Error(" Error : RegistrarRecipienteEmailSolicitud" + "=" + ex.Message + ex.StackTrace);
return TipoCodigoRespuesta.ERROR.ToString();
}
return TipoCodigoRespuesta.EXITOSO.ToString();
}
#endregion
#region Remover
public string Remover(RecipienteEmailSolicitud _model)
{
try
{
using (CreditoContex db = new CreditoContex())
{
RecipienteEmailSolicitud _modelToDelete = db.RecipienteEmailSolicitud.Where(t => t.IdRecipienteEmailSolicitud == _model.IdRecipienteEmailSolicitud).FirstOrDefault();
if (_modelToDelete != null)
{
db.Entry(_modelToDelete).State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges();
}
}
}
catch (Exception ex)
{
logger.Error( " Error : Remover" + "=" + ex.Message + ex.StackTrace);
return TipoCodigoRespuesta.ERROR.ToString();
}
return TipoCodigoRespuesta.EXITOSO.ToString();
}
public string Remover(EmailSolicitud _model)
{
try
{
using (CreditoContex db = new CreditoContex())
{
List<EmailSolicitud> _EmailSolicitudLista = Obtener(_model.IdSolicitud, _model.IdEtapa, _model.IdControlVisitas, _model.NombrePlantilla);
if (_EmailSolicitudLista != null)
{
foreach (EmailSolicitud _EmailSolicitud in _EmailSolicitudLista)
{
foreach (RecipienteEmailSolicitud _Recipiente in _EmailSolicitud.RecipienteEmailSolicitud)
{
Remover(_Recipiente);
}
_EmailSolicitud.RecipienteEmailSolicitud = null;
db.Entry(_EmailSolicitud).State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges();
}
}
}
}
catch (Exception ex)
{
logger.Error( " Error : Remover" + "=" + ex.Message + ex.StackTrace);
return TipoCodigoRespuesta.ERROR.ToString();
}
return TipoCodigoRespuesta.EXITOSO.ToString();
}
#endregion
}
}