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)); } }
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); }; }