Exemplo n.º 1
0
        public override void Refresh()
        {
            if (this.DesignMode)
            {
                return;
            }
            this.Date         = Fwk.HelperFunctions.DateFunctions.GetStartDateTime(this.Date);
            _TimespamViewList = Get_ArrayOfTimes();


            TimespamView wTimespamView = null;

            if (AppointmentList != null)
            {
                //Recorrer todos los turnos a partir de Date
                foreach (AppointmentBE a in AppointmentList.Where <AppointmentBE>(p => DateFunctions.GetStartDateTime(p.Start.Value).Equals(this.Date) &&
                                                                                  !p.IsExceptional))

                {
                    TimeSpan t = a.TimeStart_timesp;
                    //Este cilo permite pintar Varios appointments como uno solo
                    //El caso se da cuando el usuario selecciona varios concecutivos y los asigna a un TURNO. Por lo tanto se crea un
                    //solo Appoiment en la bace de datos donde TimeStart_timesp y TimeEnd_timesp incluira todos los turnos seleccionados
                    while (true)
                    {
                        //Creo ej: 10:15 para buscarlo dentro de los TimesView de la Grilla
                        string wTimeStart = String.Concat(t.ToString("hh"), ":", t.ToString("mm"));
                        wTimespamView = _TimespamViewList.Where <TimespamView>(p => p.TimeString.Equals(wTimeStart)).FirstOrDefault <TimespamView>();

                        if (wTimespamView != null)
                        {
                            wTimespamView.Appointment = a;
                        }
                        t = t.Add(TimeSpan.FromMinutes(a.Duration.Value));
                        //Revisar que pasa si t > a.TimeEnd_timesp
                        if (t >= a.TimeEnd_timesp)
                        {
                            break;
                        }
                    }
                }
            }

            #region sobreturnos
            //Si existen sobreturnos agregarlos al la lista de timelines
            var sobreturnos = AppointmentList.Where <AppointmentBE>(p => p.IsExceptional);

            Insert_Sobreturnos(sobreturnos.ToList());
            #endregion

            _TimespamViewList.Sort(new TimeSpanComparer());
            //_TimespamViewList = _TimespamViewList.OrderBy(p => p.Time).ToList<TimespamView>();
            timespamViewBindingSource.DataSource = _TimespamViewList;


            gridControl2.RefreshDataSource();
            gridView2.RefreshData();
            base.Refresh();
        }