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