Пример #1
0
        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;
                }
            }
        }
Пример #2
0
        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;
            }
        }