public List <ResponseTurnoDto> GetTurnosDisponiblesByDay(DateTime fecha, int IdEspecialidad) { int dayId = GetDayId(fecha); List <Turno> turnosOcupados = _query.GetTurnosDelDia(fecha, IdEspecialidad); CalendarioTurnos diaDeAtencion = _calendarioTurnosQuery.GetCalendarioTurnoDeEspecialista(dayId, IdEspecialidad); if (diaDeAtencion == null) { return(null); } List <ResponseTurnoDto> turnosDisponibles = new List <ResponseTurnoDto>(); for (DateTime date = diaDeAtencion.HoraInicio; diaDeAtencion.HoraFin.CompareTo(date.AddMinutes(30)) >= 0; date = date.AddMinutes(30)) { if (!IsTurnoOcupado(turnosOcupados, date)) { turnosDisponibles.Add(new ResponseTurnoDto() { IdEspecialidad = diaDeAtencion.IdEspecialidad, IdEspecialista = diaDeAtencion.IdEspecialista, Fecha = fecha, HoraInicio = date, HoraFin = date.AddMinutes(30), }); } else { turnosDisponibles.Add(null); } } return(turnosDisponibles); }
public ResponseCalendarioTurnosDto CreateCalendarioTurnos(CalendarioTurnosDto calendarioTurno) { List <CalendarioTurnos> Lista = new List <CalendarioTurnos>() { }; foreach (var item in calendarioTurno.CalendarioTurnos) { CalendarioTurnos entity = new CalendarioTurnos { IdEspecialidad = item.IdEspecialidad, IdEspecialista = item.IdEspecialista, DiaId = item.DiaId, HoraInicio = Convert.ToDateTime(item.HoraInicio), HoraFin = Convert.ToDateTime(item.HoraFin) }; Lista.Add(entity); _repository.Add <CalendarioTurnos>(entity); } return(new ResponseCalendarioTurnosDto { ListaCalendarioTurnos = Lista }); }
private void VerificarAgenda() { String [] Dia = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" }; if (Request["idItem"].ToString() != "0") { Item oRegistro = new Item(); oRegistro = (Item)oRegistro.Get(typeof(Item), int.Parse(Request["idItem"].ToString())); item.Text = oRegistro.Nombre; } string m_ssqlItem = " AND A.IdItem=" + Request["idItem"].ToString(); m_ssqlItem += " AND A.IdTipoServicio=" + Request["idTipoServicio"].ToString(); DateTime fecha = DateTime.Now.AddDays(1);// ..Parse(cldTurno.SelectedDate.ToShortDateString()); ISession m_session = NHibernateHttpModule.CurrentSession; string m_ssql = " FROM Agenda A WHERE A.Baja=0 " + m_ssqlItem; //AND A.IdTipoServicio=" + ddlTipoServicio.SelectedValue + //" AND (A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "' or A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "')" + //" AND A.FechaHasta>='" + fecha.ToString("yyyyMMdd") + "'" ; IQuery q = m_session.CreateQuery(m_ssql); List <CalendarioTurnos> resultadosList = new List <CalendarioTurnos>(); IList lista = q.List(); if (lista.Count > 0) { foreach (Agenda oAgenda in lista) { DateTime fechaDesde = oAgenda.FechaDesde; if (fechaDesde < fecha) { fechaDesde = fecha; } DateTime fechaHasta = oAgenda.FechaHasta; ICriteria crit = m_session.CreateCriteria(typeof(AgendaDia)); crit.Add(Expression.Eq("IdAgenda", oAgenda)); IList listaDias = crit.List(); if (listaDias.Count > 0) { foreach (AgendaDia oAgendaDia in listaDias) { DateTime fechaDesdeaux = fechaDesde; DateTime fechaHastaaux = fechaHasta; while (fechaDesdeaux <= fechaHastaaux) { int dia = (int)fechaDesdeaux.DayOfWeek; //bool result = false; if (dia == oAgendaDia.Dia) { int cantidadTurnosdados = int.Parse(CalcularTurnoDisponible(fechaDesdeaux)); int cantidadTurnos = oAgendaDia.LimiteTurnos; int cantidadTurnosDisponibles = cantidadTurnos - cantidadTurnosdados; if (cantidadTurnosDisponibles > 0) { CalendarioTurnos oCalendario = new CalendarioTurnos(); oCalendario.Fecha = fechaDesdeaux; oCalendario.CantidadTurnosDisponibles = cantidadTurnosDisponibles; oCalendario.Dia = Dia[dia]; resultadosList.Add(oCalendario); } } fechaDesdeaux = fechaDesdeaux.AddDays(1); } } } //else // result = false; } } // resultadosList = from CalendarioTurnos in resultadosList orderby CalendarioTurnos.Fecha ascending select CalendarioTurnos; resultadosList = (from n in resultadosList orderby GetDynamicSortProperty(n, "Fecha") ascending select n).ToList(); gv.DataSource = resultadosList; gv.DataBind(); //return result; }