コード例 #1
0
        // Busca los turnos libres para la fecha y horas indicadas en el control
        // y para el cliente seleccionado
        private void btnBuscarLibres_Click(object sender, EventArgs e)
        {
            int hI       = int.Parse(tiHoraITurnoLibre.Text.Split(':')[0]);
            int mI       = int.Parse(tiHoraITurnoLibre.Text.Split(':')[1]);
            int hF       = int.Parse(tiHoraFTurnoLibre.Text.Split(':')[0]);
            int mF       = int.Parse(tiHoraFTurnoLibre.Text.Split(':')[1]);
            int duracion = int.Parse(tiDuracion.Text);

            if (cmbClienteBuscarTurno.SelectedItem == null)
            {
                MessageBox.Show("Debe seleccionar algun cliente en el combo clientes");
                return;
            }
            long idCliente = ((Cliente)cmbClienteBuscarTurno.SelectedItem).Id;

            //DisponibilidadSemanal o = new DisponibilidadSemanal(true);
            TimeSpan horaInicial = new TimeSpan(hI, mI, 0);
            TimeSpan horaFinal   = new TimeSpan(hF, mF, 0);

            DateTime fechaI = new DateTime(dpDiaTurnosLibres.Value.Year,
                                           dpDiaTurnosLibres.Value.Month,
                                           dpDiaTurnosLibres.Value.Day, hI, mI, 0, 0);
            DateTime fechaF = new DateTime(dpDiaTurnosLibres.Value.Year,
                                           dpDiaTurnosLibres.Value.Month,
                                           dpDiaTurnosLibres.Value.Day, hF, mF, 0, 0);

            lstTurnosLibres.DataSource = null;
            lstTurnosLibres.DataSource = Recursos.ObtenerDisponibilidad(idCliente, fechaI, fechaF, duracion);
            return;
        }
コード例 #2
0
        /*Busca turnos para el cliente, fecha y horas seleccionada y lo regresa en formato json
         * Esto lo hace pidiendo los recursos disponibles para ese dia y pivoteando la tabla para tener
         * como clave el horario del turno y una lista de los id's disponibles para ese horario         */
        private void btnCalendarioDisponibilidadTest_Click(object sender, EventArgs e)
        {
            #region Lectura parametros de los campos y obtiene los recursos disponibles en ese horario
            int hI       = int.Parse(tiHoraITurnoLibre.Text.Split(':')[0]);
            int mI       = int.Parse(tiHoraITurnoLibre.Text.Split(':')[1]);
            int hF       = int.Parse(tiHoraFTurnoLibre.Text.Split(':')[0]);
            int mF       = int.Parse(tiHoraFTurnoLibre.Text.Split(':')[1]);
            int duracion = int.Parse(tiDuracion.Text);

            if (cmbClienteBuscarTurno.SelectedItem == null)
            {
                MessageBox.Show("Debe seleccionar algun cliente en el combo clientes");
                return;
            }
            long     idCliente   = ((Cliente)cmbClienteBuscarTurno.SelectedItem).Id;
            TimeSpan horaInicial = new TimeSpan(hI, mI, 0);
            TimeSpan horaFinal   = new TimeSpan(hF, mF, 0);

            DateTime fechaI = new DateTime(dpDiaTurnosLibres.Value.Year,
                                           dpDiaTurnosLibres.Value.Month,
                                           dpDiaTurnosLibres.Value.Day, hI, mI, 0, 0);
            DateTime fechaF = new DateTime(dpDiaTurnosLibres.Value.Year,
                                           dpDiaTurnosLibres.Value.Month,
                                           dpDiaTurnosLibres.Value.Day, hF, mF, 0, 0);
            List <TurnoLibre> lTL = Recursos.ObtenerDisponibilidad(idCliente, fechaI, fechaF, 60);
            #endregion

            List <Turnos.BO.disponibilidad> lResultado        = new List <disponibilidad>();
            Dictionary <long, int>          dicIDSecuenciales = new Dictionary <long, int>();
            int  idRecursoCalendario = 0;
            long idRecursoActual;
            idRecursoActual = lTL[0].Id;
            // Recorro todos los turnos libres que vienen en forma de una lista ordenada de NombreRecurso, Hora y si esta libre o no,
            // la transformo en una lista de horarios con un array de los id's que estan libres en ese horario
            // los id's tienen que ser comenzando con 0, 1, etc.
            foreach (TurnoLibre tl in lTL)
            {
                if (idRecursoActual == tl.Id)
                {
                    //Busco todos los recursos que estan libres para esa fecha/hora
                    var idRecursos = from o in lTL
                                     where o.Fecha == tl.Fecha && o.Libre
                                     select obtenerIDSecuencial(o.Id, ref dicIDSecuenciales);

                    lResultado.Add(new disponibilidad {
                        userId = idRecursos.ToList <int>(),
                        start  = tl.Fecha,
                        end    = tl.Fecha.AddMinutes(duracion),
                        free   = tl.Libre
                    }
                                   );
                }
                else
                {
                    idRecursoActual = tl.Id;
                    idRecursoCalendario++;
                }
            }
            //Transforma el resultado en un string jSon para que lo tome el calendario javascript

            /* { "start": new Date(year, month, day + 1, 08), "end": new Date(year, month, day + 1, 15), "free": true, userId: [0, 1, 2, 3] },
             *                  {"start": new Date(year, month, day+0, 08), "end": new Date(year, month, day+0, 18, 00), "free": true, userId: [0,1,2,3]},
             *                  {"start": new Date(year, month, day+1, 08), "end": new Date(year, month, day+1, 18, 00), "free": true, userId: [0,3]},
             *                  {"start": new Date(year, month, day+2, 14), "end": new Date(year, month, day+2, 18, 00), "free": true, userId: 1}
             *          ],*/
            StringBuilder jResultado = new StringBuilder();
            jResultado.Append("[");
            foreach (disponibilidad oHorario in lResultado)
            {
                string sIds = "";
                oHorario.userId.ForEach(x => sIds += x.ToString() + ",");
                sIds = sIds.Remove(sIds.Length - 1, 1);
                // Recordar que el nro de mes en Javascript comienza con 0!
                jResultado.Append("{");
                jResultado.AppendFormat("\"start\":new Date({0},{1},{2},{3},{4})", oHorario.start.Year, oHorario.start.Month - 1, oHorario.start.Day, oHorario.start.Hour, oHorario.start.Minute);
                jResultado.AppendFormat(",\"end\":new Date({0},{1},{2},{3},{4})", oHorario.end.Year, oHorario.end.Month - 1, oHorario.end.Day, oHorario.end.Hour, oHorario.end.Minute);
                jResultado.Append(",\"free\": true, userId: [" + sIds + "]");
                jResultado.Append("},");
            }
            jResultado.Remove(jResultado.Length - 1, 1);
            jResultado.Append("];");
            tiJSon.Text = jResultado.ToString();
        }