269 lines
9.8 KiB
C#
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
|
|
|
|
}
|
|
}
|