using System;
using System.Collections.Generic;
using System.Data.Entity.Validation;
using System.Linq;
using System.Web;
using System.Web.Services;
using ULA.Cathay.CreditoModel.Credito;
using ULA.Cathay.CreditoModel.DAL.CorporativoDatosRecientes;
using ULA.Cathay.CreditoModel.DAL.Credito;
using ULA.Cathay.CreditoModel.Entidades;
using Ultimus.Interfaces;
using Ultimus.Interfaces.UltimusIntegration;
using Ultimus.Utilitarios;
using System.Data.Entity;
using Ultimus.Interfaces.UltimusForm;
using ULA.Cathay.WCFMetodosCathay.Library;
using ULA.Cathay.WCFMetodosCathay.App_Code;
namespace ULA.Cathay.WCFMetodosCathay
{
///
/// Summary description for MetodosCathay
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class MetodosCathay : System.Web.Services.WebService
{
UltimusLogs log = new UltimusLogs("MetodosCathay");
[WebMethod]
public BaseJson Remueve_IncidentesActivos(string NumeroIndentificacion, int Incidente)
{
IncidentesActivosClienteDAL mIncidentesActivosClienteDAL = new IncidentesActivosClienteDAL();
return mIncidentesActivosClienteDAL.Remover(NumeroIndentificacion, Incidente);
}
[WebMethod]
public BaseJson GeneraIncidentes_Formalizacion(int IncidenteCredito)
{
UltimusIntegrationAPIController UltimusIntgration = new UltimusIntegrationAPIController();
BaseJson resp = new BaseJson();
string TaskID = null;
int NumIncidente = 0;
ProcesosDAL ProcesoDal = new ProcesosDAL();
SolicitudDAL SolicitudDal = new SolicitudDAL();
OfertaDAL OfertaDal = new OfertaDAL();
DatosGeneralesFormalizacionDAL DatosGeneralesFormalizacionDal = new DatosGeneralesFormalizacionDAL();
List Variables = new List();
EtapasDAL EtapasDal = new EtapasDAL();
DatosEntradaCondiciones DatosEntradaRecipientes = new DatosEntradaCondiciones();
EstructuraOrgChartDAL EstructuraOrgChartDal = new EstructuraOrgChartDAL();
EjecutivoDAL EjecutivoDal = new EjecutivoDAL();
DatosAsignacionRecipientes RepAsignacion = new DatosAsignacionRecipientes();
Oferta oferta;
ObtieneParametros ultParametros = new ObtieneParametros();
string UsuarioIniciador = "";
string NombreProcesoCredito = "Credito";
string NombreProcesoFormalizacion = "Formalizacion";
string EtapaInicio = EnumEtapas.FR_Inicio_Formalizacion;
string Etapa_Devuelto_Formalizacion = EnumEtapas.AP_Proceso_Credito;
string summary = "";
string UsuarioAsignado = "";
int CodigoSolicitud = 0;
List ListaProcesos;
List EtapasFormalizacion;
Solicitud solicitud;
ClienteDAL ClienteDal = new ClienteDAL();
Cliente ClientePrincipal;
Ejecutivo FormalizadorUEN;
CaratulaCredito Caratula;
List FacilidadesLinea;
List FacilidadesEspecifico;
List TramitesFormalizacionActuales;
DatosGeneralesFormalizacion TramiteActualDevolver;
FormalizacionDocumentosLegalesDAL FormalizacionDocumentosLegalesDal = new FormalizacionDocumentosLegalesDAL();
int? IdCategoria = 0;
List EjecutivoAsistenteServicioRegulatorio = new List();
var modeloGetNodeValueEsquema = new UltimusValoresEsquema();
var nombreVariableEsquema = string.Empty;
try
{
UsuarioIniciador = ultParametros.GetValueKeyRegedit("UsuarioProcesoUltimus", false);
ListaProcesos = ProcesoDal.Obtener();
NombreProcesoCredito = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Credito).FirstOrDefault().NombreProceso;
NombreProcesoFormalizacion = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Formalizacion).FirstOrDefault().NombreProceso;
EtapasFormalizacion = EtapasDal.Obtener(null, EnumProcesos.Formalizacion);
DatosEntradaRecipientes.CodigoProceso = EnumProcesos.Formalizacion;
DatosEntradaRecipientes.CodEvaluacion = 1;
#region OBTIENE TASKID ETAPA INICIO
using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress))
{
string error= string.Empty;
UltimusIncident DataTask = new UltimusIncident();
if (!UltimusClient.GetTaskByFilters(UsuarioIniciador, NombreProcesoFormalizacion, EtapaInicio, 0, out DataTask, out error) || !string.IsNullOrWhiteSpace(error))
throw new Exception("GetTaskByFilters: no se pudo obtener el taskid para generar los incidentes de formalizacion. " + error);
TaskID = DataTask.TaskId;
}
#endregion
solicitud = SolicitudDal.Obtener(IncidenteCredito, NombreProcesoCredito);
if (solicitud == null)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
resp.DescripcionRespuesta = "No se encontró la solicitud";
return resp;
}
CodigoSolicitud = solicitud.IdSolicitud;
ClientePrincipal = ClienteDal.ObtenerPrincipal(CodigoSolicitud);
FormalizadorUEN = ClientePrincipal == null ? null : EjecutivoDal.ObtenerEjecutivo(ClientePrincipal.IdEjecutivo);
oferta = OfertaDal.ObtenerOfertaSolicitud(new Oferta { IdSolicitud = CodigoSolicitud });
if (oferta == null || oferta.OfertaFacilidades == null || oferta.OfertaFacilidades.Count == 0)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
resp.DescripcionRespuesta = "No se encontró la oferta y sus facilidades para esta solicitud: " + CodigoSolicitud;
return resp;
}
FacilidadesLinea = oferta.OfertaFacilidades.Where(c => c.Eslinea == true && c.Secuencia != 0).ToList();
FacilidadesEspecifico = oferta.OfertaFacilidades.Where(c => c.EsEspecifico == true && c.Secuencia != 0).ToList();
TramitesFormalizacionActuales = DatosGeneralesFormalizacionDal.Obtener_TramitesFormalizacion(CodigoSolicitud);
IdCategoria = oferta.IdTipoCategoria;
Caratula = new CaratulaCreditoDAL().ObtenerCaratula(CodigoSolicitud);
#region SUMMARY Y VARIABLES
Variables.Add(new NodeVariables
{
NodeName = EnumVariblesUltimus.TaskDataGlobalIdSolicitud,
NodeValue = solicitud.IdSolicitud
});
Variables.Add(new NodeVariables
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionIncidenteCredito,
NodeValue = IncidenteCredito
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalCodigoTipoTramite,
NodeValue = ClientePrincipal.IdTipoTramite
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalCodigoCategoria,
NodeValue = oferta.IdTipoCategoria
});
Variables.Add(new NodeVariables
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnLinea,
NodeValue = false
});
Variables.Add(new NodeVariables
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnEspecifico,
NodeValue = false
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignadoUEN,
NodeValue = false
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoRecipienteAsignado,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionEsGarantiaReal,
NodeValue = false
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionIdFacilidad,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevDocRecipienteAsignado,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoDesembolso,
NodeValue = null
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRequiereEvaluacionCoordinador,
NodeValue = false
});
EjecutivoAsistenteServicioRegulatorio.Add(string.Format(EnumOC.UsuarioActiveDirectory, FormalizadorUEN.UserId));
EjecutivoAsistenteServicioRegulatorio.Add(EnumOC.AsistenteServicios);
EjecutivoAsistenteServicioRegulatorio.Add(EnumOC.AsistenteRegulatorio);
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalEjecutivoAsistenteServicioRegulatorio,
NodeValues = EjecutivoAsistenteServicioRegulatorio
});
#endregion
#region Registra ParametrosReglas
DatosEntradaRecipientes.ListaParametros.Clear();
DatosEntradaRecipientes.ListaParametros.Add(new ParametrosCondiciones
{
NombreParametro = "IdEtapa",
Valor = null
});
DatosEntradaRecipientes.ListaParametros.Add(new ParametrosCondiciones
{
NombreParametro = "EsLinea",
Valor = null
});
DatosEntradaRecipientes.ListaParametros.Add(new ParametrosCondiciones
{
NombreParametro = "TipoCategoria",
Valor = oferta.IdTipoCategoria.ToString()
});
DatosEntradaRecipientes.ListaParametros.Add(new ParametrosCondiciones
{
NombreParametro = "TipoFacilidad",
Valor = null
});
DatosEntradaRecipientes.ListaParametros.Add(new ParametrosCondiciones
{
NombreParametro = "EsGarantiaReal",
Valor = null
});
#endregion
#region VALIDA TRAMITES EXISTENTES EN DEVOLUCION
var TramiteActual = TramitesFormalizacionActuales != null && TramitesFormalizacionActuales.Count > 0 ?
TramitesFormalizacionActuales.Where(c => c.ActivoDevolucionAprobacion == true && c.IncidenteCompletado != true).FirstOrDefault() : null;
if (TramiteActual != null)
{
bool? EsGarantiaReal = false;
var FacilidadFormalizacion = TramiteActual.FormalizacionTipoFacilidades.Where(x => x.Incident == TramiteActual.Incident).FirstOrDefault();
using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress))
{
UltimusIncident DataTask = new UltimusIncident();
//------------------------------------------------------------------------------------------------------------
#region FACILIDADES EN LINEA
if (FacilidadesLinea != null && FacilidadesLinea.Count > 0)
{
EsGarantiaReal = FacilidadesLinea.Any(c => c.OfertaFacilidadesGarantias.Any(g => g.TipoGarantia == 2) == true);
bool? EsFactoreo = FacilidadesLinea.Any(c => c.IdTipoFacilidad.In(5, 6, 7, 8, 9, 10));
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnLinea).First().NodeValue = true;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnEspecifico).First().NodeValue = false;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsGarantiaReal).First().NodeValue = EsGarantiaReal;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionIdFacilidad).First().NodeValue = null;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsLinea").First().Valor = "1";
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "TipoFacilidad").First().Valor = null;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsGarantiaReal").First().Valor = EsGarantiaReal.Value ? "1" : "0";
RepAsignacion = AsignarRecipientesFormalizacion(solicitud.IdSolicitud, ClientePrincipal, Variables, DatosEntradaRecipientes);
log.Trace("Metodo: AsignarRecipientes Idsolicitud: " + solicitud.IdSolicitud != null ? solicitud.IdSolicitud.ToString() : "" + " IdCategoria: " + IdCategoria != null ? IdCategoria.ToString() : "" + " IdFacilidad: null EsLinea: true EsGaratiaReal: " + EsGarantiaReal != null ? EsGarantiaReal.ToString() : "" + " Formalizador: " + FormalizadorUEN.FormalizadorAsignado_UserID != null ? FormalizadorUEN.FormalizadorAsignado_UserID : "");
bool FormalizadorOperacionesCredito=false;
AsignarRecipientes(Variables, IdCategoria, null, true, EsGarantiaReal.Value, FormalizadorUEN.FormalizadorAsignado_UserID, EtapasFormalizacion, ClientePrincipal,out FormalizadorOperacionesCredito, solicitud.IdSolicitud, Caratula.IdTipoCambioCondiciones, EsFactoreo);
Variables = RepAsignacion.Variables;
DatosGeneralesFormalizacion Formalizacion = new DatosGeneralesFormalizacion
{
IdSolicitud = CodigoSolicitud,
Incident = TramiteActual.Incident,
IdProceso = EnumProcesos.Formalizacion,
FechaCreacionIncidente = DateTime.Now,
Process = NombreProcesoFormalizacion,
EsEspecifico = false,
EsGarantiaReal = EsGarantiaReal,
IncidenteCompletado = false,
AsigCaso_JobFunctionAsignado = RepAsignacion.AsigCaso_JobFunctionAsignado,
FormalizadorOperacionesCredito= FormalizadorOperacionesCredito
};
DatosGeneralesFormalizacionDal.InsertarActualizar(Formalizacion);
foreach (var facilidad in FacilidadesLinea)
{
UsuarioAsignado = UsuarioIniciador;
DatosGeneralesFormalizacionDal.InsertarActualizar_Facilidad(new FormalizacionTipoFacilidades
{
IdSolicitud = CodigoSolicitud,
IdTipoFacilidad = facilidad.IdTipoFacilidad,
IdSecuenciaFacilidad = facilidad.Secuencia,
IdProceso = EnumProcesos.Formalizacion,
Incident = TramiteActual.Incident,
UsuarioAsignado = UsuarioAsignado
});
}
}
#endregion
#region FACILIDADES EN ESPECIFICO
if (FacilidadesEspecifico != null && FacilidadesEspecifico.Count > 0)
{
var IinfoFacilidadOfertaCredito = FacilidadesEspecifico.Where(x => x.IdSolicitud == TramiteActual.IdSolicitud && x.IdTipoFacilidad == FacilidadFormalizacion.IdTipoFacilidad && x.Secuencia == FacilidadFormalizacion.IdSecuenciaFacilidad).FirstOrDefault();
if (IinfoFacilidadOfertaCredito != null)
{
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnLinea).First().NodeValue = false;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnEspecifico).First().NodeValue = true;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsLinea").First().Valor = "0";
EsGarantiaReal = IinfoFacilidadOfertaCredito.OfertaFacilidadesGarantias.Any(g => g.TipoGarantia == 2);
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsGarantiaReal).First().NodeValue = EsGarantiaReal;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionIdFacilidad).First().NodeValue = IinfoFacilidadOfertaCredito.IdTipoFacilidad;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "TipoFacilidad").First().Valor = IinfoFacilidadOfertaCredito.IdTipoFacilidad.ToString();
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsGarantiaReal").First().Valor = EsGarantiaReal.Value ? "1" : "0";
RepAsignacion = AsignarRecipientesFormalizacion(solicitud.IdSolicitud, ClientePrincipal, Variables, DatosEntradaRecipientes);
log.Trace("Metodo: AsignarRecipientes Idsolicitud: " + solicitud.IdSolicitud != null ? solicitud.IdSolicitud.ToString() : "" + " IdCategoria: " + IdCategoria != null ? IdCategoria.ToString() : "" + " IdFacilidad: " + IinfoFacilidadOfertaCredito.IdTipoFacilidad != null ? IinfoFacilidadOfertaCredito.IdTipoFacilidad.ToString() : "" + " EsLinea: False EsGaratiaReal: " + EsGarantiaReal != null ? EsGarantiaReal.ToString() : "" + " Formalizador: " + FormalizadorUEN.FormalizadorAsignado_UserID != null ? FormalizadorUEN.FormalizadorAsignado_UserID : "");
bool FormalizadorOperacionesCredito = false;
AsignarRecipientes(Variables, IdCategoria, IinfoFacilidadOfertaCredito.IdTipoFacilidad, false, EsGarantiaReal.Value, FormalizadorUEN.FormalizadorAsignado_UserID, EtapasFormalizacion, ClientePrincipal, out FormalizadorOperacionesCredito, solicitud.IdSolicitud);
Variables = RepAsignacion.Variables;
DatosGeneralesFormalizacion Formalizacion = new DatosGeneralesFormalizacion
{
IdSolicitud = CodigoSolicitud,
Incident = TramiteActual.Incident,
IdProceso = EnumProcesos.Formalizacion,
FechaCreacionIncidente = DateTime.Now,
Process = NombreProcesoFormalizacion,
IncidenteCompletado = false,
EsEspecifico = true,
EsGarantiaReal = EsGarantiaReal,
AsigCaso_JobFunctionAsignado = RepAsignacion.AsigCaso_JobFunctionAsignado,
FormalizadorOperacionesCredito =FormalizadorOperacionesCredito
};
DatosGeneralesFormalizacionDal.InsertarActualizar(Formalizacion);
UsuarioAsignado = UsuarioIniciador;
DatosGeneralesFormalizacionDal.InsertarActualizar_Facilidad(new FormalizacionTipoFacilidades
{
IdSolicitud = CodigoSolicitud,
IdTipoFacilidad = IinfoFacilidadOfertaCredito.IdTipoFacilidad,
IdSecuenciaFacilidad = IinfoFacilidadOfertaCredito.Secuencia,
IdProceso = EnumProcesos.Formalizacion,
Incident = TramiteActual.Incident,
UsuarioAsignado = UsuarioAsignado
});
}
}
#endregion
//------------------------------------------------------------------------------------------------------------
string error = string.Empty;
if (!UltimusClient.GetTaskByFilters(null, NombreProcesoFormalizacion, Etapa_Devuelto_Formalizacion, TramiteActual.Incident, out DataTask, out error) || !string.IsNullOrEmpty(error))
throw new Exception("GetTaskByFilters: no se pudo obtener el taskid para activar el incidente de Formalizacion. " + error);
//activa el inciente de formalizacion
UltimusIntgration.CompleteTask(DataTask.User, DataTask.TaskId, null, DataTask.Summary, Variables);
DatosGeneralesFormalizacion Formalizaciondatos = new DatosGeneralesFormalizacion();
Formalizaciondatos = DatosGeneralesFormalizacionDal.Obtener(TramiteActual.IdSolicitud, TramiteActual.Incident);
//genera los documentos legales
FormalizacionDocumentosLegalesDal.EliminarDoclegales(TramiteActual.IdSolicitud, TramiteActual.Incident);
FormalizacionDocumentosLegalesDal.GenerarDocumentos(Formalizaciondatos, EnumEtapas.FR_Gen_Doc_Legales);
}
TramiteActual.ActivoDevolucionAprobacion = false;
TramiteActual.EnColaDevolucion = false;
DatosGeneralesFormalizacionDal.InsertarActualizar(TramiteActual);
#region VERIFICA SI HAY EN COLA UN TRAMITE
TramitesFormalizacionActuales = DatosGeneralesFormalizacionDal.Obtener_TramitesFormalizacion(CodigoSolicitud);
TramiteActualDevolver = TramitesFormalizacionActuales != null && TramitesFormalizacionActuales.Count > 0 ?
TramitesFormalizacionActuales.Where(c => c.EnColaDevolucion == true).OrderByDescending(c => c.FechaDevolucion).FirstOrDefault() : null;
if (TramiteActualDevolver != null)
DevuelveIncidente_Formalizacion(IncidenteCredito, TramiteActualDevolver.Incident);
#endregion
resp.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
return resp;
}
if (TramitesFormalizacionActuales != null && TramitesFormalizacionActuales.Count > 0)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
resp.DescripcionRespuesta = "Ya existen incidentes creados en el proceso de formalización";
return resp;
}
#endregion
#region SUMMARY
#region ARMA SUMMARY
string sNombreCliente = string.Empty;
if (ClientePrincipal != null)
switch (ClientePrincipal.IdTipoCliente)
{
case EnumTipoCliente.Fisico:
sNombreCliente = string.Format("{0} {1}", ClientePrincipal.PrimerNombre.Trim(), ClientePrincipal.PrimerApellido.Trim());
break;
case EnumTipoCliente.Juridico:
sNombreCliente = ClientePrincipal.RazonSocial.Trim();
break;
}
summary = string.Format("{0} | {1} | Sol. #{2} | Ejecutivo: {3} | Categoría: {4}",
ClientePrincipal.NumeroIdentificacion.Trim(),
sNombreCliente,
solicitud.IdSolicitud,
FormalizadorUEN == null ? string.Empty : FormalizadorUEN.Nombre,
oferta.TipoCategoria == null ? string.Empty : oferta.TipoCategoria.Descripcion);
#endregion
#endregion
#region FACILIDADES EN LINEA
if (FacilidadesLinea != null && FacilidadesLinea.Count > 0)
{
var EsGarantiaReal = FacilidadesLinea.Any(c => c.OfertaFacilidadesGarantias.Any(g => g.TipoGarantia == 2) == true);
bool? EsFactoreo = FacilidadesLinea.Any(c => c.IdTipoFacilidad.In(5, 6, 7, 8, 9, 10));
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnLinea).First().NodeValue = true;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnEspecifico).First().NodeValue = false;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsGarantiaReal).First().NodeValue = EsGarantiaReal;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionIdFacilidad).First().NodeValue = null;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsLinea").First().Valor = "1";
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "TipoFacilidad").First().Valor = null;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsGarantiaReal").First().Valor = EsGarantiaReal ? "1" : "0";
RepAsignacion = AsignarRecipientesFormalizacion(solicitud.IdSolicitud, ClientePrincipal, Variables, DatosEntradaRecipientes);
log.Trace("Metodo: AsignarRecipientes Idsolicitud: " + solicitud.IdSolicitud != null ? solicitud.IdSolicitud.ToString() : "" + " IdCategoria: " + IdCategoria != null ? IdCategoria.ToString() : "" + " IdFacilidad: null EsLinea: true EsGaratiaReal: " + EsGarantiaReal != null ? EsGarantiaReal.ToString() : "" + " Formalizador: " + FormalizadorUEN.FormalizadorAsignado_UserID != null ? FormalizadorUEN.FormalizadorAsignado_UserID : "");
bool FormalizadorOperacionesCredito= false;
AsignarRecipientes(Variables, IdCategoria, null, true, EsGarantiaReal, FormalizadorUEN.FormalizadorAsignado_UserID, EtapasFormalizacion, ClientePrincipal, out FormalizadorOperacionesCredito, solicitud.IdSolicitud, Caratula.IdTipoCambioCondiciones, EsFactoreo);
Variables = RepAsignacion.Variables;
NumIncidente = UltimusIntgration.CompleteTask(UsuarioIniciador, TaskID, null,
string.Format("{0} | {1} ", summary, "Línea"), Variables);
DatosGeneralesFormalizacion Formalizacion = new DatosGeneralesFormalizacion
{
IdSolicitud = CodigoSolicitud,
Incident = NumIncidente,
IdProceso = EnumProcesos.Formalizacion,
FechaCreacionIncidente = DateTime.Now,
Process = NombreProcesoFormalizacion,
EsEspecifico = false,
EsGarantiaReal = EsGarantiaReal,
IncidenteCompletado = false,
AsigCaso_JobFunctionAsignado = RepAsignacion.AsigCaso_JobFunctionAsignado,
FormalizadorOperacionesCredito=FormalizadorOperacionesCredito
};
DatosGeneralesFormalizacionDal.InsertarActualizar(Formalizacion);
foreach (var facilidad in FacilidadesLinea)
{
UsuarioAsignado = UsuarioIniciador;
DatosGeneralesFormalizacionDal.InsertarActualizar_Facilidad(new FormalizacionTipoFacilidades
{
IdSolicitud = CodigoSolicitud,
IdTipoFacilidad = facilidad.IdTipoFacilidad,
IdSecuenciaFacilidad = facilidad.Secuencia,
IdProceso = EnumProcesos.Formalizacion,
Incident = NumIncidente,
UsuarioAsignado = UsuarioAsignado
});
}
Formalizacion = DatosGeneralesFormalizacionDal.Obtener(Formalizacion.IdSolicitud, Formalizacion.Incident);
//genera los documentos legales
FormalizacionDocumentosLegalesDal.GenerarDocumentos(Formalizacion, EnumEtapas.FR_Gen_Doc_Legales);
#region Correo
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Rev_Info_Caso
if (EsGarantiaReal == true && IdCategoria.In(EnumCategoria.EstudioInicial, EnumCategoria.EstudioSeguimiento))
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, true, null, true, Formalizacion.Incident);
}
else if (IdCategoria == EnumCategoria.FastTrack && EsGarantiaReal == false)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, false, null, true, Formalizacion.Incident);
}
else if (EsGarantiaReal == true)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, true, null, true, Formalizacion.Incident);
}
#endregion
#endregion
}
#endregion
#region FACILIDADES EN ESPECIFICO
if (FacilidadesEspecifico != null && FacilidadesEspecifico.Count > 0)
{
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnLinea).First().NodeValue = false;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsFacilidadEnEspecifico).First().NodeValue = true;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsLinea").First().Valor = "0";
foreach (var facilidad in FacilidadesEspecifico)
{
var EsGarantiaReal = facilidad.OfertaFacilidadesGarantias.Any(g => g.TipoGarantia == 2);
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionEsGarantiaReal).First().NodeValue = EsGarantiaReal;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionIdFacilidad).First().NodeValue = facilidad.IdTipoFacilidad;
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "TipoFacilidad").First().Valor = facilidad.IdTipoFacilidad.ToString();
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "EsGarantiaReal").First().Valor = EsGarantiaReal ? "1" : "0";
RepAsignacion = AsignarRecipientesFormalizacion(solicitud.IdSolicitud, ClientePrincipal, Variables, DatosEntradaRecipientes);
log.Trace("Metodo: AsignarRecipientes Idsolicitud: " + solicitud.IdSolicitud != null ? solicitud.IdSolicitud.ToString() : "" + " IdCategoria: " + IdCategoria != null ? IdCategoria.ToString() : "" + " IdFacilidad: " + facilidad.IdTipoFacilidad != null ? facilidad.IdTipoFacilidad.ToString() : "" + " EsLinea: False EsGaratiaReal: " + EsGarantiaReal != null ? EsGarantiaReal.ToString() : "" + " Formalizador: " + FormalizadorUEN.FormalizadorAsignado_UserID != null ? FormalizadorUEN.FormalizadorAsignado_UserID : "");
bool FormalizadorOperacionesCredito= false;
AsignarRecipientes(Variables, IdCategoria, facilidad.IdTipoFacilidad, false, EsGarantiaReal, FormalizadorUEN.FormalizadorAsignado_UserID, EtapasFormalizacion, ClientePrincipal, out FormalizadorOperacionesCredito, solicitud.IdSolicitud);
Variables = RepAsignacion.Variables;
NumIncidente = UltimusIntgration.CompleteTask(UsuarioIniciador, TaskID, null,
string.Format("{0} | {1} ", summary, facilidad.TipoFacilidad.Descripcion.Trim()), Variables);
DatosGeneralesFormalizacion Formalizacion = new DatosGeneralesFormalizacion
{
IdSolicitud = CodigoSolicitud,
Incident = NumIncidente,
IdProceso = EnumProcesos.Formalizacion,
FechaCreacionIncidente = DateTime.Now,
Process = NombreProcesoFormalizacion,
IncidenteCompletado = false,
EsEspecifico = true,
EsGarantiaReal = EsGarantiaReal,
AsigCaso_JobFunctionAsignado = RepAsignacion.AsigCaso_JobFunctionAsignado,
FormalizadorOperacionesCredito=FormalizadorOperacionesCredito
};
DatosGeneralesFormalizacionDal.InsertarActualizar(Formalizacion);
UsuarioAsignado = UsuarioIniciador;
DatosGeneralesFormalizacionDal.InsertarActualizar_Facilidad(new FormalizacionTipoFacilidades
{
IdSolicitud = CodigoSolicitud,
IdTipoFacilidad = facilidad.IdTipoFacilidad,
IdSecuenciaFacilidad = facilidad.Secuencia,
IdProceso = EnumProcesos.Formalizacion,
Incident = NumIncidente,
UsuarioAsignado = UsuarioAsignado
});
Formalizacion = DatosGeneralesFormalizacionDal.Obtener(Formalizacion.IdSolicitud, Formalizacion.Incident);
//genera los documentos legales
FormalizacionDocumentosLegalesDal.GenerarDocumentos(Formalizacion, EnumEtapas.FR_Gen_Doc_Legales);
#region Correo
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Rev_Info_Caso
if (IdCategoria == EnumCategoria.FastTrack && EsGarantiaReal == false)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, false, null, true, Formalizacion.Incident);
}
else if (facilidad.IdTipoFacilidad.In(12, 13, 11))
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, true, null, true, Formalizacion.Incident);
}
else if (facilidad.IdTipoFacilidad.In(9, 10) && EsGarantiaReal == false)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, false, null, true, Formalizacion.Incident);
}
else if (facilidad.IdTipoFacilidad.In(9, 10) && EsGarantiaReal == true)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, true, null, true, Formalizacion.Incident);
}
else if (EsGarantiaReal == true)
{
NotificarCorreo(CodigoSolicitud, EtapasFormalizacion, "", null, true, null, true, Formalizacion.Incident);
}
#endregion
#endregion
}
}
#endregion
resp.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (DbEntityValidationException ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
catch (Exception ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
return resp;
}
[WebMethod]
public BaseJson GeneraIncidentes_Seguimiento(int IncidenteCredito)
{
UltimusIntegrationAPIController UltimusIntgration = new UltimusIntegrationAPIController();
BaseJson resp = new BaseJson();
string TaskID = null;
int NumIncidente = 0;
ProcesosDAL ProcesoDal = new ProcesosDAL();
SolicitudDAL SolicitudDal = new SolicitudDAL();
OfertaDAL OfertaDal = new OfertaDAL();
DatosGeneralesFormalizacionDAL DatosGeneralesFormalizacionDal = new DatosGeneralesFormalizacionDAL();
List Variables = new List();
EtapasDAL EtapasDal = new EtapasDAL();
DatosEntradaCondiciones DatosEntradaRecipientes = new DatosEntradaCondiciones();
EstructuraOrgChartDAL EstructuraOrgChartDal = new EstructuraOrgChartDAL();
EjecutivoDAL EjecutivoDal = new EjecutivoDAL();
ObtieneParametros ultParametros = new ObtieneParametros();
string UsuarioIniciador = "";
string NombreProcesoCredito = "Credito";
string NombreProcesoSeguimiento = "Seguimiento";
string EtapaInicio = EnumEtapas.RE_Seg_Inicio;
string EtapaInicioSeguimientoCondicionesEspeciales = EnumEtapas.RE_Seg_Condiciones_Especiales;
string summary = "";
int CodigoSolicitud = 0;
List ListaProcesos;
List EtapasSeguimiento;
Solicitud solicitud;
ClienteDAL ClienteDal = new ClienteDAL();
CaratulaCreditoDAL CaratulaDal = new CaratulaCreditoDAL();
Cliente ClientePrincipal;
FormalizacionDocumentosLegalesDAL FormalizacionDocumentosLegalesDal = new FormalizacionDocumentosLegalesDAL();
try
{
UsuarioIniciador = ultParametros.GetValueKeyRegedit("UsuarioProcesoUltimus", false);
ListaProcesos = ProcesoDal.Obtener();
NombreProcesoCredito = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Credito).FirstOrDefault().NombreProceso;
NombreProcesoSeguimiento = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Seguimiento).FirstOrDefault().NombreProceso;
EtapasSeguimiento = EtapasDal.Obtener(null, EnumProcesos.Seguimiento);
#region OBTIENE TASKID ETAPA INICIO
using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress))
{
string error = string.Empty;
UltimusIncident DataTask = new UltimusIncident();
if (!UltimusClient.GetTaskByFilters(UsuarioIniciador, NombreProcesoSeguimiento, EtapaInicio, 0, out DataTask, out error) || !string.IsNullOrWhiteSpace(error))
throw new Exception("GetTaskByFilters: no se pudo obtener el taskid para generar los incidentes de seguimiento. " + error);
TaskID = DataTask.TaskId;
}
#endregion
solicitud = SolicitudDal.Obtener(IncidenteCredito, NombreProcesoCredito);
if (solicitud == null)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
resp.DescripcionRespuesta = "No se encontró la solicitud";
return resp;
}
CodigoSolicitud = solicitud.IdSolicitud;
ClientePrincipal = ClienteDal.ObtenerPrincipal(CodigoSolicitud);
#region SUMMARY Y VARIABLES
#region ARMA SUMMARY
string sNombreCliente = ClientePrincipal != null ? ClientePrincipal.IdTipoCliente == EnumTipoCliente.Fisico ? string.Format("{0} {1}", ClientePrincipal.PrimerNombre.Trim(), ClientePrincipal.PrimerApellido.Trim()) : ClientePrincipal.RazonSocial.Trim() : string.Empty;
summary = ClientePrincipal != null ? string.Format("{0} | {1} | Sol. #{2}", ClientePrincipal.NumeroIdentificacion.Trim(), sNombreCliente, solicitud.IdSolicitud.ToString()) : string.Empty;
#endregion
ICollection ListaCaratulaCreditoCondicionesEspeciales = CaratulaDal.ObtenerCondicionesEspeciales(solicitud.IdSolicitud);
//ICollection ListaCaratulaCreditoExcepcionesPolitica = CaratulaDal.ObtenerExcepcionesPolitica(solicitud.IdSolicitud);
foreach (CaratulaCreditoCondicionesEspeciales ItemCaratulaCreditoCondicionesEspeciales in ListaCaratulaCreditoCondicionesEspeciales)
{
if (ItemCaratulaCreditoCondicionesEspeciales.IdClasificacion.In(1, 2))
{
DatosGeneralesSeguimientoDAL objConDatosGeneralesSeguimiento = new DatosGeneralesSeguimientoDAL();
CaratulaCreditoCondicionesEspecialesBitacoraDAL objConCCCondicionesEspecialesBitacora = new CaratulaCreditoCondicionesEspecialesBitacoraDAL();
CaratulaCreditoCondicionesEspecialesBitacora objActualCCCondicionesEspecialesBitacora = objConCCCondicionesEspecialesBitacora.ObtenerUltimoRegistro(ItemCaratulaCreditoCondicionesEspeciales.IdSolicitud, ItemCaratulaCreditoCondicionesEspeciales.Secuencia);
if (objActualCCCondicionesEspecialesBitacora == null)
{
List ListaRecipienteSegCondicionesEspeciales = new List
{
string.Format(EnumOC.User, ItemCaratulaCreditoCondicionesEspeciales.ResponsableCumplimiento_UserId)
};
Variables = new List
{
new NodeVariables { NodeName = EnumVariblesUltimus.TaskDataGlobalIdSolicitud, NodeValue = solicitud.IdSolicitud },
new NodeVariables { NodeName = EnumVariblesUltimus.TaskDataGlobalIncidenteProcesoPadre, NodeValue = IncidenteCredito },
new NodeVariables { NodeName = EnumVariblesUltimus.TaskDataGlobalIdTipoSeguimiento, NodeValue = 1 },
new NodeVariables { NodeName = EnumVariblesUltimus.TaskDataGlobalCondicionesEspecialesSecuencia, NodeValue = ItemCaratulaCreditoCondicionesEspeciales.Secuencia },
new NodeVariables { NodeName = EnumVariblesUltimus.TaskDataGlobalCondicionesEspecialesRecipienteSegCondicionesEspeciales, NodeValues = ListaRecipienteSegCondicionesEspeciales }
};
NumIncidente = UltimusIntgration.CompleteTask(UsuarioIniciador, TaskID, null, summary, Variables);
#region RegistroDatosGeneralesSeguimiento
BaseJson respRegistroDatosGeneralesSeguimiento = objConDatosGeneralesSeguimiento.InsertarActualizar(new DatosGeneralesSeguimiento()
{
IdSolicitud = ItemCaratulaCreditoCondicionesEspeciales.IdSolicitud,
IdProceso = EnumProcesos.Seguimiento,
Incident = NumIncidente,
Secuencia = ItemCaratulaCreditoCondicionesEspeciales.Secuencia,
IdTipoSeguimiento = EnumTipoSeguimiento.CondicionesEspeciales,
UsuarioCreador = UsuarioIniciador
});
if (respRegistroDatosGeneralesSeguimiento.CodigoRespuesta != TipoCodigoRespuesta.EXITOSO.ToString())
{
throw new Exception(string.Format("Ha ocurrio un problema al intentar registrar el Incidente de Seguimiento para Excepciones Politica(DatosGeneralesSeguimiento) => Solicitud:{0}, Incident:{1}, Secuencia:{2}", ItemCaratulaCreditoCondicionesEspeciales.IdSolicitud, NumIncidente, ItemCaratulaCreditoCondicionesEspeciales.Secuencia));
}
#endregion
#region RegistroCaratulaCreditoCondicionesEspecialesBitacora
BaseJson respRegistroCCCondicionesEspecialesBitacora = objConCCCondicionesEspecialesBitacora.InsertarActualizar(new CaratulaCreditoCondicionesEspecialesBitacora()
{
IdSolicitud = ItemCaratulaCreditoCondicionesEspeciales.IdSolicitud,
IdProceso = EnumProcesos.Seguimiento,
Incident = NumIncidente,
Secuencia = ItemCaratulaCreditoCondicionesEspeciales.Secuencia,
IdTipoSeguimiento = EnumTipoSeguimiento.CondicionesEspeciales,
IdSeguimiento = 0,
IdDecision = null,
Observaciones = null,
Responsable_UserId = null,
Responsable_UserName = null,
FechaCreacion = DateTime.Now,
UsuarioCreador = UsuarioIniciador,
IdEtapa = EtapasSeguimiento.Where(x => x.DescripcionEtapa.Contains(EtapaInicioSeguimientoCondicionesEspeciales)).FirstOrDefault().IdEtapa,
Send = false
});
if (respRegistroCCCondicionesEspecialesBitacora.CodigoRespuesta != TipoCodigoRespuesta.EXITOSO.ToString())
{
throw new Exception(string.Format("Ha ocurrio un problema al intentar registrar el Incidente de Seguimiento para Excepciones Politica => Solicitud:{0}, Incident:{1}, Secuencia:{2}", ItemCaratulaCreditoCondicionesEspeciales.IdSolicitud, NumIncidente, ItemCaratulaCreditoCondicionesEspeciales.Secuencia));
}
#endregion
}
}
}
//foreach (CaratulaCreditoExcepcionesPolitica ItemCaratulaCreditoExcepcionesPolitica in ListaCaratulaCreditoExcepcionesPolitica)
//{
// DatosGeneralesSeguimientoDAL objConDatosGeneralesSeguimiento = new DatosGeneralesSeguimientoDAL();
// CaratulaCreditoExcepcionesPoliticaBitacoraDAL objConCCExcepcionesPoliticaBitacora = new CaratulaCreditoExcepcionesPoliticaBitacoraDAL();
// CaratulaCreditoExcepcionesPoliticaBitacora objActualCCExcepcionesPoliticaBitacora = objConCCExcepcionesPoliticaBitacora.ObtenerUltimoRegistro(ItemCaratulaCreditoExcepcionesPolitica.IdSolicitud, ItemCaratulaCreditoExcepcionesPolitica.Secuencia);
// if (objActualCCExcepcionesPoliticaBitacora == null)
// {
// List ListaRecipienteSegExcepcionesPolitica = new List();
// ListaRecipienteSegExcepcionesPolitica.Add(string.Format("USER:org=Business Organization, user={0}", ItemCaratulaCreditoExcepcionesPolitica.ResponsableCumplimiento_UserId));
// Variables = new List();
// Variables.Add(new NodeVariables { NodeName = "TaskData.Global.IdSolicitud", NodeValue = solicitud.IdSolicitud });
// Variables.Add(new NodeVariables { NodeName = "TaskData.Global.IncidenteProcesoPadre", NodeValue = IncidenteCredito });
// Variables.Add(new NodeVariables { NodeName = "TaskData.Global.IdTipoSeguimiento", NodeValue = 2 });
// Variables.Add(new NodeVariables { NodeName = "TaskData.Global.ExcepcionesPolitica.Secuencia", NodeValue = ItemCaratulaCreditoExcepcionesPolitica.Secuencia });
// Variables.Add(new NodeVariables { NodeName = "TaskData.Global.ExcepcionesPolitica.RecipienteSegExcepcionesPolitica", NodeValues = ListaRecipienteSegExcepcionesPolitica });
// NumIncidente = UltimusIntgration.CompleteTask(UsuarioIniciador, TaskID, null, summary, Variables);
// #region RegistroDatosGeneralesSeguimiento
// BaseJson respRegistroDatosGeneralesSeguimiento = objConDatosGeneralesSeguimiento.InsertarActualizar(new DatosGeneralesSeguimiento()
// {
// IdSolicitud = ItemCaratulaCreditoExcepcionesPolitica.IdSolicitud,
// IdProceso = (int)EnumProcesos.Seguimiento,
// Incident = NumIncidente,
// Secuencia = ItemCaratulaCreditoExcepcionesPolitica.Secuencia,
// IdTipoSeguimiento = (int)EnumTipoSeguimiento.ExcepcionesPolitica,
// UsuarioCreador = UsuarioIniciador
// });
// if (respRegistroDatosGeneralesSeguimiento.CodigoRespuesta != TipoCodigoRespuesta.EXITOSO.ToString())
// {
// throw new Exception(string.Format("Ha ocurrio un problema al intentar registrar el Incidente de Seguimiento para Excepciones Politica(DatosGeneralesSeguimiento) => Solicitud:{0}, Incident:{1}, Secuencia:{2}", ItemCaratulaCreditoExcepcionesPolitica.IdSolicitud, NumIncidente, ItemCaratulaCreditoExcepcionesPolitica.Secuencia));
// }
// #endregion
// #region RegistroCaratulaCreditoExcepcionesPoliticaBitacora
// BaseJson respRegistroCCExcepcionesPoliticaBitacora = objConCCExcepcionesPoliticaBitacora.InsertarActualizar(new CaratulaCreditoExcepcionesPoliticaBitacora()
// {
// IdSolicitud = ItemCaratulaCreditoExcepcionesPolitica.IdSolicitud,
// IdProceso = (int)EnumProcesos.Seguimiento,
// Incident = NumIncidente,
// Secuencia = ItemCaratulaCreditoExcepcionesPolitica.Secuencia,
// IdTipoSeguimiento = (int)EnumTipoSeguimiento.ExcepcionesPolitica,
// IdSeguimiento = 0,
// IdDecision = null,
// Observaciones = null,
// Responsable_UserId = null,
// Responsable_UserName = null,
// FechaCreacion = DateTime.Now,
// UsuarioCreador = UsuarioIniciador,
// IdEtapa = EtapasSeguimiento.Where(x => x.DescripcionEtapa.Contains(EtapaInicioSeguimientoExcepcionesPolitica)).FirstOrDefault().IdEtapa,
// Send = false
// });
// if (respRegistroCCExcepcionesPoliticaBitacora.CodigoRespuesta != TipoCodigoRespuesta.EXITOSO.ToString())
// {
// throw new Exception(string.Format("Ha ocurrio un problema al intentar registrar el Incidente de Seguimiento para Excepciones Politica(CaratulaCreditoExcepcionesPoliticaBitacora) => Solicitud:{0}, Incident:{1}, Secuencia:{2}", ItemCaratulaCreditoExcepcionesPolitica.IdSolicitud, NumIncidente, ItemCaratulaCreditoExcepcionesPolitica.Secuencia));
// }
// #endregion
// }
//}
#endregion
resp.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (DbEntityValidationException ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
catch (Exception ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
return resp;
}
[WebMethod]
public BaseJson DevuelveIncidente_Formalizacion(int IncidenteCredito, int IncidenteFormalizacion)
{
UltimusIntegrationAPIController UltimusIntgration = new UltimusIntegrationAPIController();
BaseJson resp = new BaseJson();
SolicitudDAL SolicitudDal = new SolicitudDAL();
DatosGeneralesFormalizacionDAL DatosGeneralesFormalizacionDal = new DatosGeneralesFormalizacionDAL();
ProcesosDAL ProcesoDal = new ProcesosDAL();
string NombreProcesoFormalizacion = "Formalizacion";
string NombreProcesoCredito = "Credito";
string EtapaInicio = "FR_Inicio";
string EtapaFormalizacionCredito = "FR_Proceso_Formalizacion";
int CodigoSolicitud = 0;
List Variables = new List();
List ListaProcesos;
DatosGeneralesFormalizacion TramiteActual;
List TramitesFormalizacionActuales;
CaratulaCreditoDAL ConnCaratula = new CaratulaCreditoDAL();
AprobacionesComite AprobacionesComite = new AprobacionesComite();
List Aprobaciones = new List();
string User = string.Empty;
string UserFullName = string.Empty;
try
{
ListaProcesos = ProcesoDal.Obtener();
NombreProcesoCredito = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Credito).FirstOrDefault().NombreProceso;
NombreProcesoFormalizacion = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Formalizacion).FirstOrDefault().NombreProceso;
TramiteActual = DatosGeneralesFormalizacionDal.Obtener(null, IncidenteFormalizacion);
TramitesFormalizacionActuales = DatosGeneralesFormalizacionDal.Obtener_TramitesFormalizacion(CodigoSolicitud);
var solicitud = SolicitudDal.Obtener(IncidenteCredito, NombreProcesoCredito);
CodigoSolicitud = solicitud.IdSolicitud;
Variables.Add(new NodeVariables
{
NodeName = "TaskData.Global.Aprobaciones.ProvieneFormalizacion",
NodeValue = true
});
if (TramiteActual != null && solicitud != null)
{
if (!TramitesFormalizacionActuales.Any(c => c.ActivoDevolucionAprobacion == true))
{
//reactiva etapa aprobacion en proceso de credito
using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress))
{
UltimusIncident DataTask = new UltimusIncident();
string error = "";
if (!UltimusClient.GetTaskByFilters(null, NombreProcesoCredito, EtapaFormalizacionCredito, solicitud.Incidente.Value, out DataTask, out error) || !string.IsNullOrEmpty(error))
throw new Exception("GetTaskByFilters: no se pudo obtener el taskid para activar el incidente de Credito. " + error);
//activa el inciente de credito
UltimusIntgration.CompleteTask(DataTask.User, DataTask.TaskId, null, DataTask.Summary, Variables);
User = DataTask.User;
UserFullName = DataTask.UserFullName;
}
TramiteActual.ActivoDevolucionAprobacion = true;
TramiteActual.EnColaDevolucion = false;
}
else
{
TramiteActual.ActivoDevolucionAprobacion = false;
TramiteActual.EnColaDevolucion = true;
}
TramiteActual.FechaDevolucion = DateTime.Now;
DatosGeneralesFormalizacionDal.InsertarActualizar(TramiteActual);
Aprobaciones = ConnCaratula.ObtenerAprobacionesActuales(solicitud.IdSolicitud);
AprobacionesComite.IdSolicitud = solicitud.IdSolicitud;
AprobacionesComite.Orden = Aprobaciones.Max(x => x.Orden) + 1;
AprobacionesComite.Reconsideraciones = Aprobaciones.FirstOrDefault().Reconsideraciones;
AprobacionesComite.Step = "FR_Rev_Info_Caso";
AprobacionesComite.Process = "Formalizacion";
AprobacionesComite.UserName = User;
AprobacionesComite.NombreCompleto = UserFullName;
AprobacionesComite.Incident = IncidenteFormalizacion;
AprobacionesComite.NombreIntancia = "Devolución de Caratula";
AprobacionesComite.Fecha = DateTime.Now;
AprobacionesComite.FechaCreacion = DateTime.Now;
ConnCaratula.ActualizarAprobacionComite(AprobacionesComite);
CaratulaCredito Caratula = ConnCaratula.ObtenerCaratula(solicitud.IdSolicitud);
Caratula.IdEstadoCaratula = null;
Caratula.FechaAprobacion = null;
ConnCaratula.InsertarActualizar(Caratula);
resp.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
return resp;
}
else
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "No se encontro la solicitud de credito o el incidente de formalización";
}
}
catch (DbEntityValidationException ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
catch (Exception ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
return resp;
}
[WebMethod]
public BaseJson CompletaIncidente_Formalizacion(int IncidenteCredito, int IncidenteFormalizacion)
{
UltimusIntegrationAPIController UltimusIntgration = new UltimusIntegrationAPIController();
BaseJson resp = new BaseJson();
SolicitudDAL SolicitudDal = new SolicitudDAL();
DatosGeneralesFormalizacionDAL DatosGeneralesFormalizacionDal = new DatosGeneralesFormalizacionDAL();
ProcesosDAL ProcesoDal = new ProcesosDAL();
List Variables = new List();
string NombreProcesoFormalizacion = "Formalizacion";
string NombreProcesoCredito = "Credito";
string EtapaCredito_Formalizacion = "FR_Proceso_Formalizacion";
int CodigoSolicitud = 0;
List ListaProcesos;
DatosGeneralesFormalizacion TramiteActual;
List TramitesFormalizacionActuales;
Solicitud solicitud;
try
{
ListaProcesos = ProcesoDal.Obtener();
NombreProcesoCredito = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Credito).FirstOrDefault().NombreProceso;
NombreProcesoFormalizacion = ListaProcesos.Where(c => c.IdProceso == EnumProcesos.Formalizacion).FirstOrDefault().NombreProceso;
solicitud = SolicitudDal.Obtener(IncidenteCredito, NombreProcesoCredito);
CodigoSolicitud = solicitud.IdSolicitud;
TramiteActual = DatosGeneralesFormalizacionDal.Obtener(null, IncidenteFormalizacion);
Variables.Add(new NodeVariables
{
NodeName = "TaskData.Global.Finalizar",
NodeValue = true
});
//registra que el inciente fue completado
if (TramiteActual != null && solicitud != null)
{
TramiteActual.IncidenteCompletado = true;
DatosGeneralesFormalizacionDal.InsertarActualizar(TramiteActual);
}
//carga data actualizada nuevamente
TramitesFormalizacionActuales = DatosGeneralesFormalizacionDal.Obtener_TramitesFormalizacion(CodigoSolicitud);
//valida si todos los incidentes de formalizacion fueron completados, para asi completar incidente de credito
if (TramitesFormalizacionActuales != null && TramitesFormalizacionActuales.Count > 0
&& !TramitesFormalizacionActuales.Where(c => c.IncidenteCompletado != true).Any())
{
using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress))
{
UltimusIncident DataTask = new UltimusIncident();
string error = "";
if (!UltimusClient.GetTaskByFilters(null, NombreProcesoCredito, EtapaCredito_Formalizacion, solicitud.Incidente.Value, out DataTask, out error) || !string.IsNullOrWhiteSpace(error))
throw new Exception("GetTaskByFilters: no se pudo obtener el taskid para completar el incidente de credito. " + error);
//completa el inciente de credito
UltimusIntgration.CompleteTask(DataTask.User, DataTask.TaskId, null, DataTask.Summary, Variables);
}
}
resp.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (DbEntityValidationException ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
catch (Exception ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
resp.DescripcionRespuesta = "Error al Generar los incidentes por favor verificar los logs del servicio";
log.Error(ex);
}
return resp;
}
[WebMethod]
public DatosEntradaCondiciones EvaluarCondiciones(DatosEntradaCondiciones DatosEntrada)
{
MaestroCondicionesProceso MaestroCondiciones;
try
{
DatosEntrada.EvaluacionCondiciones.Clear();
using (CreditoContex db = new CreditoContex())
{
if (DatosEntrada.ListaParametros == null || DatosEntrada.ListaParametros.Count == 0)
{
DatosEntrada.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
DatosEntrada.DescripcionRespuesta = "Se requiere la lista de párametros";
return DatosEntrada;
}
#region BUSCA MAESTRO SEGUN LOS FILTROS
var TipoParametros = db.TipoParametrosCondiciones.AsNoTracking().ToList();
DatosEntrada.ListaParametros = (from l in DatosEntrada.ListaParametros
join tp in TipoParametros on l.NombreParametro equals tp.NombreParametro
select l.UpdateProperties(c => { c.CodTipoDato = tp.CodTipoDato; return c; })
).ToList();
var ParametrosProceso = db.ParametrosGlobalesProceso.AsNoTracking().Include(c => c.TipoParametrosCondiciones)
.Include(c => c.FiltroParametrosGlobalesMaestro).Where(c => c.CodProceso == DatosEntrada.CodigoProceso && c.CodEvaluacion == DatosEntrada.CodEvaluacion).ToList();
var PrimerParametroProceso = ParametrosProceso != null ? ParametrosProceso.FirstOrDefault() : null;
var ParametroActual = PrimerParametroProceso == null ? null : DatosEntrada.ListaParametros.Where(c => c.NombreParametro == PrimerParametroProceso.TipoParametrosCondiciones.NombreParametro).FirstOrDefault();
var ListaMaestros = PrimerParametroProceso == null ? null : PrimerParametroProceso.FiltroParametrosGlobalesMaestro.Where(c => c.Valor == ParametroActual.Valor).Select(c => c.CodMaestro).ToList();
if (ParametrosProceso != null && ParametrosProceso.Count > 1 && ListaMaestros != null && ListaMaestros.Count > 0)
{
var ListaMaestrosExcluidos = new List();
foreach (var item in ParametrosProceso.Where(c => c.CodParametro != PrimerParametroProceso.CodParametro).ToList())
{
ParametroActual = DatosEntrada.ListaParametros.Where(c => c.NombreParametro == item.TipoParametrosCondiciones.NombreParametro).FirstOrDefault();
if (ListaMaestros != null && ListaMaestros.Count > 0)
foreach (var CodMaestro in ListaMaestros)
{
if (!item.FiltroParametrosGlobalesMaestro.Any(c => c.Valor == ParametroActual.Valor && c.CodMaestro == CodMaestro))
ListaMaestrosExcluidos.Add(CodMaestro);
}
ListaMaestros = ListaMaestros.Where(c => ListaMaestrosExcluidos.Contains(c) == false).ToList();
}
}
//busca maestro por defecto
if (ListaMaestros == null || ListaMaestros.Count == 0)
{
MaestroCondiciones = db.MaestroCondicionesProceso.AsNoTracking()
.Include("FiltroCondicionesMaestro.TipoCondiciones")
.Include("FiltroCondicionesMaestro.ReglasCondiciones.TipoParametrosCondiciones")
.Where(c => c.Habilitado == true && c.MaestroPorDefecto == true && c.CodProceso == DatosEntrada.CodigoProceso
&& (!c.FechaInicio.HasValue || c.FechaInicio < DateTime.Now)
&& (!c.FechaVencimiento.HasValue || c.FechaVencimiento > DateTime.Now)
).FirstOrDefault();
}
else
{
MaestroCondiciones = db.MaestroCondicionesProceso.AsNoTracking()
.Include("FiltroCondicionesMaestro.TipoCondiciones")
.Include("FiltroCondicionesMaestro.ReglasCondiciones.TipoParametrosCondiciones.TipoDatoParametros")
.Where(c => c.Habilitado == true && c.CodMaestro == ListaMaestros.FirstOrDefault() && c.CodProceso == DatosEntrada.CodigoProceso
&& (!c.FechaInicio.HasValue || c.FechaInicio < DateTime.Now)
&& (!c.FechaVencimiento.HasValue || c.FechaVencimiento > DateTime.Now)
).FirstOrDefault();
}
if (MaestroCondiciones == null)
{
DatosEntrada.CodigoRespuesta = TipoCodigoRespuesta.ADVERTENCIA.ToString();
DatosEntrada.DescripcionRespuesta = "No se encontró configuración para la conbinación de párametros";
return DatosEntrada;
}
#endregion
foreach (var condicion in MaestroCondiciones.FiltroCondicionesMaestro)
{
List FormulaRegla = new List();
bool? ResultadoEvaluacion = null;
if (condicion.ReglasCondiciones == null || condicion.ReglasCondiciones.Count == 0)
continue;
foreach (var regla in condicion.ReglasCondiciones)
{
bool EsAprobado = false;
var campo = DatosEntrada.ListaParametros.Where(c => c.NombreParametro == regla.TipoParametrosCondiciones.NombreParametro).FirstOrDefault();
if (campo == null) continue;
#region EVALUA REGLA ACTUAL
switch (regla.OperadorAritmetico.Trim())
{
case "=":
if (campo.CodTipoDato == TiposDatos.Bit && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = campo.Valor == regla.ValorDefecto;
else if (campo.CodTipoDato == TiposDatos.Cadena)
EsAprobado = campo.Valor == regla.ValorDefecto;
else if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) == decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) == int.Parse(regla.ValorDefecto);
break;
case "<":
if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) < decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) < int.Parse(regla.ValorDefecto);
break;
case ">":
if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) > decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) > int.Parse(regla.ValorDefecto);
break;
case "<=":
if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) <= decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) <= int.Parse(regla.ValorDefecto);
break;
case ">=":
if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) >= decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) >= int.Parse(regla.ValorDefecto);
break;
case "!=":
case "<>":
if (campo.CodTipoDato == TiposDatos.Bit && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = bool.Parse(campo.Valor) != bool.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Cadena)
EsAprobado = campo.Valor != regla.ValorDefecto;
else if (campo.CodTipoDato == TiposDatos.Decimal && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = decimal.Parse(campo.Valor) != decimal.Parse(regla.ValorDefecto);
else if (campo.CodTipoDato == TiposDatos.Entero && !string.IsNullOrEmpty(campo.Valor))
EsAprobado = int.Parse(campo.Valor) != int.Parse(regla.ValorDefecto);
break;
default:
break;
}
#endregion
#region ARMA FORMULA DE LA CONDICION POR CADA REGLA
if (string.IsNullOrWhiteSpace(regla.NombreSubConjunto))//agrega la evaluacion de la regla
{
if (FormulaRegla.Count > 0)
FormulaRegla.Add(string.IsNullOrWhiteSpace(regla.OperadorLogicaParametro) ? "AND" : regla.OperadorLogicaParametro.ToUpper());
FormulaRegla.Add(EsAprobado ? "true" : "false");
}
else//agrega la evaluacion a un grupo nuevo o existente
{
if (FormulaRegla.Contains("GRUPO_" + regla.NombreSubConjunto.ToUpper() + "("))//agrega la evaluacion de la regla a un grupo registrado
{
int IdInicio = FormulaRegla.IndexOf("GRUPO_" + regla.NombreSubConjunto.ToUpper() + "(");
int IdCierre = FormulaRegla.IndexOf(")", IdInicio);
FormulaRegla.Insert(IdCierre, string.IsNullOrWhiteSpace(regla.OperadorLogicaParametro) ? "AND" : regla.OperadorLogicaParametro.ToUpper());
FormulaRegla.Insert(IdCierre + 1, EsAprobado ? "true" : "false");
}
else//registra un nuevo grupo y agrega la evaluacion de la regla
{
if (FormulaRegla.Count > 0)
FormulaRegla.Add(string.IsNullOrWhiteSpace(regla.OperadorLogicoSubConjunto) ? "AND" : regla.OperadorLogicoSubConjunto.ToUpper());
FormulaRegla.Add("GRUPO_" + regla.NombreSubConjunto.ToUpper() + "(");
FormulaRegla.Add(EsAprobado ? "true" : "false");
FormulaRegla.Add(")");
}
}
#endregion
}//fin evalua reglas
#region EJECUTA FORMULA DE LA CONDICION
/*EJEMPLOS:
true AND false
true OR false AND false
true AND GRUPO_A(true AND false)
GRUPO_A(true OR false) OR true
GRUPO_A(true OR false) OR GRUPO_B(true AND true)
*/
string grupoActual = null;
string operandoActual = null;
string operandoGrupo = null;
bool? resultadoGrupo = null;
foreach (var item in FormulaRegla)
{
if (item.Trim().ToLower() == "or" || item.Trim().ToLower() == "and")
{
operandoActual = item.Trim().ToLower() == "or" ? "OR" : "AND"; continue;
}
else if (item.Contains("GRUPO_") && string.IsNullOrEmpty(grupoActual))
{
grupoActual = item;
operandoGrupo = operandoActual;
operandoActual = null;
continue;
}
else if (item == ")" && !string.IsNullOrEmpty(grupoActual))
{
if (ResultadoEvaluacion == null)
ResultadoEvaluacion = resultadoGrupo;
else if (operandoGrupo == "OR")
ResultadoEvaluacion = ResultadoEvaluacion.Value || resultadoGrupo.Value;
else//AND
ResultadoEvaluacion = ResultadoEvaluacion.Value && resultadoGrupo.Value;
grupoActual = null;
operandoGrupo = null;
operandoActual = null;
resultadoGrupo = null;
continue;
}
else if (!string.IsNullOrEmpty(grupoActual) && (item == "true" || item == "false"))
{
if (resultadoGrupo == null)
resultadoGrupo = bool.Parse(item);
else if (operandoActual == "OR")
resultadoGrupo = resultadoGrupo.Value || bool.Parse(item);
else//AND
resultadoGrupo = resultadoGrupo.Value && bool.Parse(item);
operandoActual = null;
}
else if (string.IsNullOrEmpty(grupoActual) && (item == "true" || item == "false"))
{
if (ResultadoEvaluacion == null)
ResultadoEvaluacion = bool.Parse(item);
else if (operandoActual == "OR")
ResultadoEvaluacion = ResultadoEvaluacion.Value || bool.Parse(item);
else//AND
ResultadoEvaluacion = ResultadoEvaluacion.Value && bool.Parse(item);
operandoActual = null;
}
}
#endregion
DatosEntrada.EvaluacionCondiciones.Add(new EvaluacionCondicion
{
Nombre = condicion.TipoCondiciones.NombreCondicion,
Aprobado = ResultadoEvaluacion == true
});
}
}
}
catch (Exception ex)
{
DatosEntrada.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
DatosEntrada.DescripcionRespuesta = "Error al evaluar condiciones";
log.Error(ex);
}
return DatosEntrada;
}
BaseJson EnviarCorreoAutomatico(CorreosAutomaticosPendientes correo, bool? CordinadorOperacionesCrediticias = null, List BookmarkExtra = null, bool? UEN = null, int? IncidenteFormalizacion = null)
{
BaseJson model = new BaseJson();
FiltroCorreoProcesoJSON filtro = new FiltroCorreoProcesoJSON();
EtapasDAL EtapasDal = new EtapasDAL();
SolicitudDAL SolicitudDal = new SolicitudDAL();
UltimusUser UserEmail = null;
ClienteDAL ClienteDal = new ClienteDAL();
string NombreCliente = string.Empty;
try
{
var solicitud = SolicitudDal.Obtener(correo.IdSolicitud);
var etapa = correo.Etapas;
var ClientePrincipal = ClienteDal.ObtenerPrincipal(correo.IdSolicitud);
ClientePrincipal.BitacoraDocumentosCliente = new BitacoraDocumentosClienteDAL().Obtener(null, ClientePrincipal.IdCliente);
filtro.Proceso = "Credito";
filtro.NombreFiltro = correo.NombreFiltroCorreo;
filtro.CodSolicitud = (long)correo.IdSolicitud;
filtro.Etapa = etapa.DescripcionEtapa;
filtro.Incidente = solicitud.Incident ?? 0;
filtro.UserID = correo.UserID;
filtro.CC = new List();
filtro.Destinatario = new List();
filtro.ListaParametros = new List();
filtro.ListaBookmarks = new List();
filtro.DocumentosAdjuntos = new List();
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
string error = "";
#region FR_Rev_Info_Caso
if (correo.NombreFiltroCorreo == "Formalizacion_Rev_Caso")
{
UserEmail = null;
if (CordinadorOperacionesCrediticias == true)
{
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Coordinador de operaciones crediticias", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
if (UEN == true)
{
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Jefe de Operaciones Crediticias", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
}
}
else
{
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Coordinador de descuento de facturas", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
if (UEN == true)
{
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Jefe de Operaciones de Factoreo", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
}
}
if (UserEmail == null)
{
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Coordinador de operaciones crediticias", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "INCIDENTE", Valor = solicitud.Incidente.HasValue ? solicitud.Incidente.ToString() : "0" });
}
else if (correo.NombreFiltroCorreo == "NotificarCola")
{
if (CordinadorOperacionesCrediticias == true)
{
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Coordinador de operaciones crediticias", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Jefe de Operaciones Crediticias", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
}
else
{
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Coordinador de descuento de facturas", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", "Jefe de Operaciones de Factoreo", out UserEmail, out error);
filtro.Destinatario.Add(UserEmail.EmailAddress);
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "INCIDENTE", Valor = IncidenteFormalizacion.ToString() });
}
switch (ClientePrincipal.IdTipoCliente)
{
case EnumTipoCliente.Fisico:
NombreCliente = string.Format("{0} {1}", ClientePrincipal.PrimerNombre.Trim(), ClientePrincipal.PrimerApellido.Trim());
break;
case EnumTipoCliente.Juridico:
NombreCliente = ClientePrincipal.RazonSocial.Trim();
break;
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDSOLICITUD", Valor = solicitud.IdSolicitud.ToString() });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "NOMBRECLIENTE", Valor = NombreCliente });
#endregion
if (BookmarkExtra != null && BookmarkExtra.Count > 0)
filtro.ListaBookmarks.AddRange(BookmarkExtra);
#region Adjuntar
if (UEN == true)
{
string rutaCaratula = ClientePrincipal.BitacoraDocumentosCliente.Where(x => x.IdTipoDocumento == 1).FirstOrDefault().RutaFisicaAdjunto;
if (!string.IsNullOrWhiteSpace(rutaCaratula))
filtro.DocumentosAdjuntos.Add(rutaCaratula);
}
#endregion
using (UltimusFormAPIController InterfaceClient = new UltimusFormAPIController())
filtro = InterfaceClient.EnviarCorreoFiltro(filtro);
}
}
catch (Exception ex)
{
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
log.Error(ex);
}
return model;
}
BaseJson NotificarCorreo(int? IdSolicitud, List EtapasFormalizacion, string UsuarioEmail, bool? JFG = null, bool? CordinadorOperacionesCrediticias = null, bool? UEN = null, bool? cola = null, int? IncidenteFormalizacion = null)
{
BaseJson resp = new BaseJson();
Etapas EtapaActual = new Etapas();
EtapasDAL EtapasDal = new EtapasDAL();
CorreosAutomaticosPendientes DatoCorreo = new CorreosAutomaticosPendientes();
List BookmarkExtra = new List();
List ListaRecipientes = new List();
string error = null;
UltimusUser UserEmail = null;
string RecipientesNotificados = string.Empty;
try
{
string UsuarioIniciador = new ObtieneParametros().GetValueKeyRegedit("UsuarioProcesoUltimus", false);
EtapasFormalizacion = EtapasDal.Obtener(null, EnumProcesos.Formalizacion);
EtapaActual = EtapasFormalizacion.Where(c => c.DescripcionEtapa == EnumEtapas.FR_Rev_Info_Caso).FirstOrDefault();
DatoCorreo.IdSolicitud = Convert.ToInt32(IdSolicitud);
DatoCorreo.UserID = UsuarioIniciador;
DatoCorreo.IdEtapa = EtapaActual.IdEtapa;
DatoCorreo.Etapas = EtapaActual;
DatoCorreo.NombreFiltroCorreo = cola.HasValue ? cola.Value ? "NotificarCola" : "Formalizacion_Rev_Caso" : "Formalizacion_Rev_Caso";
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
if (JFG == false)
{
UserEmail = null;
IntegrationClient.GetUserInformation(UsuarioEmail, out UserEmail, out error);
if (UserEmail != null)
RecipientesNotificados = UserEmail.strUserFullName;
}
else if (JFG == true)
{
UserEmail = null;
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", UsuarioEmail, out UserEmail, out error);
if (UserEmail != null)
RecipientesNotificados = UserEmail.strUserFullName;
}
BookmarkExtra.Add(new BookmarkCorreoJSON
{
Nombre = "FORMALIZADOR",
Valor = RecipientesNotificados
});
if (cola.HasValue && cola.Value)
BookmarkExtra.Add(new BookmarkCorreoJSON
{
Nombre = "ETAPA",
Valor = EtapaActual.DescripcionEtapa
});
}
EnviarCorreoAutomatico(DatoCorreo, CordinadorOperacionesCrediticias, BookmarkExtra, UEN, IncidenteFormalizacion);
}
catch (Exception ex)
{
resp.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
log.Error(ex);
}
return resp;
}
[WebMethod]
public bool EnviarCorreoDocumentacionNoEntregada(int Incidente, string Step)
{
bool respuesta = true;
Solicitud Solicitud = new Solicitud();
Procesos Proceso = new Procesos();
SolicitudDAL SolicitudDAL = new SolicitudDAL();
ProcesosDAL ProcesosDAL = new ProcesosDAL();
Cliente Cliente = new Cliente();
ClienteDAL ClienteDal = new ClienteDAL();
FiltroCorreoProcesoJSON filtro = new FiltroCorreoProcesoJSON();
EtapasDAL EtapasDal = new EtapasDAL();
UltimusUser UserEmail = null;
List ListaEstructuraOC = null;
List ListaUserEmail = null;
DetalleRequisitos DetalleRequisitos = new DetalleRequisitos();
DetalleRequisitosDAL DetalleRequisitosDAL = new DetalleRequisitosDAL();
try
{
Proceso = ProcesosDAL.Obtener(EnumProcesos.Credito);
Solicitud = SolicitudDAL.Obtener(Incidente, Proceso.NombreProceso);
Cliente = ClienteDal.ObtenerPrincipal(Solicitud.IdSolicitud);
DetalleRequisitos = DetalleRequisitosDAL.Obtener(Solicitud.IdSolicitud);
string UsuarioIniciador = new ObtieneParametros().GetValueKeyRegedit("UsuarioProcesoUltimus", false);
if (DetalleRequisitos != null && DetalleRequisitos.DocumentacionEntregada == false)
{
filtro.Proceso = Proceso.NombreProceso;
filtro.NombreFiltro = "TerminarProcesoNotificar";
filtro.CodSolicitud = (long)Solicitud.IdSolicitud;
filtro.Etapa = Step;
filtro.Incidente = Incidente;
filtro.CC = new List();
filtro.Destinatario = new List();
filtro.ListaParametros = new List();
filtro.ListaBookmarks = new List();
filtro.DocumentosAdjuntos = new List();
filtro.UserID = UsuarioIniciador;
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
ListaUserEmail = new List();
#region Ejecutivo
if (Cliente != null && !string.IsNullOrEmpty(Cliente.Ejecutivo.Correo))
filtro.Destinatario.Add(Cliente.Ejecutivo.Correo);
ListaEstructuraOC = new EstructuraOrgChartDAL().Obtener(EnumRolFuncional.Asistente_Servicios, null);
if (ListaEstructuraOC != null && ListaEstructuraOC.Count > 0)
{
foreach (var lista in ListaEstructuraOC)
{
if (!string.IsNullOrEmpty(lista.Name))
{
ListaUserEmail = ObtenerCorreos(lista.Name, Convert.ToInt32(lista.IdTipoEstructuraOrgChart));
foreach (UltimusUser Email in ListaUserEmail)
{
if (!string.IsNullOrEmpty(Email.EmailAddress))
filtro.Destinatario.Add(Email.EmailAddress);
}
}
}
}
#endregion
if (UserEmail != null)
filtro.Destinatario.Add(UserEmail.EmailAddress);
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDSOLICITUD", Valor = Solicitud.IdSolicitud.ToString() });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "INCIDENTE", Valor = Solicitud.Incidente.HasValue ? Solicitud.Incidente.ToString() : "0" });
string NombreCliente = string.Empty;
switch (Cliente.IdTipoCliente)
{
case EnumTipoCliente.Fisico:
NombreCliente = string.Format("{0} {1}", Cliente.PrimerNombre.Trim(), Cliente.PrimerApellido.Trim());
break;
case EnumTipoCliente.Juridico:
NombreCliente = Cliente.RazonSocial.Trim();
break;
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "NOMBRECLIENTE", Valor = NombreCliente });
using (UltimusFormAPIController InterfaceClient = new UltimusFormAPIController())
filtro = InterfaceClient.EnviarCorreoFiltro(filtro);
respuesta = false;
}
}
}
catch (Exception ex)
{
log.Error(ex);
}
return respuesta;
}
public List ObtenerCorreos(string NameJobFunction, int IdTipoEstructuraOrgChart, string NameGroup = null, string UserName = null)
{
List respuesta = new List();
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
UltimusUser UserEmail = null;
string error = null;
try
{
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
switch (IdTipoEstructuraOrgChart)
{
case 1:
IntegrationClient.GetUserForJobFunction("Business Organization", "Cathay OC", NameJobFunction.Trim(), out UserEmail, out error);
if (UserEmail != null)
respuesta.Add(UserEmail);
break;
case 2:
IntegrationClient.GetJobFunctionGroupMembers("Cathay OC", NameJobFunction.Trim(), out respuesta, out error);
break;
case 3:
IntegrationClient.GetGroupUserMembers(NameGroup, out respuesta, out error);
break;
default:
IntegrationClient.GetUserInformation(UserName, out UserEmail, out error);
if (UserEmail != null)
respuesta.Add(UserEmail);
break;
}
}
}
catch (Exception ex)
{
log.Error(ex);
throw ex;
}
return respuesta;
}
DatosAsignacionRecipientes AsignarRecipientesFormalizacion(int IdSolicitud, Cliente ClientePrincipal, List Variables, DatosEntradaCondiciones DatosEntradaRecipientes)
{
DatosAsignacionRecipientes Resp = new DatosAsignacionRecipientes();
Etapas EtapaActual;
EtapasDAL EtapasDal = new EtapasDAL();
EstructuraOrgChartDAL EstructuraOrgChartDal = new EstructuraOrgChartDAL();
EjecutivoDAL EjecutivoDal = new EjecutivoDAL();
List BookmarkExtra = new List();
List EtapasFormalizacion = null;
Ejecutivo FormalizadorUEN = null;
string UsuarioIniciador = new ObtieneParametros().GetValueKeyRegedit("UsuarioProcesoUltimus", false);
CorreosAutomaticosPendientes DatoCorreo = new CorreosAutomaticosPendientes();
List ListaRecipientes = new List();
string recipiente_asignado = null;
FormalizadorUEN = EjecutivoDal.ObtenerEjecutivo(ClientePrincipal.IdEjecutivo);
EtapasFormalizacion = EtapasDal.Obtener(null, EnumProcesos.Formalizacion);
//DATOS DE CORREO CONSTANTES
DatoCorreo.IdSolicitud = IdSolicitud;
DatoCorreo.UserID = UsuarioIniciador;
#region RECIPIENTE FORMALIZACION SEGUN OFERTA Y FACILIDAD ETAPA: FR_Asig_Caso
ListaRecipientes.Clear();
EtapaActual = EtapasFormalizacion.Where(c => c.DescripcionEtapa == EnumEtapas.FR_Asig_Caso).FirstOrDefault();
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "IdEtapa").First().Valor = EtapaActual == null ? "0" : EtapaActual.IdEtapa.ToString();
recipiente_asignado = string.Empty;
DatosEntradaRecipientes = EvaluarCondiciones(DatosEntradaRecipientes);
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignadoUEN).First().NodeValue = false;
if (DatosEntradaRecipientes.EvaluacionCondiciones != null && DatosEntradaRecipientes.EvaluacionCondiciones.Count > 0
&& DatosEntradaRecipientes.EvaluacionCondiciones.Any(c => c.Aprobado == true))
{
foreach (var item in DatosEntradaRecipientes.EvaluacionCondiciones.Where(c => c.Aprobado == true).ToList())
{
ListaRecipientes.Add(new RecipienteUltimus
{
Nombre = item.Nombre,
SintaxisRecipiente = EstructuraOrgChartDal.ObtenerSintaxisUltimus(item.Nombre)
});
}
recipiente_asignado = string.Join(";", ListaRecipientes.Select(c => c.SintaxisRecipiente).ToArray());
}
//si ninguna regla se cumplio asigna el formalizador UEN
if (string.IsNullOrEmpty(recipiente_asignado) && FormalizadorUEN != null)
{
recipiente_asignado = "USER:org=Business Organization,user=" + FormalizadorUEN.FormalizadorAsignado_UserID;
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignadoUEN).First().NodeValue = true;
}
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoRecipienteAsignado).First().NodeValue = recipiente_asignado;
#endregion
#region RECIPIENTE FORMALIZACION SEGUN OFERTA Y FACILIDAD ETAPA: FR_Inclu_Sol_Sistem_Transac
EtapaActual = EtapasFormalizacion.Where(c => c.DescripcionEtapa == EnumEtapas.FR_Inclu_Sol_Sistem_Transac).FirstOrDefault();
DatosEntradaRecipientes.ListaParametros.Where(c => c.NombreParametro == "IdEtapa").First().Valor = EtapaActual == null ? "0" : EtapaActual.IdEtapa.ToString();
recipiente_asignado = string.Empty;
ListaRecipientes.Clear();
DatosEntradaRecipientes = EvaluarCondiciones(DatosEntradaRecipientes);
if (DatosEntradaRecipientes.EvaluacionCondiciones != null && DatosEntradaRecipientes.EvaluacionCondiciones.Count > 0
&& DatosEntradaRecipientes.EvaluacionCondiciones.Any(c => c.Aprobado == true))
{
foreach (var item in DatosEntradaRecipientes.EvaluacionCondiciones.Where(c => c.Aprobado == true).ToList())
{
ListaRecipientes.Add(new RecipienteUltimus
{
Nombre = item.Nombre,
SintaxisRecipiente = EstructuraOrgChartDal.ObtenerSintaxisUltimus(item.Nombre)
});
}
recipiente_asignado = string.Join(";", ListaRecipientes.Select(c => c.SintaxisRecipiente).ToArray());
Resp.AsigCaso_JobFunctionAsignado = ListaRecipientes.FirstOrDefault().Nombre;
}
//si ninguna regla se cumplio asigna el Formalizador de operaciones crediticias
if (string.IsNullOrEmpty(recipiente_asignado))
{
recipiente_asignado = EstructuraOrgChartDal.ObtenerSintaxisUltimus("Formalizador de operaciones crediticias");
Resp.AsigCaso_JobFunctionAsignado = "Formalizador de operaciones crediticias";
}
Variables.Where(c => c.NodeName == EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado).First().NodeValue = recipiente_asignado;
#endregion
Resp.Variables = Variables;
return Resp;
}
public void AsignarRecipientes(List Variables, int? IdCategoria, int? IdFacilidad, bool EsLinea, bool EsGaratiaReal, string Formalizador, List EtapasFormalizacion, Cliente ClientePrincipal, out bool FormalizadorOperacionesCredito, int? IdSolicitud = null, int? IdTipoCambioCondiciones = null, bool? EsFactoreo = null)
{
try
{
bool UEN = false;
FormalizadorOperacionesCredito = false;
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Rev_Info_Caso
if (ClientePrincipal.IdTipoTramite != EnumTipoTramite.CambioCondiciones)
{
if (EsGaratiaReal == true && EsLinea == true && IdCategoria.In(EnumCategoria.EstudioInicial, EnumCategoria.EstudioSeguimiento))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
else if (EsGaratiaReal == false && EsLinea == true && IdCategoria.In(EnumCategoria.EstudioInicial, EnumCategoria.EstudioSeguimiento))
{
UEN = true;
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = string.Format(EnumOC.User , Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoTransOfertaContrato,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoCrearLineaTransac,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
NotificarCorreo(IdSolicitud, EtapasFormalizacion, Formalizador, false, true, true);
}
else if (IdCategoria == EnumCategoria.FastTrack && EsGaratiaReal == false)
{
//Coordinador de Descuento de Facturas
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else if (IdFacilidad.In(12, 13, 11))
{
//Coordinador de Operaciones Crediticias
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
else if (EsLinea == false && IdFacilidad.In(5, 6, 7, 8) && EsGaratiaReal == false)
{
// Administrador de contratos
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AdministradorContratos
});
NotificarCorreo(IdSolicitud, EtapasFormalizacion, "Administrador de contratos", true, false);
}
else if (EsLinea == false && IdFacilidad.In(9, 10) && EsGaratiaReal == false)
{
// Coordinador de Descuento de Facturas
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else if (EsLinea == false && IdFacilidad.In(5, 6, 7, 8) && EsGaratiaReal == true)
{
// Activar rol Administrador de contratos y Activar rol Coordinador de Operaciones Crediticias
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AdministradorContratos
});
NotificarCorreo(IdSolicitud, EtapasFormalizacion, "Administrador de contratos", true, false);
}
else if (EsLinea == false && IdFacilidad.In(9, 10) && EsGaratiaReal == true)
{
// Coordinador de Descuento de Facturas y Activar rol Coordinador de Operaciones
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else if (EsGaratiaReal == false)
{
UEN = true;
//Formalizador de Operaciones Crediticias (UEN)
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = string.Format(EnumOC.User , Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoTransOfertaContrato,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoCrearLineaTransac,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
NotificarCorreo(IdSolicitud, EtapasFormalizacion, Formalizador, false, true, true);
}
else if (EsGaratiaReal == true)
{
//Activar rol Coordinador de Operaciones Crediticias
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
}
else
{
if (EsLinea == true)
{
if (EsFactoreo == true && IdTipoCambioCondiciones.In(EnumTipoCambioCondiciones.SobregiroSublimite, EnumTipoCambioCondiciones.ProrrogaOperacion))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
FormalizadorOperacionesCredito = false;
}
else if (EsGaratiaReal == true)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
FormalizadorOperacionesCredito = false;
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
FormalizadorOperacionesCredito = true;
}
}
else
{
if (IdFacilidad.In(5, 6, 7, 8, 9, 10))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
FormalizadorOperacionesCredito = false;
}
else if (EsGaratiaReal == true)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
FormalizadorOperacionesCredito = false;
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionRevCasoRecipienteAsignado,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
FormalizadorOperacionesCredito = true;
}
}
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Crear_Expediente
if (ClientePrincipal.IdTipoTramite == EnumTipoTramite.CambioCondiciones)
{
if (EsLinea == true)
{
if (EsFactoreo == true && IdTipoCambioCondiciones.In(EnumTipoCambioCondiciones.SobregiroSublimite, EnumTipoCambioCondiciones.ProrrogaOperacion))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = EnumOC.FormalizadorDescuentoFacturas
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
}
}
else if (IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = EnumOC.FormalizadorDescuentoFacturas
});
}
else if (!IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoFormalizadorAsignado,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
}
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN OFERTA Y FACILIDAD ETAPA: FR_Trans_Oferta_Contrato
if (IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoTransOfertaContrato,
NodeValue = EnumOC.CoordinadorDescuentoFacturas
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoTransOfertaContrato,
NodeValue = string.Format(EnumOC.User, Formalizador)
});
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Revisar_Doc
List Asig_Revisar_Doc = new List();
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
string error = string.Empty;
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
if (IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigRevisarDoc,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigRevisarDoc,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
}
// IncidentData.Global.Formalizacion.Asig_Revisar_Doc
#endregion
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Revisar_Doc
if (UEN == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoCrearLineaTransac,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Pagar_Operacion
//Si es un caso Específico para Descuento de Facturas, Fast Track, Adelanto de contrato u Orden de compra Activar rol Coordinador de Descuento de Facturas
if (EsLinea == false && IdFacilidad.In(5, 6, 7, 8, 9, 10))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoPagarOperacion,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoPagarOperacion,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN REGLAS ETAPA: FR_Control_Calidad
if (ClientePrincipal.IdTipoTramite != EnumTipoTramite.CambioCondiciones)
{
//Si es un caso para Estudio inicial, Estudio de seguimiento, Específicos o Descuento de arrendamiento Activar rol Coordinador de Operaciones Crediticias
if ((EsLinea == false && IdCategoria.In(EnumCategoria.EstudioInicial, EnumCategoria.EstudioSeguimiento)) || IdFacilidad.In(15))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
else if (EsLinea == false && IdFacilidad.In(5, 6, 7, 8, 9, 10))
//Si es un caso Específico para Descuento de Facturas, Fast Track, Adelanto de contrato u Orden de compra Activar rol Coordinador de Descuento de Facturas
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
}
else
{
if (EsLinea == true)
{
if (EsFactoreo == true && IdTipoCambioCondiciones.In(EnumTipoCambioCondiciones.SobregiroSublimite, EnumTipoCambioCondiciones.ProrrogaOperacion))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
}
else if (IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorDescuentoFacturasQUEUE
});
}
else if (!IdFacilidad.In(5, 6, 7, 8, 9, 10) && EsLinea == false)
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoControlCalidad,
NodeValue = EnumOC.AsigJefeCoordinadorOperacionesCrediticiasQUEUE
});
}
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN OFERTA Y FACILIDAD ETAPA: FR_Ejecutar_Desembolso
if (IdFacilidad.In(5, 6, 7, 8, 9, 10))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoDesembolso,
NodeValue = EnumOC.CajeroSecoDescuentoFacturas
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoDesembolso,
NodeValue = EnumOC.CajeroSecoOperacionesCrediticias
});
}
#endregion
#region RECIPIENTE FORMALIZACION SEGUN OFERTA Y FACILIDAD ETAPA: FR_Notificar_Desembolso
if (IdFacilidad.In(5, 6, 7, 8, 9, 10))
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoNotificarDesembolso,
NodeValue = EnumOC.FormalizadorDescuentoFacturas
});
}
else
{
Variables.Add(new NodeVariables()
{
NodeName = EnumVariblesUltimus.TaskDataGlobalFormalizacionAsigCasoNotificarDesembolso,
NodeValue = EnumOC.FormalizadorOperacionesCrediticias
});
}
#endregion
}
catch (Exception ex)
{
throw ex;
}
}
[WebMethod]
public UExcelJson ExtraerValoresExcel(UExcelJson ExcelJson)
{
try
{
if (ExcelJson == null) ExcelJson = new UExcelJson();
UExcel oExcelLibrary = new UExcel();
ExcelJson.ListaSpreadSheet = oExcelLibrary.ExtraccionExcel(ExcelJson.RutaDocumento, ExcelJson.ListaSpreadSheet);
ExcelJson.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
ExcelJson.DescripcionRespuesta = "";
}
catch (Exception ex)
{
ExcelJson.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
ExcelJson.DescripcionRespuesta = ex.Message;
log.Error(ex);
}
return ExcelJson;
}
[WebMethod]
public UExcelJson CargarValoresExcel(UExcelJson ExcelJson)
{
string RutaFisicaConf = string.Empty;
string RutaVirtualConfig = string.Empty;
UExcel oExcelLibrary = new UExcel();
try
{
RutaFisicaConf = System.Configuration.ConfigurationManager.AppSettings["RutaFisica"];
RutaVirtualConfig = System.Configuration.ConfigurationManager.AppSettings["RutaVirtual"];
#region Validaciones
if (ExcelJson == null)
throw new Exception("Parametro Nulo.Es requerido el parametro de entrada cargado");
if (!System.IO.File.Exists(ExcelJson.RutaDocumento))
throw new Exception(string.Format("No se pudo encontrar el documento {0}", ExcelJson.RutaDocumento));
if (string.IsNullOrEmpty(ExcelJson.NombreDocumentoGenerado))
throw new Exception(string.Format("El nombre para el documento a generar no es valido {0}", ExcelJson.NombreDocumentoGenerado));
if (string.IsNullOrEmpty(RutaFisicaConf))
throw new Exception("La ruta físca interna configurada para crear el documento no es correcta");
if (string.IsNullOrEmpty(RutaVirtualConfig))
throw new Exception("La ruta virtual interna configurada para acceder al documento generado no es correcta");
#endregion
string RutaDocumentoGenerado = string.Format("{0}\\{1}", RutaFisicaConf, ExcelJson.NombreDocumentoGenerado);
System.IO.File.Copy(ExcelJson.RutaDocumento, RutaDocumentoGenerado);
ExcelJson.ListaSpreadSheet = oExcelLibrary.CargaExcel(RutaDocumentoGenerado, ExcelJson.ListaSpreadSheet);
ExcelJson.RutaFisica = string.Format("{0}\\{1}", RutaFisicaConf, ExcelJson.NombreDocumentoGenerado);
ExcelJson.RutaVirtual = string.Format("{0}{1}", RutaVirtualConfig, ExcelJson.NombreDocumentoGenerado);
ExcelJson.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
ExcelJson.DescripcionRespuesta = string.Empty;
}
catch (Exception ex)
{
ExcelJson.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
ExcelJson.DescripcionRespuesta = ex.Message;
log.Error(ex);
}
return ExcelJson;
}
[WebMethod]
public bool EnviarCorreoTresDiasDocNoEntregada(int Incidente)
{
bool respuesta = false;
Solicitud Solicitud = new Solicitud();
Procesos Proceso = new Procesos();
SolicitudDAL SolicitudDAL = new SolicitudDAL();
ProcesosDAL ProcesosDAL = new ProcesosDAL();
FiltroCorreoProcesoJSON filtro = new FiltroCorreoProcesoJSON();
EtapasDAL EtapasDal = new EtapasDAL();
DatosGeneralesAnalisis DatosActuales = new DatosGeneralesAnalisis();
List ListaUserEmail = null;
List BitacoraControlAprobacion = new List();
BitacoraControlAprobacionDAL ContAprobacionDal = new BitacoraControlAprobacionDAL();
Cliente Cliente = new Cliente();
ClienteDAL ClienteDal = new ClienteDAL();
string UserFullName = string.Empty;
try
{
Proceso = ProcesosDAL.Obtener(EnumProcesos.Credito);
Solicitud = SolicitudDAL.Obtener(Incidente, Proceso.NombreProceso);
Cliente = ClienteDal.ObtenerPrincipal(Solicitud.IdSolicitud);
DatosActuales = new DatosGeneralesAnalisisDAL().Obtener(Solicitud.IdSolicitud);
string UsuarioIniciador = new ObtieneParametros().GetValueKeyRegedit("UsuarioProcesoUltimus", false);
filtro.Proceso = Proceso.NombreProceso;
filtro.NombreFiltro = "NotificacionTresdiasDocAdicionales";
filtro.CodSolicitud = (long)Solicitud.IdSolicitud;
filtro.Etapa = EnumEtapas.AN_Preanalisis; ;
filtro.Incidente = Incidente;
filtro.CC = new List();
filtro.Destinatario = new List();
filtro.ListaParametros = new List();
filtro.ListaBookmarks = new List();
filtro.DocumentosAdjuntos = new List();
filtro.UserID = UsuarioIniciador;
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
BitacoraControlAprobacion = ContAprobacionDal.Obtener(Solicitud.IdSolicitud, EnumEtapas.AN_Rev_Doc_Clasificar);
ListaUserEmail = new List();
#region Analista
if (BitacoraControlAprobacion != null && BitacoraControlAprobacion.Count > 0)
{
if (!string.IsNullOrEmpty(BitacoraControlAprobacion.FirstOrDefault().UsuarioAsignado))
{
ListaUserEmail = ObtenerCorreos("", 0, null, BitacoraControlAprobacion.FirstOrDefault().UsuarioAsignado);
foreach (UltimusUser Email in ListaUserEmail)
{
if (!string.IsNullOrEmpty(Email.EmailAddress))
{
filtro.Destinatario.Add(Email.EmailAddress);
UserFullName = Email.strUserFullName;
}
}
}
}
#endregion
//filtro.Destinatario.Add("jzuniga@atesacr.com");
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDSOLICITUD", Valor = Solicitud.IdSolicitud.ToString() });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "INCIDENTE", Valor = Solicitud.Incidente.HasValue ? Solicitud.Incidente.ToString() : "0" });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDENTIFICACION", Valor = Cliente.NumeroIdentificacion });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "ANALISTA", Valor = UserFullName });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "COMENTARIO", Valor = DatosActuales.ComentariosDocumentosAdicionales });
string NombreCliente = string.Empty;
switch (Cliente.IdTipoCliente)
{
case EnumTipoCliente.Fisico:
NombreCliente = string.Format("{0} {1}", Cliente.PrimerNombre.Trim(), Cliente.PrimerApellido.Trim());
break;
case EnumTipoCliente.Juridico:
NombreCliente = Cliente.RazonSocial.Trim();
break;
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "NOMBRECLIENTE", Valor = NombreCliente });
using (UltimusFormAPIController InterfaceClient = new UltimusFormAPIController())
filtro = InterfaceClient.EnviarCorreoFiltro(filtro);
DatosActuales.NotificacionTresDias = true;
new DatosGeneralesAnalisisDAL().GuardarActualizarAnalisis(DatosActuales);
respuesta = true;
}
}
catch (Exception ex)
{
log.Error(ex);
}
return respuesta;
}
[WebMethod]
public bool EnviarCorreoCincoDiasDocNoEntregada(int Incidente)
{
bool respuesta = false;
Solicitud Solicitud = new Solicitud();
Procesos Proceso = new Procesos();
SolicitudDAL SolicitudDAL = new SolicitudDAL();
ProcesosDAL ProcesosDAL = new ProcesosDAL();
FiltroCorreoProcesoJSON filtro = new FiltroCorreoProcesoJSON();
EtapasDAL EtapasDal = new EtapasDAL();
UltimusUser UserEmail = null;
List ListaEstructuraOC = null;
List ListaUserEmail = null;
Cliente Cliente = new Cliente();
ClienteDAL ClienteDal = new ClienteDAL();
List BitacoraControlAprobacion = new List();
BitacoraControlAprobacionDAL ContAprobacionDal = new BitacoraControlAprobacionDAL();
BitacoraComentariosInternos Comentarios = new BitacoraComentariosInternos();
DatosGeneralesAnalisis DatosAnalisis = new DatosGeneralesAnalisis();
Ejecutivo Ejecutivo = new Ejecutivo();
string UserFullName = string.Empty;
try
{
Proceso = ProcesosDAL.Obtener(EnumProcesos.Credito);
Solicitud = SolicitudDAL.Obtener(Incidente, Proceso.NombreProceso);
Cliente = ClienteDal.ObtenerPrincipal(Solicitud.IdSolicitud);
Ejecutivo = new EjecutivoDAL().ObtenerEjecutivoID(Convert.ToInt32(Cliente.IdEjecutivo));
DatosAnalisis = new DatosGeneralesAnalisisDAL().Obtener(Solicitud.IdSolicitud);
string UsuarioIniciador = new ObtieneParametros().GetValueKeyRegedit("UsuarioProcesoUltimus", false);
filtro.Proceso = Proceso.NombreProceso;
filtro.NombreFiltro = "NotificacionCincoDiasDocAdicionales";
filtro.CodSolicitud = (long)Solicitud.IdSolicitud;
filtro.Etapa = EnumEtapas.AN_Preanalisis;
filtro.Incidente = Incidente;
filtro.CC = new List();
filtro.Destinatario = new List();
filtro.ListaParametros = new List();
filtro.ListaBookmarks = new List();
filtro.DocumentosAdjuntos = new List();
filtro.UserID = UsuarioIniciador;
UltimusIntegrationAPIController Binding = new UltimusIntegrationAPIController();
using (UltimusIntegrationClient IntegrationClient = new UltimusIntegrationClient(Binding.wSHttpBinding, Binding.endpointAddress))
{
BitacoraControlAprobacion = ContAprobacionDal.Obtener(Solicitud.IdSolicitud, EnumEtapas.AN_Rev_Doc_Clasificar);
ListaUserEmail = new List();
#region Analista
if (BitacoraControlAprobacion != null && BitacoraControlAprobacion.Count > 0)
{
if (!string.IsNullOrEmpty(BitacoraControlAprobacion.FirstOrDefault().UsuarioAsignado))
{
ListaUserEmail = ObtenerCorreos("", 0, null, BitacoraControlAprobacion.FirstOrDefault().UsuarioAsignado);
foreach (UltimusUser Email in ListaUserEmail)
{
if (!string.IsNullOrEmpty(Email.EmailAddress))
{
filtro.Destinatario.Add(Email.EmailAddress);
UserFullName = Email.strUserFullName;
}
}
}
}
#endregion
#region Ejecutivo
if (Cliente != null && !string.IsNullOrEmpty(Cliente.Ejecutivo.Correo))
filtro.Destinatario.Add(Cliente.Ejecutivo.Correo);
#endregion
#region Asistente_Negocio
ListaEstructuraOC = new EstructuraOrgChartDAL().Obtener(EnumRolFuncional.Asistente_Negocio, null);
if (ListaEstructuraOC != null && ListaEstructuraOC.Count > 0)
{
foreach (var lista in ListaEstructuraOC)
{
if (!string.IsNullOrEmpty(lista.Name))
{
ListaUserEmail = ObtenerCorreos(lista.Name, Convert.ToInt32(lista.IdTipoEstructuraOrgChart));
foreach (UltimusUser Email in ListaUserEmail)
{
if (!string.IsNullOrEmpty(Email.EmailAddress))
filtro.Destinatario.Add(Email.EmailAddress);
}
}
}
}
#endregion
if (UserEmail != null)
filtro.Destinatario.Add(UserEmail.EmailAddress);
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDSOLICITUD", Valor = Solicitud.IdSolicitud.ToString() });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "INCIDENTE", Valor = Solicitud.Incidente.HasValue ? Solicitud.Incidente.ToString() : "0" });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "IDENTIFICACION", Valor = Cliente.NumeroIdentificacion });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "EJECUTIVO", Valor = Ejecutivo.Nombre });
string NombreCliente = string.Empty;
switch (Cliente.IdTipoCliente)
{
case EnumTipoCliente.Fisico:
NombreCliente = string.Format("{0} {1}", Cliente.PrimerNombre.Trim(), Cliente.PrimerApellido.Trim());
break;
case EnumTipoCliente.Juridico:
NombreCliente = Cliente.RazonSocial.Trim();
break;
}
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "NOMBRECLIENTE", Valor = NombreCliente });
filtro.ListaBookmarks.Add(new BookmarkCorreoJSON { Nombre = "COMENTARIO", Valor = DatosAnalisis.ComentariosDocumentosAdicionales });
using (UltimusFormAPIController InterfaceClient = new UltimusFormAPIController())
filtro = InterfaceClient.EnviarCorreoFiltro(filtro);
Comentarios.Procesos = Proceso;
Comentarios.IdSolicitud = Solicitud.IdSolicitud;
Comentarios.Incidente = Incidente;
Comentarios.UserID = UserFullName;
Comentarios.Comentario = DatosAnalisis.ComentariosDocumentosAdicionales;
Comentarios.Etapa = EnumEtapas.AN_Preanalisis;
Comentarios.Finalizar = false;
Comentarios.IdTipoComentario = EnumTipoComentario.ComentarioDevolucionTramite;
Comentarios.Sent = false;
new BitacoraComentariosInternosDAL().Insertar(Comentarios);
respuesta = true;
}
}
catch (Exception ex)
{
log.Error(ex);
}
return respuesta;
}
public UltimusValoresEsquema ObtenerVariableEsquemaUltimus(UltimusValoresEsquema model)
{
UltimusIntegrationAPIController UltimusIntegration = new UltimusIntegrationAPIController();
try
{
foreach (UltimusVariable Variable in model.ListaVariables)
{
string ValorRetorno = string.Empty;
UltimusIntegration.GetNodeValue(model.UltimusUserID, model.UltimusTaskId, Variable.Nombre, out ValorRetorno);
Variable.Valor = ValorRetorno;
}
model.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (Exception ex)
{
log.Error(ex);
model.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
model.DescripcionRespuesta = ex.Message;
}
return model;
}
}
}