public JsonResult ConsultaFechasSolicitudExistentes(string oIdentificacion, string FechaInicio, string FechaFin)
        {
            MensajeRespuesta               oMensajeRespuesta        = new MensajeRespuesta();
            ConsumoAPIFechasSolicitud      oConsumoAPIFechas        = new ConsumoAPIFechasSolicitud();
            RespuestaFechasSolicitudModels oRespuesteFechaSolicitud = new RespuestaFechasSolicitudModels();
            List <DateTime> oRangoFechasSolicitud = new List <DateTime>();
            List <string>   oListaFechasBD        = new List <string>();
            bool            encontrado            = false;
            DateTime        oFechaInicio          = new DateTime();
            DateTime        oFechaFin             = new DateTime();

            try
            {
                oMensajeRespuesta = oConsumoAPIFechas.ConsultarFechasSolicitud(oIdentificacion);

                if (oMensajeRespuesta.Codigo == "1")
                {
                    oRespuesteFechaSolicitud = JsonConvert.DeserializeObject <RespuestaFechasSolicitudModels>(JsonConvert.SerializeObject(oMensajeRespuesta.Resultado.Data));

                    oListaFechasBD = oRespuesteFechaSolicitud.Fechas;

                    oFechaInicio = Convert.ToDateTime(FechaInicio);
                    oFechaFin    = Convert.ToDateTime(FechaFin);

                    for (DateTime date = oFechaInicio; date <= oFechaFin; date = date.AddDays(1))
                    {
                        oRangoFechasSolicitud.Add(date);
                    }

                    if (oListaFechasBD != null && oListaFechasBD.Count > 0)
                    {
                        foreach (var oFecha in oRangoFechasSolicitud)
                        {
                            var ResultCount = from oItem in oListaFechasBD
                                              where Convert.ToDateTime(oItem) == oFecha
                                              select oItem.Count();

                            if (ResultCount.Count() > 0)
                            {
                                encontrado = true;
                                break;
                            }
                        }
                    }
                    if (encontrado)
                    {
                        oMensajeRespuesta.Codigo  = "2";
                        oMensajeRespuesta.Mensaje = "Usted tiene una solicitud de vacaciones aprobada y pendiente de disfrutar en el período indicado";
                    }
                }

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
            catch (Exception Ex)
            {
                //Se deja registro en el Log del error
                Logger.Error("Ocurrió un error validando que el empelado con Nro documento: " + oIdentificacion +
                             " no tuviese una solicitud aprobada y pendiente de disfrute en el rango de fechas seleccionado.Fecha de inicio: " + FechaInicio +
                             " Fecha de fin: " + FechaFin +
                             ". Exception: " + Ex);

                oMensajeRespuesta.Codigo    = "-3";
                oMensajeRespuesta.Mensaje   = "Ocurrió un error validando que usted no tenga una solicitud de vacaciones pendiente de disfrute en el rango de fechas seleccionado. Contacte al administrador del sistema";
                oMensajeRespuesta.Resultado = Json("", JsonRequestBehavior.AllowGet);

                return(Json(oMensajeRespuesta, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #2
0
        public MensajeRespuesta ConsultarFechasSolicitud(string Identificacion)
        {
            // Variable para almacenar respuestas de los servicios
            MensajeRespuesta oMensajeRespuesta = new MensajeRespuesta();
            //Persona Respuesta
            RespuestaFechasSolicitudModels oListFechas = new RespuestaFechasSolicitudModels();

            try
            {
                string url = URIFechasSolicitud + VariableURIFechaSolicitud + 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());

                    oListFechas = JsonConvert.DeserializeObject <RespuestaFechasSolicitudModels>(oStreamReader.ReadToEnd());

                    switch (oListFechas.Codigo)
                    {
                    //Se ingresó una identificacón vacía
                    case -1:
                        Logger.Info("El Nro. de identificación enviado para consultar las fechas de solicitudes actuales estaba vacío");

                        oListFechas.Mensaje = "El Nro. de identificación enviado para consultar las fechas de solicitudes actuales no puede estar vacío. Contacte al administrador del sistema";
                        break;

                    //No existen solicitudes con la identificación
                    case -2:
                        Logger.Info("Se realizo el consumo del API de Fechas de vacaciones correctamente, pero no se encontró ninguna solicitud que cumpliera con los parámetros de búsqueda.  ");
                        oListFechas.Codigo  = 1;
                        oListFechas.Mensaje = "No se encontró ninguna solicitud que cumpla con los parámetros de búsqueda";
                        break;

                    //Ocurrió un error intentando consultar la identificación
                    case -3:

                        Logger.Error("Ocurrió un error interno en el API de FechasSolicitud.  Nro de documento:  " +
                                     Identificacion +
                                     ". Mensaje del servicio: " + oListFechas.Mensaje);

                        oListFechas.Mensaje = "Ocurrió un error verificando la fecha de solicitudes existente para el empleado. Contacte al administrador del sistema";

                        break;

                    //Consulta satisfactoria
                    case 1:
                        Logger.Info("Se realizo el consumo del API de Fechas de vacaciones correctamente y se obtuvieron resultados en la busqueda para el Nro documento: " + Identificacion);
                        oListFechas.Mensaje = "Se realizo el consumo del API de Fechas de vacaciones correctamente";

                        break;
                    }

                    oMensajeRespuesta.Codigo    = oListFechas.Codigo.ToString();
                    oMensajeRespuesta.Mensaje   = oListFechas.Mensaje;
                    oMensajeRespuesta.Resultado = Json(oListFechas, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    oMensajeRespuesta.Codigo    = "-3";
                    oMensajeRespuesta.Mensaje   = "Ocurrió un error interno verificando las fechas de solicitudes del empleado. Contacte al administrador del sistema";
                    oMensajeRespuesta.Resultado = Json(oListFechas, JsonRequestBehavior.AllowGet);

                    //Se deja registro en el Log del error
                    Logger.Error("Se presento un error en la disponibilidad del servicio fechas de solicitud consultando el Nro documento: " + Identificacion +
                                 ". StatusCodeResponse: " + oHttpWebResponse.StatusCode.ToString() +
                                 ". StatusDescriptionResponse: " + oHttpWebResponse.StatusDescription.ToString());
                }

                return(oMensajeRespuesta);
            }
            catch (Exception Ex)
            {
                //Se deja registro en el Log del error
                Logger.Error("Se presento un error en la disponibilidad del servicio fechas de solicitud consultando el Nro documento: " + Identificacion +
                             ". Exception: " + Ex);

                oListFechas = new RespuestaFechasSolicitudModels
                {
                    Codigo  = -3,
                    Mensaje = "Ocurrió un error interno verificando las fechas de solicitudes del empleado. Contacte al administrador del sistema",
                    Fechas  = new List <string>()
                };

                oMensajeRespuesta.Codigo    = oListFechas.Codigo.ToString();
                oMensajeRespuesta.Mensaje   = oListFechas.Mensaje;
                oMensajeRespuesta.Resultado = Json(JsonConvert.SerializeObject(oListFechas, Formatting.Indented), JsonRequestBehavior.AllowGet);

                return(oMensajeRespuesta);
            };
        }