private void schedulerControlPrenotazioni_CustomDrawDayViewAllDayArea(object sender, CustomDrawObjectEventArgs e) { AllDayAreaCell cell = (AllDayAreaCell)e.ObjectInfo; RisultatoCalendario ris = GestoreCalendario.GeneraRichiesta(cell.Interval.Start, m_ActiveControl.Ingresso.CodicePrevent); if (ris != null) { if (!string.IsNullOrEmpty(ris.InfoGiornata)) { if (cell.Selected) { e.Cache.FillRectangle(Brushes.LightCyan, e.Bounds); } else { e.Cache.FillRectangle(Brushes.Yellow, e.Bounds); } e.Cache.DrawString(ris.InfoGiornata, cell.Appearance.Font, Brushes.Black, e.Bounds, cell.Appearance.TextOptions.GetStringFormat()); cell.ToolTipText = String.Format("{0} : {1}", cell.Interval.Start.ToShortDateString(), ris.InfoGiornata); e.Handled = true; } } }
private void schedulerControlPrenotazioni_CustomDrawTimeCell(object sender, CustomDrawObjectEventArgs e) { SelectableIntervalViewInfo obj = e.ObjectInfo as DevExpress.XtraScheduler.Drawing.SelectableIntervalViewInfo; if (obj != null) { e.DrawDefault(); if (m_ActiveControl != null && m_ActiveControl.Ingresso.CodicePrevent > 0 && m_ActiveControl.Ingresso.Prenotazione != EnumPrenotazioneIngresso.NonGestita) { RisultatoCalendario ris = GestoreCalendario.GeneraRichiesta(obj.Interval.Start, m_ActiveControl.Ingresso.CodicePrevent); if (ris != null) { int numero = ris.PostiDisponibili; if (obj.Selected) { e.Graphics.DrawString(numero.ToString(), font, brush_white, e.Bounds); } else { e.Graphics.DrawString(numero.ToString(), font, brush_green, e.Bounds); } if (numero > 0) { // int massimo = Math.Max(numero, m_ActiveControl.Ingresso.CapacitaSlot(GestoreCalendario.TipoGS)); int massimo = Math.Max(numero, ris.MaxPostiDisponibili); e.Graphics.DrawLine(pen_green, e.Bounds.X + 1, e.Bounds.Y + 16, e.Bounds.X + e.Bounds.Width * numero / massimo - 1, e.Bounds.Y + 16); } } } e.Handled = true; } }
public void Init(DevExpress.Xpo.XPCollection xPCollection, DateTime inizio, string tipoGS) { if (ForzaturaPrevent) { return; } RisultatoCalendario risultato = GestoreCalendario.GeneraRichiesta(inizio, Ingresso.CodicePrevent); if (risultato == null) { return; } int ingressoCapacitaSlot = risultato.MaxPostiDisponibili; if (ingressoCapacitaSlot <= 0) { ingressoCapacitaSlot = NumeroPersone; } //int durataSlot = Ingresso.DurataSlot(tipoGS); int durataSlot = GestoreCalendario.GetTimeSpan(Ingresso.CodicePrevent); DateTime origine = inizio; int slot = NumeroPersone / ingressoCapacitaSlot; int resto = NumeroPersone - ingressoCapacitaSlot * slot; if (resto > 0) { slot++; } int media = NumeroPersone / slot; resto = NumeroPersone - media * slot; int persone = NumeroPersone; List <SingolaPrenotazione> ListaTemp = new List <SingolaPrenotazione>(); while (persone > 0) { while (Occupato(xPCollection, inizio, durataSlot) || risultato == null) { inizio += new TimeSpan(0, durataSlot, 0); risultato = GestoreCalendario.GeneraRichiesta(inizio, Ingresso.CodicePrevent); TimeSpan tempo = inizio - origine; if (tempo.TotalDays > 3) { return; } } int nump = media; if (persone >= media) { if (resto > 0 && risultato.MaxPostiDisponibili > media) { nump++; resto--; } } else { nump = resto; } SingolaPrenotazione pre = new SingolaPrenotazione(); pre.NumeroPersone = nump; pre.Orario = inizio; pre.OrarioFine = inizio + new TimeSpan(0, durataSlot, 0); pre.Descrizione = PrenotazioneComplessiva.RiferimentoGlobale; pre.OriginataPrevent = false; ListaTemp.Add(pre); persone -= nump; inizio += new TimeSpan(0, durataSlot, 0); risultato = GestoreCalendario.GeneraRichiesta(inizio, Ingresso.CodicePrevent); } if (persone == 0) { Prenotazioni = ListaTemp; } }