Пример #1
0
        public JsonResult ConsultaMotorDeReglas(string RespuestaSAP)
        {
            MensajeRespuesta        oMensajeRespuesta        = new MensajeRespuesta();
            ConsumoAPIMotorDeReglas oConsumoAPIMotorDeReglas = new ConsumoAPIMotorDeReglas();
            RespuestaSAPModels      oRespuestaSap            = new RespuestaSAPModels();
            RespuestaMotorModels    oRespuestaMotor          = new RespuestaMotorModels
            {
                Escenario = new List <EscenarioModels>(),
                Reglas    = new List <ReglaModels>(),
                Error     = new ErrorModels()
            };

            try
            {
                oRespuestaSap     = JsonConvert.DeserializeObject <RespuestaSAPModels>(RespuestaSAP);
                oMensajeRespuesta = oConsumoAPIMotorDeReglas.ConsultarEscenarioYReglas(oRespuestaSap.Details[0].Clasificacion, oRespuestaSap.Details[0].IdGestor, oRespuestaSap.Details[0].DesCargo);
                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error interno en el consumo del API del motor de reglas. " +
                             "Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "-3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error inesperado en la consulta de la información. Contacte al administrador del sistema";
                oMensajeRespuesta.Resultado = Json(JsonConvert.SerializeObject(oMensajeRespuesta, Formatting.Indented), JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Пример #2
0
        public JsonResult ConsultarUserSAP(string UserDA)
        {
            ConsumoAPISAP      oConsumoAPISAP    = new ConsumoAPISAP();
            MensajeRespuesta   oMensajeRespuesta = new MensajeRespuesta();
            RespuestaSAPModels oRespuestaSAP     = new RespuestaSAPModels
            {
                Details   = new List <DetailsModels>(),
                Exception = new List <ExceptionModels>()
            };

            try
            {
                oMensajeRespuesta = oConsumoAPISAP.ConsultarUserSAP(JsonConvert.DeserializeObject <PersonaModels>(UserDA).Identificacion);
                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error interno en el consumo del API de SAP con el " +
                             "Nro. Documento: " + JsonConvert.DeserializeObject <PersonaModels>(UserDA).Identificacion +
                             "Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error inesperado en la consulta de la información. Contacte al administrador del sistema";
                oMensajeRespuesta.Resultado = Json(JsonConvert.SerializeObject(oMensajeRespuesta, Formatting.Indented), JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Пример #3
0
        // GET: EjecutivosYPlanta
        public ActionResult Index(string oDatosFormulario, string oDatosSAP)
        {
            try
            {
                RespuestaMotorModels oRespuestaMotor     = new RespuestaMotorModels();
                RespuestaSAPModels   oRespuestaSAPModels = new RespuestaSAPModels();
                UtilitiesGenerales   oDiasContingente    = new UtilitiesGenerales();

                oRespuestaMotor         = JsonConvert.DeserializeObject <RespuestaMotorModels>(oDatosFormulario);
                ViewBag.oRespuestaMotor = JsonConvert.SerializeObject(oRespuestaMotor);

                oRespuestaSAPModels         = JsonConvert.DeserializeObject <RespuestaSAPModels>(oDatosSAP);
                ViewBag.oRespuestaSAPModels = JsonConvert.SerializeObject(oRespuestaSAPModels);

                ViewBag.NroIdentificacion = oRespuestaSAPModels.Details[0].NroDocumento;

                //Asignacion dle nombre del Empleado
                ViewBag.NombresEmpleado   = oRespuestaSAPModels.Details[0].PrimerNombre + " " + oRespuestaSAPModels.Details[0].SegundoNombre + " ";
                ViewBag.ApellidosEmpleado = oRespuestaSAPModels.Details[0].PrimerApellido + " " + oRespuestaSAPModels.Details[0].SegundoApellido;


                foreach (var oReglas in oRespuestaMotor.Reglas)
                {
                    switch (oReglas.Prmtro)
                    {
                    case "NroDias":
                        ViewBag.NumeroDias = oDiasContingente.CalcularDiasContingente(oRespuestaSAPModels.Details[0].Contingentes.Contigente, oReglas).ToString().Replace('.', ',');      // Pendiente por realizar ////////////////////////
                        break;

                    case "NroMinDias":
                        ViewBag.MinimoDias = Convert.ToDouble(oReglas.Vlr_Slda);
                        break;

                    case "DiasMinCalendario":
                        ViewBag.InicioFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                        break;

                    case "DiasMaxCalendario":
                        ViewBag.FinFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                        break;

                    case "NroMinDiasCorreoCompensacion":
                        ViewBag.NroMinDiasCorreoCompensacion = int.Parse(oReglas.Vlr_Slda);
                        break;

                    case "CorreoCompensacion":
                        ViewBag.CorreoCompensacion = oReglas.Vlr_Slda;
                        break;
                    }
                }

                ViewBag.SabadoHabil = oRespuestaSAPModels.Details[0].SabadoHabil;

                // Se obtienen las fechas de los festivos, sabados y domingos (Si se envía true incluira los sábados, si se envía false no incluirá los sábados, según criterio)
                string DiasFestivosSabadosDomingos = FestivosColombia.DiasFestivoSabadosDomingosConcatenado(DateTime.Now.Year, oRespuestaSAPModels.Details[0].SabadoHabil == "NO" ? true : false);
                ViewBag.DiasFestivosSabadosDomingos = DiasFestivosSabadosDomingos;


                return(View());
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error construyendo el View de Ejecutivos y Planta." + "Exception: " + Ex);
                return(null);
            }
        }
Пример #4
0
        public JsonResult GuardarSolicitud(string NroIdentificacion, string NombresEmpleado, string ApellidosEmpleado,
                                           string oRespuestaSAP, string oRespuestaMotor, string NumeroDias,
                                           string SabadoHabil, string FechaInicio, string FechaFin,
                                           string NroMinDiasCorreoCompensacion, string CorreoCompensacion)
        {
            MensajeRespuesta           oMensajeRespuesta           = new MensajeRespuesta();
            ConsumoAPIGuardarSolicitud oConsumoAPIGuardarSolicitud = new ConsumoAPIGuardarSolicitud();
            RespuestaSAPModels         oRespuestaSAPModels         = new RespuestaSAPModels();
            RespuestaMotorModels       oRespuestaMotorModels       = new RespuestaMotorModels();
            List <SolicitudDetalle>    oLstSolicitudDetalle        = new List <SolicitudDetalle>();
            Solicitudes    oSolicitudes    = new Solicitudes();
            ConsumoAPIFlow oConsumoApiFlow = new ConsumoAPIFlow();
            RespuestaGuardarSolicitudModels oRespuestaGuardarSolicitudModels = new RespuestaGuardarSolicitudModels();
            UtilitiesGenerales oUtilitiesGenerales = new UtilitiesGenerales();


            try
            {
                string NombreUser = System.Web.HttpContext.Current.User.Identity.Name;
                int    backSlash  = NombreUser.IndexOf("\\");
                string UserName   = backSlash > 0 ? NombreUser.Substring(backSlash + 1) : NombreUser;


                oRespuestaSAPModels   = JsonConvert.DeserializeObject <RespuestaSAPModels>(oRespuestaSAP);
                oRespuestaMotorModels = JsonConvert.DeserializeObject <RespuestaMotorModels>(oRespuestaMotor);

                oLstSolicitudDetalle.Add(new SolicitudDetalle
                {
                    nmbrs_slctnte        = HttpUtility.HtmlDecode(NombresEmpleado),
                    apllds_slctnte       = HttpUtility.HtmlDecode(ApellidosEmpleado),
                    fcha_inco_vccns      = Convert.ToDateTime(FechaInicio),
                    fcha_fn_vcc          = Convert.ToDateTime(FechaFin),
                    nmro_ds              = int.Parse(NumeroDias),
                    sbdo_hbl             = oRespuestaSAPModels.Details[0].SabadoHabil == "NO" ? false : true,
                    fcha_hra_aprvc       = DateTime.Now,
                    fcha_hra_rgstro_nvdd = DateTime.Now,
                    crreo_slctnte        = !string.IsNullOrEmpty(oRespuestaSAPModels.Details[0].CorreoCorp) ? oRespuestaSAPModels.Details[0].CorreoCorp : oRespuestaSAPModels.Details[0].CorreoPersonal,
                    crreo_jfe_slctnte    = !string.IsNullOrEmpty(oRespuestaSAPModels.Details[0].CorreoCorpJefe) ? oRespuestaSAPModels.Details[0].CorreoCorpJefe : oRespuestaSAPModels.Details[0].CorreoPersonalJefe,
                    codEmpldo            = oRespuestaSAPModels.Details[0].NroPersonal,
                    idEstdoSlctd         = 1,
                    scdd                         = oRespuestaSAPModels.Details[0].Sociedad,
                    idntfccn_slctnte             = NroIdentificacion,
                    NroMinDiasCorreoCompensacion = int.Parse(NroMinDiasCorreoCompensacion),
                    CorreoCompensacion           = CorreoCompensacion
                });

                oSolicitudes.fcha_hra_slctd = DateTime.Now;
                oSolicitudes.nmbrs_slctnte  = HttpUtility.HtmlDecode(NombresEmpleado);
                oSolicitudes.apllds_slctnte = HttpUtility.HtmlDecode(ApellidosEmpleado);
                oSolicitudes.nmro_idntfccn  = NroIdentificacion;
                oSolicitudes.cdgo_escenario = oRespuestaMotorModels.Escenario[0].Cdgo;
                oSolicitudes.detalle        = oLstSolicitudDetalle;
                oSolicitudes.crro_antdr     = "";
                oSolicitudes.ip             = oUtilitiesGenerales.ObtenerIp();
                oSolicitudes.nmbre_usrio    = UserName;
                oSolicitudes.nmbre_eqpo     = oUtilitiesGenerales.ObtenerNombreMaquina();

                oMensajeRespuesta = oConsumoAPIGuardarSolicitud.AlmacenarSolicitud(oSolicitudes);

                if (oMensajeRespuesta.Codigo == "1")
                {
                    string oRespuestaGuardarSolicitud = JsonConvert.SerializeObject(oMensajeRespuesta.Resultado.Data, Formatting.Indented);

                    oRespuestaGuardarSolicitudModels = JsonConvert.DeserializeObject <RespuestaGuardarSolicitudModels>(oRespuestaGuardarSolicitud);



                    string URIAprobacionyRechazo = Request.Url.Scheme +                         //Https
                                                   "://" + Request.Url.Authority +              //WWW.
                                                   Request.ApplicationPath.TrimEnd('/') + "/" + //Base del sitio
                                                   URIAprobacion +                              // AprobacionYRechazo/Index
                                                   IdSolicitud + HttpUtility.UrlEncode(StringCipher.Encrypt(oRespuestaGuardarSolicitudModels.Resultado.ToString())) + "&" +
                                                   CorreoJefe + HttpUtility.UrlEncode(StringCipher.Encrypt(oLstSolicitudDetalle[0].crreo_jfe_slctnte));


                    FlowModels oFlow = new FlowModels
                    {
                        correoSolicitante = oLstSolicitudDetalle[0].crreo_slctnte,
                        nombreSolicitante = HttpUtility.HtmlDecode(oLstSolicitudDetalle[0].nmbrs_slctnte) + " " + HttpUtility.HtmlDecode(oLstSolicitudDetalle[0].apllds_slctnte),
                        fecha_fin         = oLstSolicitudDetalle[0].fcha_fn_vcc.ToShortDateString(),
                        fecha_inicio      = oLstSolicitudDetalle[0].fcha_inco_vccns.ToShortDateString(),
                        CorreoJefe        = oLstSolicitudDetalle[0].crreo_jfe_slctnte,
                        url = "<a href=" + URIAprobacionyRechazo + ">Haga clic aqui </a>",
                        opt = 1
                    };

                    oConsumoApiFlow.EnviarNotificacionFlow(oFlow);

                    if (oLstSolicitudDetalle[0].nmro_ds <= int.Parse(NroMinDiasCorreoCompensacion))
                    {
                        FlowModels oFlowMesaCompensacion = new FlowModels
                        {
                            CorreoCompensacion = CorreoCompensacion,
                            nombreSolicitante  = HttpUtility.HtmlDecode(oLstSolicitudDetalle[0].nmbrs_slctnte) + " " + HttpUtility.HtmlDecode(oLstSolicitudDetalle[0].apllds_slctnte),
                            fecha_inicio       = oLstSolicitudDetalle[0].fcha_inco_vccns.ToShortDateString(),
                            fecha_fin          = oLstSolicitudDetalle[0].fcha_fn_vcc.ToShortDateString(),
                            opt = 5
                        };

                        oConsumoApiFlow.EnviarNotificacionFlow(oFlowMesaCompensacion);
                    }
                }


                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error almacenando la solicitud de vacaciones. Nro Documento Encabezado: " +
                             oSolicitudes.nmro_idntfccn +
                             ". Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "-3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error almacenando la solicitud de vacaciones. Contacte al administrador del sistema";
                oMensajeRespuesta.Resultado = Json(JsonConvert.SerializeObject(oMensajeRespuesta, Formatting.Indented), JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Пример #5
0
        public MensajeRespuesta ConsultarUserSAP(int Identificacion)
        {
            MensajeRespuesta   oMensajeRespuesta = new MensajeRespuesta();
            RespuestaSAPModels oRespuestaSAP     = new RespuestaSAPModels
            {
                Details   = new List <DetailsModels>(),
                Exception = new List <ExceptionModels>()
            };
            RespuestaSAPModels oRespuestaSAPCliente = new RespuestaSAPModels
            {
                Details   = new List <DetailsModels>(),
                Exception = new List <ExceptionModels>()
            };

            try
            {
                string url = URISAP + VariableAPISAP + Identificacion;
                oHttpWebRequest             = (HttpWebRequest)WebRequest.Create(url);
                oHttpWebRequest.ContentType = "application/json";
                oHttpWebRequest.Method      = "GET";
                oEncoding        = Encoding.GetEncoding("utf-8");
                oHttpWebResponse = (HttpWebResponse)oHttpWebRequest.GetResponse();

                if (oHttpWebResponse.StatusCode == HttpStatusCode.OK)
                {
                    StreamReader oStreamReader = new StreamReader(oHttpWebResponse.GetResponseStream());

                    oRespuestaSAP = JsonConvert.DeserializeObject <RespuestaSAPModels>(oStreamReader.ReadToEnd());

                    if (oRespuestaSAP.Exception != null && oRespuestaSAP.Exception.Count > 0)
                    {
                        if (oRespuestaSAP.Exception.Count > 1)
                        {
                            foreach (var oException in oRespuestaSAP.Exception)
                            {
                                if (oException.ID == "0")
                                {
                                    if (oRespuestaSAP.Details[Contador].Sociedad == SociedadVacaciones)
                                    {
                                        POS = Contador;
                                        break;
                                    }
                                }

                                Contador++;
                            }
                        }

                        oRespuestaSAPCliente.Details.Add(oRespuestaSAP.Details[POS]);
                        oRespuestaSAPCliente.Exception.Add(oRespuestaSAP.Exception[POS]);

                        switch (oRespuestaSAPCliente.Exception[0].ID)
                        {
                        //Procesado correctamente
                        case "4":

                            if (string.IsNullOrEmpty(oRespuestaSAPCliente.Details[0].CorreoCorpJefe))
                            {
                                oRespuestaSAPCliente.Exception[0].ID        = "6";
                                oRespuestaSAPCliente.Exception[POS].MESSAGE = "No se ha identificado la información de su jefe inmediato. Comuníquese con Gestión Humana";
                            }

                            if (oRespuestaSAPCliente.Details[0].Contingentes.Contigente != null && oRespuestaSAPCliente.Details[0].Contingentes.Contigente.Count > 0 && oRespuestaSAPCliente.Details[0].IdGestor == "NO")
                            {
                                foreach (var item in oRespuestaSAPCliente.Details[0].Contingentes.Contigente)
                                {
                                    if (string.IsNullOrEmpty(item.NroDias))
                                    {
                                        oRespuestaSAPCliente.Exception[0].ID        = "5";
                                        oRespuestaSAPCliente.Exception[POS].MESSAGE = "Usted no cuenta con días disponibles para disfrute de vacaciones";
                                    }
                                }
                            }


                            break;

                        //Error: Favor Enviar Nro.(s) de Identificación
                        case "3":

                            Logger.Error("El número de identificación enviado al servicio de SAP estaba vacío. " +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "No se logro identificar un documento de identidad valido para realizar la consulta pertinente. Por favor contacte al administrador del sistema";

                            break;

                        //Error: En fecha del contingente, por favor comunicarse con el área de nómina
                        case "2":

                            Logger.Error("Error en fecha del contingente consultando el documento de identidad Nro. " +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "Se presento un error consultando la fecha del contingente. Por favor contacte al administrador del sistema";

                            break;

                        //Error: No se encontraron datos con la(s) Identificación(es) enviada(s)
                        case "1":

                            Logger.Error("No se encontraron datos con el documento de identidad enviado. Nro. Documento" +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "No se encontraron datos con el número del documento enviado";

                            break;

                        case "-1":

                            Logger.Error("El Nro de identificacion no puede ser vacio. Nro. Documento" +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "El Nro. de documento no puede ser vacío";

                            break;

                        case "-2":

                            Logger.Error("Ocurrió un error consultando la información a la API de solicitud de vacaciones. Nro. Documento" +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "Ocurrió un error consultando la información a la API de solicitud de vacaciones";

                            break;


                        case "-3":

                            Logger.Error("Ocurrió un error interno en el API de solicitud de vacaciones. Contacte al administrador del sistema . Nro. Documento" +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "Ocurrió un error interno en el API de solicitud de vacaciones. Contacte al administrador del sistema";

                            break;

                        case "-4":

                            Logger.Error("El empleado ya cuenta con una solicitud de vacaciones pendiente de aprobación. Nro. Documento" +
                                         Identificacion +
                                         ". Mensaje del servicio: " + oRespuestaSAPCliente.Exception[0].MESSAGE);

                            oRespuestaSAPCliente.Exception[POS].MESSAGE = "El empleado ya cuenta con una solicitud de vacaciones pendiente de aprobación";

                            break;
                        }

                        oMensajeRespuesta.Codigo    = oRespuestaSAPCliente.Exception[POS].ID;
                        oMensajeRespuesta.Mensaje   = oRespuestaSAPCliente.Exception[POS].MESSAGE;
                        oMensajeRespuesta.Resultado = Json(oRespuestaSAPCliente, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        Logger.Error("Ocurrió un error des serializando la respuesta del API de SAP en un Objeto de tipo RespuestaSAPModels.  " +
                                     "Nro. Documento: " + Identificacion);

                        oMensajeRespuesta.Codigo    = "3";
                        oMensajeRespuesta.Mensaje   = "Ocurrió un error en el API del servicio de SAP";
                        oMensajeRespuesta.Resultado = Json("", JsonRequestBehavior.AllowGet);
                    }
                }
                else
                {
                    //Se deja registro en el Log del error
                    Logger.Error("Se presento un error en la API que implementa el consumo de SAP. Error consultando el Nro. De Identificacion: " + Identificacion.ToString() +
                                 ". StatusCodeResponse: " + oHttpWebResponse.StatusCode.ToString() +
                                 ". StatusDescription: " + oHttpWebResponse.StatusDescription.ToString());


                    oMensajeRespuesta.Codigo    = "3";
                    oMensajeRespuesta.Mensaje   = "Ocurrió un error en el API del servicio de SAP";
                    oMensajeRespuesta.Resultado = Json(oRespuestaSAPCliente, JsonRequestBehavior.AllowGet);
                }

                return(oMensajeRespuesta);
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error interno en el consumo del API de SAP con el " +
                             "Nro. Documento: " + Identificacion +
                             "Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error en el API del servicio de SAP";
                oMensajeRespuesta.Resultado = Json(oRespuestaSAPCliente, JsonRequestBehavior.AllowGet);

                return(oMensajeRespuesta);
            }
        }
Пример #6
0
        public JsonResult EnviarNotificacionFlow(string oDataActual, string oIdSolicitud, string oRespuestaSAP)
        {
            List <SolicitudDetalle> oLstSolicitudDetalle = new List <SolicitudDetalle>();
            List <string>           oLstCorreos          = new List <string>();
            MensajeRespuesta        oMensajeRespuesta    = new MensajeRespuesta();
            RespuestaSAPModels      oRespuestaSAPModels  = new RespuestaSAPModels();
            ConsumoAPIFlow          oConsumoApiFlow      = new ConsumoAPIFlow();
            FlowModels oFlow             = new FlowModels();
            FlowModels oFlowCompensacion = new FlowModels();
            string     oTableAnotador    = string.Empty;
            string     oTableJefes       = string.Empty;
            string     oCorreoAnotador   = string.Empty;

            try
            {
                string URIAprobacionyRechazo = Request.Url.Scheme +                         //Https
                                               "://" + Request.Url.Authority +              //WWW.
                                               Request.ApplicationPath.TrimEnd('/') + "/" + //Base del sitio
                                               URIAprobacion +                              // AprobacionYRechazo/Index
                                               IdSolicitud + HttpUtility.UrlEncode(StringCipher.Encrypt(oIdSolicitud)) + "&" +
                                               CorreoJefe;



                oRespuestaSAPModels = JsonConvert.DeserializeObject <RespuestaSAPModels>(oRespuestaSAP);


                oCorreoAnotador = !string.IsNullOrEmpty(oRespuestaSAPModels.Details[0].CorreoCorp) ? oRespuestaSAPModels.Details[0].CorreoCorp : oRespuestaSAPModels.Details[0].CorreoPersonal;

                //Se declara inicio de la tabla para el correo de los anotadores
                oTableAnotador = "<Table cellpadding=0 cellspacing=0 border=1>";


                oLstSolicitudDetalle = GenerarObjetoSolicitudDetalle(oDataActual);

                if (oLstSolicitudDetalle != null && oLstSolicitudDetalle.Count > 0)
                {
                    //Se crean los encabezados para la tabla del anotador
                    oTableAnotador += "<tr>" +
                                      "<th> Nro. de identificación </th>" +
                                      "<th> Nombres y apellidos </th>" +
                                      "<th> Inicio de vacaciones </th>" +
                                      "<th> Fin de vacaciones </th>" +
                                      "<th> Nro. de días a disfrutar </th> " +
                                      "</tr>";

                    foreach (SolicitudDetalle oSolicitudDetalle in oLstSolicitudDetalle)
                    {
                        if (oLstCorreos == null && oLstCorreos.Count == 0)
                        {
                            oLstCorreos.Add(oSolicitudDetalle.crreo_jfe_slctnte);
                        }
                        else
                        {
                            int Count = oLstCorreos.Count(element => element == oSolicitudDetalle.crreo_jfe_slctnte);
                            if (Count == 0)
                            {
                                oLstCorreos.Add(oSolicitudDetalle.crreo_jfe_slctnte);
                            }
                        }

                        //Se adiciona cada uno de los empleados a la tabla del anotador
                        oTableAnotador += "<tr>" +
                                          "<td>" + oSolicitudDetalle.idntfccn_slctnte + "</td>" +
                                          "<td>" + oSolicitudDetalle.nmbrs_slctnte + oSolicitudDetalle.apllds_slctnte + "</td>" +
                                          "<td>" + oSolicitudDetalle.fcha_inco_vccns.ToShortDateString() + "</td>" +
                                          "<td>" + oSolicitudDetalle.fcha_fn_vcc.ToShortDateString() + "</td>" +
                                          "<td>" + oSolicitudDetalle.nmro_ds + "</td>" +
                                          "</tr>";
                    }
                }

                //Se cierra la tabla del anotador
                oTableAnotador += "</Table>";

                oFlow = new FlowModels
                {
                    correoAnotador = oCorreoAnotador,
                    lista          = oTableAnotador,
                    opt            = 6
                };

                oTableAnotador = string.Empty;

                oMensajeRespuesta = new MensajeRespuesta();
                //Aqui se debe enviar notificacion individual
                oMensajeRespuesta = oConsumoApiFlow.EnviarNotificacionFlow(oFlow);

                if (oMensajeRespuesta.Codigo != "1")
                {
                    Logger.Error("Ocurrió un error enviando las notificaciones por correo electrónico para el anotador con correo: " + oCorreoAnotador +
                                 ". Id de la solicitud: " + IdSolicitud);
                }


                foreach (var oCorreo in oLstCorreos)
                {
                    oTableJefes  = "<Table cellpadding=0 cellspacing=0 border=1>";
                    oTableJefes += "<tr>" +
                                   "<th> Nro. de identificación </th>" +
                                   "<th> Nombres y apellidos </th>" +
                                   "<th> Inicio de vacaciones </th>" +
                                   "<th> Fin de vacaciones </th>" +
                                   "<th> Nro. de días a disfrutar </th> " +
                                   "</tr>";

                    foreach (var oDetalle in oLstSolicitudDetalle)
                    {
                        if (oDetalle.crreo_jfe_slctnte == oCorreo)
                        {
                            oTableJefes += "<tr>" +
                                           "<td>" + oDetalle.idntfccn_slctnte + "</td>" +
                                           "<td>" + oDetalle.nmbrs_slctnte + oDetalle.apllds_slctnte + "</td>" +
                                           "<td>" + oDetalle.fcha_inco_vccns.ToShortDateString() + "</td>" +
                                           "<td>" + oDetalle.fcha_fn_vcc.ToShortDateString() + "</td>" +
                                           "<td>" + oDetalle.nmro_ds + "</td>" +
                                           "</tr>";


                            oFlow.correoSolicitante = oDetalle.crreo_slctnte;
                            oFlow.nombreSolicitante = HttpUtility.HtmlDecode(oDetalle.nmbrs_slctnte) + " " + HttpUtility.HtmlDecode(oDetalle.apllds_slctnte);
                            oFlow.fecha_inicio      = oDetalle.fcha_inco_vccns.ToShortDateString();
                            oFlow.fecha_fin         = oDetalle.fcha_fn_vcc.ToShortDateString();
                            oFlow.opt = 4;

                            oMensajeRespuesta = new MensajeRespuesta();
                            //Aqui se debe enviar notificacion individual
                            oMensajeRespuesta = oConsumoApiFlow.EnviarNotificacionFlow(oFlow);

                            if (oMensajeRespuesta.Codigo != "1")
                            {
                                Logger.Error("Ocurrió un error enviando las notificaciones por correo electrónico para el empleado con código SAP: " +
                                             oDetalle.codEmpldo + ". Nombre Completo: " + oDetalle.nmbrs_slctnte + oDetalle.apllds_slctnte +
                                             ". Id solcicitud: " + IdSolicitud);
                                oMensajeRespuesta = new MensajeRespuesta();
                            }


                            if (oDetalle.nmro_ds <= oDetalle.NroMinDiasCorreoCompensacion)
                            {
                                oFlowCompensacion = new FlowModels();
                                oFlowCompensacion.CorreoCompensacion = oDetalle.CorreoCompensacion;
                                oFlowCompensacion.nombreSolicitante  = HttpUtility.HtmlDecode(oDetalle.nmbrs_slctnte) + " " + HttpUtility.HtmlDecode(oDetalle.apllds_slctnte);
                                oFlowCompensacion.fecha_inicio       = oDetalle.fcha_inco_vccns.ToShortDateString();
                                oFlowCompensacion.fecha_fin          = oDetalle.fcha_fn_vcc.ToShortDateString();
                                oFlowCompensacion.opt = 5;

                                oMensajeRespuesta = new MensajeRespuesta();
                                //Aqui se debe enviar notificacion individual
                                oMensajeRespuesta = oConsumoApiFlow.EnviarNotificacionFlow(oFlowCompensacion);

                                if (oMensajeRespuesta.Codigo != "1")
                                {
                                    Logger.Error("Ocurrió un error enviando las notificaciones por correo electrónico para el empleado con código SAP: " +
                                                 oDetalle.codEmpldo + ". Nombre Completo: " + oDetalle.nmbrs_slctnte + oDetalle.apllds_slctnte +
                                                 ". Id solcicitud: " + IdSolicitud);
                                    oMensajeRespuesta = new MensajeRespuesta();
                                }
                            }
                        }
                    }

                    oTableJefes += "</Table>";

                    oFlow = new FlowModels
                    {
                        CorreoJefe = oCorreo,
                        lista      = oTableJefes,
                        url        = "<a href=" + URIAprobacionyRechazo + HttpUtility.UrlEncode(StringCipher.Encrypt(oCorreo)) + ">Haga clic aqui </a>",
                        opt        = 3
                    };

                    oTableJefes = string.Empty;

                    oMensajeRespuesta = new MensajeRespuesta();
                    //Aqui se debe enviar notificacion individual
                    oMensajeRespuesta = oConsumoApiFlow.EnviarNotificacionFlow(oFlow);

                    if (oMensajeRespuesta.Codigo != "1")
                    {
                        Logger.Error("Ocurrió un error enviando las notificaciones por correo electrónico para el jefe con correo: " + oCorreo +
                                     ". Id de la solicitud: " + IdSolicitud);
                    }
                }

                oMensajeRespuesta           = new MensajeRespuesta();
                oMensajeRespuesta.Codigo    = "1";
                oMensajeRespuesta.Mensaje   = "Se genero la lista de correos satisfactoriamente";
                oMensajeRespuesta.Resultado = Json(oLstCorreos, JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error enviando las notificaciones por correo electrónico." +
                             ". Exception: " + Ex);

                oMensajeRespuesta.Codigo  = "-1";
                oMensajeRespuesta.Mensaje = "Ocurrió un error enviando las notificaciones por correo electrónico. Contacte al administrador del sistema";
                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Пример #7
0
        public JsonResult ArmarObjetoPantallaModal(string RespuestaMotor, string RespuestaSAP)
        {
            MensajeRespuesta     oMensajeRespuesta = new MensajeRespuesta();
            RespuestaSAPModels   oRespuestaSap     = new RespuestaSAPModels();
            RespuestaMotorModels oRespuestaMotor   = new RespuestaMotorModels
            {
                Escenario = new List <EscenarioModels>(),
                Reglas    = new List <ReglaModels>(),
                Error     = new ErrorModels()
            };

            UtilitiesGenerales    oDiasContingente       = new UtilitiesGenerales();
            ModalAnotadoresModels oModalAnotadoresModels = new ModalAnotadoresModels();

            try
            {
                oRespuestaMotor = JsonConvert.DeserializeObject <RespuestaMotorModels>(RespuestaMotor);
                oRespuestaSap   = JsonConvert.DeserializeObject <RespuestaSAPModels>(RespuestaSAP);


                oModalAnotadoresModels.NombreEmpleado = HttpUtility.HtmlDecode(oRespuestaSap.Details[0].PrimerNombre) + " " +
                                                        HttpUtility.HtmlDecode(oRespuestaSap.Details[0].SegundoNombre) + " ";

                oModalAnotadoresModels.ApellidoEmpleado = HttpUtility.HtmlDecode(oRespuestaSap.Details[0].PrimerApellido) + " " +
                                                          HttpUtility.HtmlDecode(oRespuestaSap.Details[0].SegundoApellido);



                foreach (var oReglas in oRespuestaMotor.Reglas)
                {
                    switch (oReglas.Prmtro)
                    {
                    case "NroDias":
                        oModalAnotadoresModels.NroDias = oDiasContingente.CalcularDiasContingente(oRespuestaSap.Details[0].Contingentes.Contigente, oReglas).ToString().Replace('.', ',');      // Pendiente por realizar ////////////////////////
                        break;

                    case "NroMinDias":
                        oModalAnotadoresModels.MinimoDias = Convert.ToDouble(oReglas.Vlr_Slda);
                        break;

                    case "DiasMinCalendario":
                        oModalAnotadoresModels.InicioFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                        break;

                    case "DiasMaxCalendario":
                        oModalAnotadoresModels.FinFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                        break;

                    case "NroMinDiasCorreoCompensacion":
                        oModalAnotadoresModels.NroMinDiasCorreoCompensacion = int.Parse(oReglas.Vlr_Slda);
                        break;

                    case "CorreoCompensacion":
                        oModalAnotadoresModels.CorreoCompensacion = oReglas.Vlr_Slda;
                        break;
                    }
                }

                oModalAnotadoresModels.SabadoHabil = oRespuestaSap.Details[0].SabadoHabil;

                // Se obtienen las fechas de los festivos, sabados y domingos (Si se envía true incluira los sábados, si se envía false no incluirá los sábados, según criterio)
                string DiasFestivosSabadosDomingos = FestivosColombia.DiasFestivoSabadosDomingosConcatenado(DateTime.Now.Year, oModalAnotadoresModels.SabadoHabil == "NO" ? true : false);
                oModalAnotadoresModels.DiasFestivosSabadosDomingos = DiasFestivosSabadosDomingos;

                oModalAnotadoresModels.CorreoSolicitante     = !string.IsNullOrEmpty(oRespuestaSap.Details[0].CorreoCorp) ? oRespuestaSap.Details[0].CorreoCorp : oRespuestaSap.Details[0].CorreoPersonal;
                oModalAnotadoresModels.CorreoJefeSolicitante = !string.IsNullOrEmpty(oRespuestaSap.Details[0].CorreoCorpJefe) ? oRespuestaSap.Details[0].CorreoCorpJefe : oRespuestaSap.Details[0].CorreoPersonalJefe;
                oModalAnotadoresModels.CodigoEmpleado        = oRespuestaSap.Details[0].NroPersonal;
                oModalAnotadoresModels.Sociedad = oRespuestaSap.Details[0].Sociedad;

                oMensajeRespuesta.Codigo    = "1";
                oMensajeRespuesta.Resultado = Json(oModalAnotadoresModels, JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                Logger.Error("Ocurrió un error interno en el consumo del API del motor de reglas. " +
                             "Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "-3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error inesperado en la consulta de la información. Contacte al administrador del sistema";
                oMensajeRespuesta.Resultado = Json(JsonConvert.SerializeObject(oMensajeRespuesta, Formatting.Indented), JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Пример #8
0
        public JsonResult AgregarOEditarEmpleado(string NroIdentificacion, string NombresEmpleado, string ApellidosEmpleado,
                                                 string NumeroDias, string NumeroDiasDisponibles, bool EsEdit,
                                                 bool EsModal, string FechaInicio, string FechaFin,
                                                 string DataActual, string oRespuestaSAP, string SabadoHabil,
                                                 string CorreoSolicitante, string CorreoJefeSolicitante, string CodigoEmpleado,
                                                 string Sociedad, string MinimoDias, string InicioFecha,
                                                 string FinFecha, string DiasFestivosSabadosDomingos, string oRespuestaMotor,
                                                 string oMinimoDiasCorreoCompensacion, string oCorreoCompensacion)
        {
            RespuestaSAPModels      oRespuestaSAPModels   = new RespuestaSAPModels();
            RespuestaMotorModels    oRespuestaMotorModels = new RespuestaMotorModels();
            List <SolicitudDetalle> oLstSolicitudDetalle  = new List <SolicitudDetalle>();

            try
            {
                oLstSolicitudDetalle = JsonConvert.DeserializeObject <List <SolicitudDetalle> >(DataActual);

                if (!EsEdit)
                {
                    //Se valida si ya la cedula ha sido agregada
                    int Existe = oLstSolicitudDetalle
                                 .Where(w => w.nmroDcmnto == NroIdentificacion).Count();

                    if (Existe == 0)
                    {
                        if (!EsModal)
                        {
                            oRespuestaSAPModels = JsonConvert.DeserializeObject <RespuestaSAPModels>(oRespuestaSAP);

                            oRespuestaMotorModels = JsonConvert.DeserializeObject <RespuestaMotorModels>(oRespuestaMotor);
                            double   oMinimoDias  = 0;
                            DateTime oInicioFecha = new DateTime();
                            DateTime oFinFecha    = new DateTime();

                            foreach (var oReglas in oRespuestaMotorModels.Reglas)
                            {
                                switch (oReglas.Prmtro)
                                {
                                case "NroMinDias":
                                    oMinimoDias = Convert.ToDouble(oReglas.Vlr_Slda);
                                    break;

                                case "DiasMinCalendario":
                                    oInicioFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                                    break;

                                case "DiasMaxCalendario":
                                    oFinFecha = DateTime.Now.AddDays(Convert.ToDouble(oReglas.Vlr_Slda));
                                    break;
                                }
                            }

                            //Aqui se agregan los items desde la pantalla principal
                            if (oRespuestaSAPModels != null && oRespuestaSAPModels.Details.Count > 0)
                            {
                                oLstSolicitudDetalle.Add(new SolicitudDetalle
                                {
                                    nmroDcmnto           = NroIdentificacion,
                                    nmbrs_slctnte        = HttpUtility.HtmlDecode(NombresEmpleado),
                                    apllds_slctnte       = HttpUtility.HtmlDecode(ApellidosEmpleado),
                                    nmbre_cmplto         = HttpUtility.HtmlDecode(NombresEmpleado) + " " + HttpUtility.HtmlDecode(ApellidosEmpleado),
                                    fcha_inco_vccns      = Convert.ToDateTime(FechaInicio),
                                    fcha_fn_vcc          = Convert.ToDateTime(FechaFin),
                                    nmro_ds              = int.Parse(NumeroDias),
                                    sbdo_hbl             = oRespuestaSAPModels.Details[0].SabadoHabil == "NO" ? false : true,
                                    fcha_hra_aprvc       = DateTime.Now,
                                    fcha_hra_rgstro_nvdd = DateTime.Now,
                                    crreo_slctnte        = !string.IsNullOrEmpty(oRespuestaSAPModels.Details[0].CorreoCorp) ? oRespuestaSAPModels.Details[0].CorreoCorp : oRespuestaSAPModels.Details[0].CorreoPersonal,
                                    crreo_jfe_slctnte    = !string.IsNullOrEmpty(oRespuestaSAPModels.Details[0].CorreoCorpJefe) ? oRespuestaSAPModels.Details[0].CorreoCorpJefe : oRespuestaSAPModels.Details[0].CorreoPersonalJefe,
                                    codEmpldo            = oRespuestaSAPModels.Details[0].NroPersonal,
                                    idEstdoSlctd         = 1,
                                    scdd                         = oRespuestaSAPModels.Details[0].Sociedad,
                                    nmro_ds_dspnbls              = double.Parse(NumeroDiasDisponibles),
                                    MinimoDias                   = oMinimoDias,
                                    InicioFecha                  = oInicioFecha,
                                    FinFecha                     = oFinFecha,
                                    DiasFestivosSabadosDomingos  = DiasFestivosSabadosDomingos,
                                    NroMinDiasCorreoCompensacion = int.Parse(oMinimoDiasCorreoCompensacion),
                                    CorreoCompensacion           = oCorreoCompensacion
                                });

                                oMensajeRespuesta = new MensajeRespuesta
                                {
                                    Codigo    = "1",
                                    Mensaje   = "Empleado agregado correctamente a la lista",
                                    Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                                };
                            }
                            else
                            {
                                oMensajeRespuesta = new MensajeRespuesta
                                {
                                    Codigo    = "2",
                                    Mensaje   = "No fue posible adicionar el empleado a la lista. Contacte al administrador del sistema",
                                    Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                                };

                                Logger.Error("No fue posible deserializar el Objeto de la respuesta de SAP " +
                                             "Nro. Documento: " + NroIdentificacion +
                                             "Era Modal Anotadores: " + EsModal);
                            }
                        }
                        else
                        {
                            //Aqui se agrega desde la pantalla modal
                            oLstSolicitudDetalle.Add(new SolicitudDetalle
                            {
                                nmroDcmnto           = NroIdentificacion,
                                nmbrs_slctnte        = HttpUtility.HtmlDecode(NombresEmpleado),
                                apllds_slctnte       = HttpUtility.HtmlDecode(ApellidosEmpleado),
                                nmbre_cmplto         = HttpUtility.HtmlDecode(NombresEmpleado) + " " + HttpUtility.HtmlDecode(ApellidosEmpleado),
                                fcha_inco_vccns      = Convert.ToDateTime(FechaInicio),
                                fcha_fn_vcc          = Convert.ToDateTime(FechaFin),
                                nmro_ds              = int.Parse(NumeroDias),
                                sbdo_hbl             = SabadoHabil == "NO" ? false : true,
                                fcha_hra_aprvc       = DateTime.Now,
                                fcha_hra_rgstro_nvdd = DateTime.Now,
                                crreo_slctnte        = CorreoSolicitante,
                                crreo_jfe_slctnte    = CorreoJefeSolicitante,
                                codEmpldo            = CodigoEmpleado,
                                idEstdoSlctd         = 1,
                                scdd                         = Sociedad,
                                nmro_ds_dspnbls              = double.Parse(NumeroDiasDisponibles),
                                MinimoDias                   = double.Parse(MinimoDias),
                                InicioFecha                  = Convert.ToDateTime(InicioFecha),
                                FinFecha                     = Convert.ToDateTime(FinFecha),
                                DiasFestivosSabadosDomingos  = DiasFestivosSabadosDomingos,
                                NroMinDiasCorreoCompensacion = int.Parse(oMinimoDiasCorreoCompensacion),
                                CorreoCompensacion           = oCorreoCompensacion
                            });

                            oMensajeRespuesta = new MensajeRespuesta
                            {
                                Codigo    = "1",
                                Mensaje   = "Empleado agregado correctamente a la lista",
                                Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                            };
                        }
                    }
                    else
                    {
                        oMensajeRespuesta = new MensajeRespuesta
                        {
                            Codigo    = "3",
                            Mensaje   = "El empleado ya se encuentra agregado en la lista. Verifique la información e inténtelo de nuevo",
                            Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                        };
                    }
                }
                else
                {
                    //Aqui se hacen las ediciones
                    SolicitudDetalle oSolicitudDetalle = new SolicitudDetalle();

                    if (oLstSolicitudDetalle != null && oLstSolicitudDetalle.Count > 0)
                    {
                        foreach (var item in oLstSolicitudDetalle)
                        {
                            if (item.nmroDcmnto == NroIdentificacion)
                            {
                                item.nmro_ds         = int.Parse(NumeroDias);
                                item.fcha_inco_vccns = Convert.ToDateTime(FechaInicio);
                                item.fcha_fn_vcc     = Convert.ToDateTime(FechaFin);
                                break;
                            }
                        }
                    }

                    oMensajeRespuesta = new MensajeRespuesta
                    {
                        Codigo    = "1",
                        Mensaje   = "Empleado actualizado correctamente",
                        Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                    };
                }

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                oMensajeRespuesta = new MensajeRespuesta
                {
                    Codigo    = "-1",
                    Mensaje   = "Ocurrió un error. Por favor contacte al administrador del sistema",
                    Resultado = Json(oLstSolicitudDetalle, JsonRequestBehavior.AllowGet)
                };

                Logger.Error("Ocurrió un error interno agregando o editando el empleado en la pantalla de anotador. " +
                             "Nro. Documento: " + NroIdentificacion +
                             "Exception: " + Ex);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }