/// <summary> /// Elimina el dia seleccionado en el grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void vistaAgenda_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Eliminar") { string codigoMedico = Session["codigoMedico"].ToString(); ManejadorAgenda manejador = new ManejadorAgenda(); int indice = Convert.ToInt32(e.CommandArgument); GridViewRow filaSeleccionada = vistaAgenda.Rows[indice]; TableCell nombreDia = filaSeleccionada.Cells[0]; string dia = nombreDia.Text.Replace("é", "é").Replace("á", "á").Replace("í", "í").Replace("ú", "ú").Replace("ñ", "ñ"); string confirmacion = manejador.EliminarHorario(codigoMedico, dia); string colorMensaje = ""; if (confirmacion.Contains("error")) { colorMensaje = "danger"; mensajeConfirmacion.Text = "<div class=\"alert alert-" + colorMensaje + " alert-dismissible fade show\" " + "role=\"alert\"> <strong></strong>" + confirmacion + "<button" + " type = \"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">" + " <span aria-hidden=\"true\">×</span> </button> </div>"; mensajeConfirmacion.Visible = true; } else { MostrarAgenda(new List <BLAgendaEstandar>(), codigoMedico, false); ScriptManager.RegisterStartupScript(this, GetType(), "Limpiar campos de texto", "limpiar();", true); } } }
/// <summary> /// Muestra el los dias laborales en el grid /// </summary> /// <param name="agenda"></param> /// <param name="codigo"></param> /// <param name="primeraVez"></param> private void MostrarAgenda(List <BLAgendaEstandar> agenda, string codigo, bool primeraVez) { ManejadorAgenda manejador = new ManejadorAgenda(); string duracionCita = ""; try { duracionCita = duracion.Value.Trim(); } catch (Exception) { duracionCita = ""; } string confirmacion = manejador.ActualizarAgenda(agenda, codigo, duracionCita); string colorMensaje = "success"; if (confirmacion.Contains("error")) { colorMensaje = "danger"; } else { // Si la agenda esta vacia no muestra el grid if (agenda.Count == 0) { confirmacion = "En este momento no cuenta un horario laboral"; vistaAgenda.DataSource = agenda; vistaAgenda.DataBind(); } else { // Se muestra la agenda vistaAgenda.DataSource = agenda; vistaAgenda.DataBind(); vistaAgenda.HeaderRow.TableSection = TableRowSection.TableHeader; Limpiar(); //UpdatePanel2.Update(); if (primeraVez) { confirmacion = "La agenda se cargó exitosamente"; } } } UpdatePanel1.Update(); mensajeConfirmacion.Text = "<div class=\"alert alert-" + colorMensaje + " alert-dismissible fade show\" " + "role=\"alert\"> <strong></strong>" + confirmacion + "<button" + " type = \"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">" + " <span aria-hidden=\"true\">×</span> </button> </div>"; mensajeConfirmacion.Visible = true; }
/// <summary> /// Carga la lista fechas disponibles para el medico /// </summary> /// <param name="codigoMedico"></param> private void CargarFechas(string codigoMedico) { fecha.Items.Clear(); hora.Items.Clear(); agendaMedico.Clear(); ManejadorAgenda manejadorAgenda = new ManejadorAgenda(); string confirmacion = ""; confirmacion = manejadorAgenda.CargaHorasDisponibilidad(agendaMedico, codigoMedico); if (!confirmacion.Contains("error")) { for (int i = 0; i < 7; i++) { DateTime temporal = DateTime.Now.AddDays(i); string nombreDia = temporal.ToString("dddd", new CultureInfo("es-ES")).ToUpperInvariant(); nombreDia = nombreDia.Substring(0, 1).ToUpper() + nombreDia.Substring(1).ToLower(); foreach (BLAgendaEstandar dia in agendaMedico) { if (dia.Dia.Equals(nombreDia)) { fecha.Items.Add(new ListItem(temporal.ToString("dd/MM/yyy"))); } } } string disponible = "Seleccionar"; if (agendaMedico.Count == 0) { disponible = "No disponible"; } fecha.Items.Insert(0, new ListItem(disponible)); fecha.SelectedIndex = 0; fecha.Items[0].Attributes.Add("disabled", "disabled"); } else { MostrarMensaje(confirmacion); } }
/// <summary> /// Obtiene el horario del medico y las citas que estan agendadas para una fecha en particular /// </summary> /// <param name="fecha">Fecha</param> /// <param name="presionoBoton">Presiono boton</param> private void MostrarAgenda(DateTime fecha, string presionoBoton) { try { diaSeleccionado = fecha; string codigoMedico = Session["codigoMedico"].ToString(); listaCitas.Clear(); string fechaSeleccionada = diaSeleccionado.ToShortDateString(); ManejadorCita manejadorCita = new ManejadorCita(); string confirmacion = manejadorCita.CargarCitas(listaCitas, codigoMedico, fechaSeleccionada); // Si no hubo problema al cargar las citas se procede a cargar la disponibilidad if (!confirmacion.Contains("error")) { // Se obtiene la agenda de disponibilidad del medico para el dia seleccionado ManejadorAgenda manejadorAgenda = new ManejadorAgenda(); string nombreDia = diaSeleccionado.ToString("dddd", new CultureInfo("es-ES")).ToUpperInvariant(); string nombreMes = diaSeleccionado.ToString("MMMM", new CultureInfo("es-ES")).ToUpperInvariant(); int numeroDia = diaSeleccionado.Day; nombreDia = nombreDia.Substring(0, 1).ToUpper() + nombreDia.Substring(1).ToLower(); nombreMes = nombreMes.Substring(0, 1).ToUpper() + nombreMes.Substring(1).ToLower(); BLAgendaEstandar blDia = new BLAgendaEstandar(); blDia.CodigoMedico = codigoMedico; blDia.Dia = nombreDia; confirmacion = manejadorAgenda.CargarDisponibilidad(blDia); if (!confirmacion.Contains("error")) { // Se crea una lista de items a mostrar en el grid List <ListaItem> agenda = new List <ListaItem>(); // Si la lista de citas y de disponibilidad esta vacia if ((listaCitas.Count == 0) && (blDia.HoraInicio == null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " no hay eventos"; } else { // Si no hay disponibilidad pero si hay citas pedientes if ((listaCitas.Count > 0) && (blDia.HoraInicio == null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " tiene citas pendientes"; foreach (BLCita cita in listaCitas) { agenda.Add(new ListaItem(cita.Hora, "Ocupado")); } } string segundaConfirmacion = manejadorAgenda.ObtenerDuracionCita(codigoMedico); bool duracionCapturada = true; int duracionCita = 0; try { duracionCita = int.Parse(segundaConfirmacion); } catch (Exception) { duracionCapturada = false; } if ((!segundaConfirmacion.Contains("error")) && (duracionCapturada)) { ////////////////////////////////////////////////// DateTime horaInicio = DateTime.Now; DateTime horaFin = DateTime.Now; DateTime temporal = DateTime.Now; if (blDia.HoraInicio != null) { horaInicio = DateTime.Parse(blDia.HoraInicio); horaFin = DateTime.Parse(blDia.HoraFin); temporal = horaInicio; } string t = ""; string estado = ""; // Si la lista de citas esta vacia pero hay disponibilidad if ((listaCitas.Count == 0) && (blDia.HoraInicio != null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " no tiene citas pendientes"; while (temporal < horaFin) { t = ConvertirFormato(temporal); temporal = temporal.AddMinutes(duracionCita); agenda.Add(new ListaItem(t, "Disponible")); } } // Si hay disponibilidad y citas if ((listaCitas.Count > 0) && (blDia.HoraInicio != null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " tiene citas pendientes"; // Primero se incluye la disponibilidad while (temporal < horaFin) { t = ConvertirFormato(temporal); temporal = temporal.AddMinutes(duracionCita); agenda.Add(new ListaItem(t, "Disponible")); } // Luego se incluyen las citas bool existe = false; foreach (BLCita cita in listaCitas) { foreach (ListaItem elemento in agenda) { if (elemento.Hora.Equals(cita.Hora)) { elemento.Estado = "Ocupado"; existe = true; break; } else { existe = false; } } if (existe == false) { agenda.Add(new ListaItem(cita.Hora, "Ocupado")); } } // Se ordena la lista agenda.Sort((x, y) => string.Compare(x.Hora, y.Hora)); } } else { confirmacion = "Ocurrió un error al cargar la duración de las citas o esta no se ha establecido"; } ///////////////////////////////////////////// } vistaAgenda.DataSource = agenda; vistaAgenda.DataBind(); // vistaAgenda.HeaderRow.TableSection = TableRowSection.TableHeader; } } if (!presionoBoton.Equals("")) { confirmacion = presionoBoton; } MostrarMensaje(confirmacion); } catch (Exception ex) { Elog.save(this, ex); } }
/// <summary> /// Cargar la lista de horas disponibles para el medico /// </summary> private void CargarHoras(string codigoMedico) { hora.Items.Clear(); string fechaSeleccionada = fecha.SelectedValue; DateTime temporal = DateTime.Parse(fechaSeleccionada); string nombreDia = temporal.ToString("dddd", new CultureInfo("es-ES")).ToUpperInvariant(); nombreDia = nombreDia.Substring(0, 1).ToUpper() + nombreDia.Substring(1).ToLower(); BLAgendaEstandar dia = ObtenerDia(nombreDia); if (dia != null) { DateTime horaInicio = DateTime.Parse(dia.HoraInicio); DateTime horaFin = DateTime.Parse(dia.HoraFin); DateTime i = horaInicio; ManejadorAgenda manejadorAgenda = new ManejadorAgenda(); string confirmacion = manejadorAgenda.ObtenerDuracionCita(codigoMedico); bool duracionCapturada = true; int duracionCita = 0; try { duracionCita = int.Parse(confirmacion); } catch (Exception) { duracionCapturada = false; } if ((!confirmacion.Contains("error")) && (duracionCapturada)) { string t = ""; List <ListaHoras> listaHoras = new List <ListaHoras>(); while (i < horaFin) { t = ConvertirFormato(i); i = i.AddMinutes(duracionCita); listaHoras.Add(new ListaHoras(t)); } ManejadorCita manejadorCita = new ManejadorCita(); List <BLCita> horasCitas = new List <BLCita>(); confirmacion = manejadorCita.CargarHorasCita(horasCitas, codigoMedico, fechaSeleccionada); if (!confirmacion.Contains("error")) { foreach (BLCita h in horasCitas) { for (int j = 0; j < listaHoras.Count; j++) { if (listaHoras[j].Hora.Equals(h.Hora)) { listaHoras.RemoveAt(j); } } } foreach (ListaHoras elemento in listaHoras) { hora.Items.Add(new ListItem(elemento.Hora)); } string disponible = "Seleccionar"; if (listaHoras.Count == 0) { disponible = "No disponible"; } hora.Items.Insert(0, new ListItem(disponible)); hora.SelectedIndex = 0; hora.Items[0].Attributes.Add("disabled", "disabled"); } else { MostrarMensaje(confirmacion); } } else { MostrarMensaje(confirmacion); } } }
/// <summary> /// Valida las entradas de la interfaz gráfica /// </summary> private string ValidarEntradas() { bool diaMarcado = false; if (lunes.Checked) { diaMarcado = true; } if (martes.Checked) { diaMarcado = true; } if (miercoles.Checked) { diaMarcado = true; } if (jueves.Checked) { diaMarcado = true; } if (viernes.Checked) { diaMarcado = true; } if (sabado.Checked) { diaMarcado = true; } if (domingo.Checked) { diaMarcado = true; } // Si selecciono un dia, entonces se procede a validar horas bool formatoHoraCorrecto = true; string confirmacion = "Bien"; DateTime horaInicio = DateTime.Now; DateTime horaFin = DateTime.Now; if (diaMarcado) { try { horaInicio = DateTime.Parse(clockpicker.Value); horaFin = DateTime.Parse(clockpicker2.Value); } catch (Exception) { formatoHoraCorrecto = false; } if (formatoHoraCorrecto) { if (horaFin < horaInicio) { confirmacion = "La hora de inicio debe comenzar antes que la hora de fin"; } else { bool vacio = false; if (duracion == null) { vacio = true; } else { if (duracion.Value == "") { vacio = true; } } if (!vacio) { double minutos = horaFin.Subtract(horaInicio).TotalMinutes; if (minutos < (int.Parse(duracion.Value))) { confirmacion = "La duración de la cita no se ajusta al intervalo de horas laborales"; } } else { ManejadorAgenda manejador = new ManejadorAgenda(); string codigoMedico = Session["codigoMedico"].ToString(); string obtenida = manejador.ObtenerDuracionCita(codigoMedico); if (obtenida.Contains("error")) { confirmacion = "Ocurrió un error al intentar obtener la duración de las citas"; } else { int min = 0; bool existeDuracion = true; try { min = int.Parse(obtenida); } catch (Exception) { existeDuracion = false; } if (!existeDuracion) { confirmacion = "Se requiere establecer el tiempo de duración para las citas"; } } } } } else { confirmacion = "El formato de hora no es correcto"; } } else { confirmacion = "Al menos un día debe ser seleccionado"; } return(confirmacion); }