using Newtonsoft.Json; using NLog; using System; using System.Linq; using System.Collections.Generic; using System.Net; using System.Web; using System.Web.Configuration; using System.Web.Mvc; using ULA.Cathay.Credito.Json; using ULA.Cathay.CreditoModel.Entidades; using Ultimus.Interfaces; using Ultimus.Interfaces.UltimusForm; using Ultimus.Utilitarios; using ULA.Cathay.CreditoModel.DAL.Credito; using ULA.Cathay.CreditoModel.Credito; using Ultimus.Interfaces.UltimusIntegration; using ULA.Cathay.Credito.ControllersWebApi.Aprobaciones; namespace ULA.Cathay.Credito.Controllers { public class BaseController : Controller { UltimusLogs UltimusLogs = new UltimusLogs("BaseController"); private string _IDLogger; public string IDLogger { get { return _IDLogger; } set { _IDLogger = string.Format("INCIDENT {0}|", value); } } public string UserID { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["UserID"])) ret = new Crypt().DecryptString(Request.QueryString["UserID"]); return ret; } } public string TaskID { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["TaskID"])) ret = new Crypt().DecryptString(Request.QueryString["TaskID"]); return ret; } } public string Process { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["Process"])) ret = new Crypt().DecryptString(Request.QueryString["Process"]); return ret; } } public string Step { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["Step"])) ret = new Crypt().DecryptString(Request.QueryString["Step"]); return ret; } } public string Incident { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["Incident"])) ret = new Crypt().DecryptString(Request.QueryString["Incident"]); return ret; } } public string JobFunction { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["JobFunction"])) ret = new Crypt().DecryptString(Request.QueryString["JobFunction"]); return ret; } } public string UserFullName { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["UserFullName"])) ret = new Crypt().DecryptString(Request.QueryString["UserFullName"]); return ret; } } public string UserEmail { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["UserEmail"])) ret = new Crypt().DecryptString(Request.QueryString["UserEmail"]); return ret; } } public string Supervisor { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["Supervisor"])) ret = new Crypt().DecryptString(Request.QueryString["Supervisor"]); return ret; } } public string SupervisorFullName { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["SupervisorFullName"])) ret = new Crypt().DecryptString(Request.QueryString["SupervisorFullName"]); return ret; } } public string TaskStatus { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["TaskStatus"])) ret = new Crypt().DecryptString(Request.QueryString["TaskStatus"]); return ret; } } public string Version { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["Version"])) ret = new Crypt().DecryptString(Request.QueryString["Version"]); return ret; } } public string TaskUser { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["TaskUser"])) ret = new Crypt().DecryptString(Request.QueryString["TaskUser"]); return ret; } } public string AssignedToUser { get { string ret = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["AssignedToUser"])) ret = new Crypt().DecryptString(Request.QueryString["AssignedToUser"]); return ret; } } public string sol_co_solicitud { get { string ret = "0"; if (!string.IsNullOrEmpty(Request.QueryString["sol_co_solicitud"])) ret = new Crypt().DecryptString(Request.QueryString["sol_co_solicitud"]); return ret; } } public string sol_co_cotizacion { get { string ret = "0"; if (!string.IsNullOrEmpty(Request.QueryString["sol_co_cotizacion"])) ret = Request.QueryString["sol_co_cotizacion"]; return ret; } } public string cl_co_cliente { get { string ret = "0"; if (!string.IsNullOrEmpty(Request.QueryString["cl_co_cliente"])) ret = Request.QueryString["cl_co_cliente"]; return ret; } } public string CambioOferta { get { string ret = new Crypt().EncryptString("false"); if (!string.IsNullOrEmpty(Request.QueryString["CambioOferta"])) ret = Request.QueryString["CambioOferta"]; return ret; } } public UltimusNativeTask TareaNativaUltimus = new UltimusNativeTask(); public Ultimus.Interfaces.UltimusIntegration.UltimusIncident Tarea { get { if (Session["Tarea"] == null) return null; else return Session["Tarea"] as Ultimus.Interfaces.UltimusIntegration.UltimusIncident; } set { Session["Tarea"] = value; } } public void LeerTarea() { if (Request.Cookies["UserID"] != null && Request.Cookies["TaskID"] != null) { string sError = string.Empty; UltimusIntegrationAPIController UltimusIntgration = new UltimusIntegrationAPIController(); try { Tarea = UltimusIntgration.GetTask(Request.Cookies["UserID"].Value, Request.Cookies["TaskID"].Value); using (UltimusIntegrationClient UltimusClient = new UltimusIntegrationClient(UltimusIntgration.wSHttpBinding, UltimusIntgration.endpointAddress)) { UltimusClient.GetUltimusNativeTask(Request.Cookies["UserID"].Value, Request.Cookies["TaskID"].Value, out TareaNativaUltimus, out sError); } if (!string.IsNullOrEmpty(sError)) throw new Exception(sError); } catch (Exception ex) { UltimusLogs.Error(ex); } BorrarCookie("UserID"); BorrarCookie("TaskID"); } } public bool ClearSession { get { bool ret = false; if (!string.IsNullOrEmpty(Request.QueryString["ClearSession"])) bool.TryParse(Request.QueryString["ClearSession"], out ret); return ret; } } public string tasa_cambio { get; set; } public ActionResult ErrorGenerico { get { return View("Error"); } } private void BorrarCookie(string cookie) { HttpCookie myCookie = Request.Cookies.Get(cookie); if (myCookie != null) { Request.Cookies.Remove(myCookie.Name); myCookie.Expires = DateTime.Now.AddMonths(-1); Response.Cookies.Add(myCookie); } } public RedirectResult RedirectEncrypted(string url) { Crypt crypt = new Crypt(); return Redirect(string.Format("{0}?UserID={1}&TaskID={2}&Process={3}&Step={4}&Incident={5}", url, UserID, TaskID, Process, Step, Incident)); } public RedirectToRouteResult RedirectToActionEncrypted(string ation, string controller) { Crypt crypt = new Crypt(); return RedirectToAction(ation, controller, new { UserID = crypt.EncryptString(UserID), TaskID = crypt.EncryptString(TaskID), Process = crypt.EncryptString(Process), Step = crypt.EncryptString(Step), Incident = crypt.EncryptString(Incident) }); } public void InitControllers() { ViewBag.IpAdress = Commons.Utilities.GetIpAdress(); ViewBag.MachineName = Dns.GetHostName(); ViewBag.ActivityType = "WORKFLOW"; ViewBag.HostResponse = Commons.Utilities.GetIpAdress(); ViewBag.Incident = Incident; ViewBag.UserID = UserID; ViewBag.TaskId = TaskID; ViewBag.Process = Process; ViewBag.Step = Step; ViewBag.TaskStatus = TaskStatus; ViewBag.JobFunction = JobFunction; ViewBag.UserFullName = UserFullName; ViewBag.UserEmail = UserEmail; ViewBag.Supervisor = Supervisor; ViewBag.SupervisorFullName = SupervisorFullName; ViewBag.Version = Version; ViewBag.TaskUser = TaskUser; ViewBag.AssignedToUser = AssignedToUser; ViewBag.UrlAdjuntos = new ObtieneParametros().GetValueKeyRegedit("UltimusAttachmentUrl", false); #region Variables of process #region TasaCambio string error_tasa_cambio = string.Empty; #endregion ViewBag.sol_co_solicitud = sol_co_solicitud; ViewBag.sol_co_cotizacion = sol_co_cotizacion; ViewBag.cl_co_cliente = cl_co_cliente; ViewBag.co_solicitud = new Crypt().EncryptString(sol_co_solicitud); ViewBag.tasa_cambio = tasa_cambio; ViewBag.error_tasa_cambio = error_tasa_cambio; ViewBag.CambioOferta = CambioOferta; CargaDatosEncabezado(); #endregion ViewBag.Pipe = "|"; try { Boolean vLocal = false; Boolean.TryParse(WebConfigurationManager.AppSettings["ComplementBPM.local"].ToString(), out vLocal); if (vLocal) { StepFormsList[] Menulist = new StepFormsList[1]; Menulist[0] = new StepFormsList { FormName = "OFFLINE" }; ViewBag.Menu = Menulist; } else { if (Process != string.Empty && Step != string.Empty) { List Menulist = new UltimusFormAPIController().ObtenerFormularios(Process, Step); ViewBag.Menu = Menulist; } else { StepFormsList[] Menulist = new StepFormsList[1]; Menulist[0] = new StepFormsList { FormName = "OFFLINE" }; ViewBag.Menu = Menulist; } } } catch (Exception ex) { UltimusLogs.Error(ex.ToString()); StepFormsList[] Menulist = new StepFormsList[1]; Menulist[0] = new StepFormsList { FormName = "OFFLINE" }; ViewBag.Menu = Menulist; } string QueryString = "?"; QueryString = string.Concat(QueryString, "UserID={0}"); QueryString = string.Concat(QueryString, "&TaskID={1}"); QueryString = string.Concat(QueryString, "&Process={2}"); QueryString = string.Concat(QueryString, "&Step={3}"); QueryString = string.Concat(QueryString, "&Incident={4}"); QueryString = string.Concat(QueryString, "&JobFunction={5}"); QueryString = string.Concat(QueryString, "&UserFullName={6}"); QueryString = string.Concat(QueryString, "&UserEmail={7}"); QueryString = string.Concat(QueryString, "&Supervisor={8}"); QueryString = string.Concat(QueryString, "&SupervisorFullName={9}"); QueryString = string.Concat(QueryString, "&TaskStatus={10}"); QueryString = string.Concat(QueryString, "&Version={11}"); QueryString = string.Concat(QueryString, "&TaskUser={12}"); QueryString = string.Concat(QueryString, "&AssignedToUser={13}"); string url = string.Format(QueryString, Request.QueryString["UserID"], Request.QueryString["TaskID"], Request.QueryString["Process"], Request.QueryString["Step"], Request.QueryString["Incident"], Request.QueryString["JobFunction"], Request.QueryString["UserFullName"], Request.QueryString["UserEmail"], Request.QueryString["Supervisor"], Request.QueryString["SupervisorFullName"], Request.QueryString["TaskStatus"], Request.QueryString["Version"], Request.QueryString["TaskUser"], Request.QueryString["AssignedToUser"]); ViewBag.QueryEncripted = url; ViewBag.LockDevTools = ((new Ultimus.Utilitarios.ObtieneParametros().GetValueKeyRegedit("LockDevTools", false)) == "1"); ViewBag.UltimusAttachmentUrl = new ObtieneParametros().GetValueKeyRegedit("UltimusAttachmentUrl", false); } public void CargaDatosEncabezado(bool IsHome = false) { EncabezadoCathayJson encabezado = new EncabezadoCathayJson(); SolicitudDAL solicitudDal = new SolicitudDAL(); ClienteDAL ClienteDal = new ClienteDAL(); OfertaDAL OferaDal = new OfertaDAL(); SolicitanteDAL SolicitanteDal = new SolicitanteDAL(); Solicitud solicitud; Solicitante SolicitantePrincipal; Cliente ClientePrincipal; ProcesosDAL ProcesosDal = new ProcesosDAL(); ControlCarteraDAL ControlCarteraDAL = new ControlCarteraDAL(); ControlCartera ControlCartera = new ControlCartera(); DatosGeneralesFormalizacionDAL DatosGeneralesFormalizacionDAL = new DatosGeneralesFormalizacionDAL(); DatosGeneralesFormalizacion DatosGeneralesFormalizacion = new DatosGeneralesFormalizacion(); DesembolsoDatosGeneralesDAL DesembolsoDatosGeneralesDal = new DesembolsoDatosGeneralesDAL(); BitacoraControlAprobacionDAL ContAprobacionDal = new BitacoraControlAprobacionDAL(); try { EncabezadoCathayJson Temp_encabezado = null; if (ClearSession || IsHome) { if (Session["EncabezadoCathay"] != null) Session.Remove("EncabezadoCathay"); } if (Session["EncabezadoCathay"] != null) Temp_encabezado = JsonConvert.DeserializeObject(Session["EncabezadoCathay"].ToString()); int IdSolicitud = 0; int.TryParse(sol_co_solicitud, out IdSolicitud); if (IsHome || Temp_encabezado == null || Temp_encabezado.IdSolicitud != IdSolicitud || (!string.IsNullOrEmpty(Temp_encabezado.NombreProceso) && Temp_encabezado.NombreProceso.Trim() != Process)) { solicitud = (Tarea == null || Tarea.Incident == 0) && IdSolicitud == 0 ? null : (IsHome ? solicitudDal.Obtener(Tarea.Incident, Tarea.Process) : solicitudDal.Obtener(IdSolicitud)); if (solicitud != null) { encabezado.NombreProceso = Process; encabezado.IdProceso = ProcesosDal.Obtener(Process).IdProceso; #region Desembolso if (encabezado.IdProceso == EnumProcesos.Desembolso) { var modelDesembolsoDatosGenerales = DesembolsoDatosGeneralesDal.Obtener(IdSolicitud); if (modelDesembolsoDatosGenerales != null) { encabezado.IdSolicitudCredito = modelDesembolsoDatosGenerales.IdSolicitudCredito; } List modelBitacoraControlAprobacion= ContAprobacionDal.Obtener(IdSolicitud, EnumEtapas.DE_Inclu_Sol_Desembolso.ToString()); if(modelBitacoraControlAprobacion != null && modelBitacoraControlAprobacion.Count > 0){ encabezado.AplicaCaratulaAprobacionUnica = modelBitacoraControlAprobacion.Where(x => x.IdDecision == EnumDecision.Desembolo_Gestionar_Caratula_Aprobacion_Unica).Any(); } } #endregion encabezado.NumIncidente = solicitud.Incidente.HasValue ? solicitud.Incidente.Value : 0; solicitud.Oferta = solicitud == null ? null : OferaDal.ObtenerOfertaSolicitud(new Oferta { IdSolicitud = solicitud.IdSolicitud }); solicitud.Solicitante = solicitud == null ? null : SolicitanteDal.Obtener(solicitud.IdSolicitud); SolicitantePrincipal = solicitud == null || solicitud.Solicitante == null ? null : solicitud.Solicitante.Where(c => c.EsPrincipal == true).FirstOrDefault(); ClientePrincipal = SolicitantePrincipal != null ? SolicitantePrincipal.Cliente : null; #region AP_Corre_Caratula_Adjuntar_Doc if (Step.In(EnumEtapas.AP_Corre_Caratula_Adjuntar_Doc, EnumEtapas.DE_AP_Corre_Caratula_Adjuntar_Doc)) { var respAprobacion = new ValidarCondicionesClienteAPIController().ConsultarDatosDecisionCliente(new AprobacionesComite() { IdSolicitud = solicitud.IdSolicitud, UsuarioCreador= UserID, Process= Process, Step= Step, Incident= int.Parse(Incident) }); if (respAprobacion != null) encabezado.IdCorrigeCaratula = respAprobacion.IdDecision; } #endregion if (encabezado.IdProceso == EnumProcesos.Formalizacion) { DatosGeneralesFormalizacion = DatosGeneralesFormalizacionDAL.Obtener(solicitud.IdSolicitud, int.Parse(Incident)); if (ClientePrincipal.IdTipoTramite == 4 || ClientePrincipal.IdTipoTramite == 1) { ControlCartera = ControlCarteraDAL.Obtener(solicitud.IdSolicitud); encabezado.LineaSAP = ControlCartera.IdLinea; encabezado.EsEspecifico = DatosGeneralesFormalizacion.EsEspecifico == null ? false : DatosGeneralesFormalizacion.EsEspecifico; encabezado.IdTipoFacilidad = DatosGeneralesFormalizacion.FormalizacionTipoFacilidades == null ? "" : DatosGeneralesFormalizacion.FormalizacionTipoFacilidades.Select(x => x.IdTipoFacilidad.ToString()).Aggregate((x, y) => x.ToString() + "," + y.ToString()); } else { encabezado.LineaSAP = !string.IsNullOrEmpty(DatosGeneralesFormalizacion.NumLineaCreadaSAP)?DatosGeneralesFormalizacion.NumLineaCreadaSAP:""; encabezado.EsEspecifico = DatosGeneralesFormalizacion.EsEspecifico == null ? false : DatosGeneralesFormalizacion.EsEspecifico; encabezado.IdTipoFacilidad = DatosGeneralesFormalizacion.FormalizacionTipoFacilidades == null ? "" : DatosGeneralesFormalizacion.FormalizacionTipoFacilidades.Select(x => x.IdTipoFacilidad.ToString()).Aggregate((x, y) => x.ToString() + "," + y.ToString()); } } encabezado.FechaSolicitud = solicitud.FechaCreacion ?? DateTime.Now; encabezado.IdSolicitud = solicitud.IdSolicitud; encabezado.IdCategoria = solicitud.Oferta.IdTipoCategoria; encabezado.IdSolicitudSAP = DatosGeneralesFormalizacion.Pignoracion_NumOperacion; //solicitud.IdSolicitudSAP; encabezado.IdSolicitudProceso = solicitud.IdSolicitudProceso; encabezado.EsgarantiaReal = DatosGeneralesFormalizacion.EsGarantiaReal; if (ClientePrincipal != null) { encabezado.IdCliente = ClientePrincipal.IdCliente; encabezado.IdTipoTramite = ClientePrincipal.IdTipoTramite; encabezado.IdTipoCliente = ClientePrincipal.IdTipoCliente; encabezado.NombreCliente = ClientePrincipal.IdTipoCliente == 1 ? string.Format("{0} {1}", ClientePrincipal.PrimerNombre, ClientePrincipal.PrimerApellido) : ClientePrincipal.RazonSocial; encabezado.NumIdentificacion = ClientePrincipal.NumeroIdentificacion; encabezado.DescTipoCliente = ClientePrincipal.TipoCliente == null ? null : ClientePrincipal.TipoCliente.Descripcion; encabezado.DescTipoTramite = ClientePrincipal.TipoTramite == null ? null : ClientePrincipal.TipoTramite.Descripcion; encabezado.IdClasificacionCliente = ClientePrincipal.IdClasificacionCliente == null ? null : ClientePrincipal.IdClasificacionCliente; } } if (IsHome) { encabezado.NombreProceso = Tarea.Process; encabezado.NumIncidente = Tarea.Incident; } if (Session["EncabezadoCathay"] != null) Session.Remove("EncabezadoCathay"); Session.Add("EncabezadoCathay", JsonConvert.SerializeObject(encabezado)); } else if (Temp_encabezado != null && Temp_encabezado.IdSolicitud == IdSolicitud) { encabezado = Temp_encabezado; } ViewBag.FechaSolicitud = encabezado == null ? DateTime.Now.ToString("dd-MMMM-yyyy", System.Globalization.CultureInfo.CreateSpecificCulture("es-ES")) : encabezado.FechaSolicitud.ToString("dd-MMMM-yyyy", System.Globalization.CultureInfo.CreateSpecificCulture("es-ES")); ViewBag.IdCategoria = encabezado == null ? null : encabezado.IdCategoria; ViewBag.IdSolicitudSAP = encabezado == null ? null : encabezado.IdSolicitudSAP; ViewBag.IdTipoTramite = encabezado == null ? null : encabezado.IdTipoTramite; ViewBag.Nombre = encabezado == null ? null : encabezado.NombreCliente; ViewBag.Cedula = encabezado == null ? null : encabezado.NumIdentificacion; ViewBag.TipoCliente = encabezado == null ? null : encabezado.DescTipoCliente; ViewBag.IdCliente = encabezado == null ? 0 : encabezado.IdCliente; ViewBag.IdTipoCliente = encabezado == null ? null : encabezado.IdTipoCliente; ViewBag.TipoTramite = encabezado == null ? null : encabezado.DescTipoTramite; ViewBag.IdSolicitudProceso = encabezado == null ? 0 : encabezado.IdSolicitudProceso; ViewBag.IdSolicitud = encabezado == null ? 0 : encabezado.IdSolicitud; ViewBag.IdProceso = encabezado == null ? 0 : encabezado.IdProceso; ViewBag.IdClasificacionCliente = encabezado == null ? 0 : encabezado.IdClasificacionCliente; ViewBag.LineaSAP = encabezado == null ? null : encabezado.LineaSAP; ViewBag.EsEspecifico = encabezado == null ? null : encabezado.EsEspecifico; ViewBag.IdSolicitudCredito = encabezado == null ? 0 : encabezado.IdSolicitudCredito; ViewBag.AplicaCaratulaAprobacionUnica = encabezado == null ? 0 : (encabezado.AplicaCaratulaAprobacionUnica == true) ? 1 : 0; ViewBag.IdCorrigeCaratula = encabezado == null ? "" : encabezado.IdCorrigeCaratula.HasValue ? encabezado.IdCorrigeCaratula.ToString() : ""; ViewBag.IdTipoFacilidad = encabezado == null ? null : encabezado.IdTipoFacilidad; ViewBag.EsgarantiaReal = encabezado == null ? null : encabezado.EsgarantiaReal; } catch (Exception ex) { UltimusLogs.Error(ex); } finally { encabezado = null; solicitudDal = null; ClienteDal = null; OferaDal = null; SolicitanteDal = null; solicitud = null; SolicitantePrincipal = null; ClientePrincipal = null; ProcesosDal = null; } } } }