示例#1
0
        public static void ScheduleCalculate()
        {
            Globals.TaskList.Sort(TPC);
            DateTime StartMoment = new DateTime();

            StartMoment = DateTime.Now;
            DateTime WeekDayStart = DateTime.Now, WeekDayEnd = DateTime.Now;
            bool     checker;
            int      y, m, d, h, n, s;

            foreach (TaskObject element in Globals.TaskList)
            {
                backpoint :;
                switch (StartMoment.DayOfWeek)
                {
                case DayOfWeek.Monday :
                    WeekDayStart = Globals.MondayStartTime;
                    WeekDayEnd   = Globals.MondayEndTime;
                    break;

                case DayOfWeek.Tuesday:
                    WeekDayStart = Globals.TuesdayStartTime;
                    WeekDayEnd   = Globals.TuesdayEndTime;
                    break;

                case DayOfWeek.Wednesday:
                    WeekDayStart = Globals.WednesdayStartTime;
                    WeekDayEnd   = Globals.WednesdayEndTime;
                    break;

                case DayOfWeek.Thursday:
                    WeekDayStart = Globals.ThursdayStartTime;
                    WeekDayEnd   = Globals.ThursdayEndTime;
                    break;

                case DayOfWeek.Friday:
                    WeekDayStart = Globals.FridayStartTime;
                    WeekDayEnd   = Globals.FridayEndTime;
                    break;

                case DayOfWeek.Saturday:
                    WeekDayStart = Globals.SaturdayStartTime;
                    WeekDayEnd   = Globals.SaturdayEndTime;
                    break;

                case DayOfWeek.Sunday:
                    WeekDayStart = Globals.SundayStartTime;
                    WeekDayEnd   = Globals.SundayEndTime;
                    break;
                }

                checker = true;

                checker = StartMoment.TimeOfDay < Globals.WakeUpTime.TimeOfDay;

                if (checker)
                {
                    //StartMoment.AddHours(Globals.WakeUpTime.Hour - StartMoment.Hour);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day;
                    h           = Globals.WakeUpTime.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                }

                checker = StartMoment.AddHours(element.EstimatedTime).TimeOfDay > WeekDayStart.TimeOfDay && StartMoment.TimeOfDay < WeekDayEnd.TimeOfDay;

                if (checker)
                {
                    //StartMoment.AddHours(-StartMoment.Hour + WeekDayEnd.Hour);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day;
                    h           = WeekDayEnd.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                }

                checker = StartMoment.AddHours(element.EstimatedTime).TimeOfDay < Globals.BedTime.TimeOfDay;

                if (checker)
                {
                    element.StartDate = StartMoment;
                    element.EndDate   = element.StartDate.AddHours(element.EstimatedTime);

                    y = element.EndDate.Year;
                    m = element.EndDate.Month;
                    d = element.EndDate.Day;
                    h = element.EndDate.Hour + 1;
                    n = element.EndDate.Minute;
                    s = element.EndDate.Second;

                    StartMoment = new DateTime(y, m, d, h, n, s);
                }
                else
                {
                    //StartMoment.AddHours(Globals.WakeUpTime.Hour-StartMoment.Hour);
                    //StartMoment.AddMinutes(-StartMoment.Minute);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day + 1;
                    h           = Globals.WakeUpTime.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                    goto backpoint;
                }
            }
        }
        private void PrijsBerekening()
        {
            double btwPercentage = 0.06;

            if (Arrengement == Arrengement.Wellness)
            {
                VastePrijs = (double)Limousine.WellnessPrijs;
                TotaalMetKortingExclusiefBtw = (double)Limousine.WellnessPrijs;
            }
            else if (Arrengement == Arrengement.Wedding)
            {
                //maximum aantal uren controle nog toevoegen.
                OverUurPrijs  = Math.Round(Limousine.EersteUurPrijs * 0.65 / 5) * 5;
                AantalOverUur = AantalUur - 7;
                TotaalMetKortingExclusiefBtw = AantalOverUur * OverUurPrijs;
                //TotaalExclusiefBtw = WeddingExtraUrenPrijsBerekening(AantalUur, Limousine);

                VastePrijs = (double)Limousine.WeddingPrijs;
                TotaalMetKortingExclusiefBtw += VastePrijs;
            }
            else if (Arrengement == Arrengement.NightLife)
            {
                NachtUurPrijs  = Math.Round(Limousine.EersteUurPrijs * 1.4 / 5) * 5;
                AantalNachtUur = AantalUur - 7;
                TotaalMetKortingExclusiefBtw = AantalNachtUur * NachtUurPrijs;

                VastePrijs = (double)Limousine.NightlifePrijs;
                TotaalMetKortingExclusiefBtw += VastePrijs;
            }
            else if (Arrengement == Arrengement.Business || Arrengement == Arrengement.Airport)
            {
                EersteUurPrijs  = Limousine.EersteUurPrijs;
                AantalEersteUur = 1;
                TotaalMetKortingExclusiefBtw = EersteUurPrijs * AantalEersteUur;

                DateTime eindMoment = StartMoment.AddHours(AantalUur);

                //geen nachturen (BUITEN)
                if (StartMoment.Hour < 22 && StartMoment.Hour >= 7 && AantalUur < 22 - StartMoment.Hour)
                {
                    AantalStandaardUur = AantalUur - 1;
                }
                //Enkel nachturen (BINNEN)
                else if (StartMoment.Hour >= 22 && (eindMoment.Hour < 7 || eindMoment.Day == StartMoment.Day))
                {
                    AantalNachtUur = AantalUur - 1;
                }
                //begint voor de nachturen
                else if (StartMoment.Hour < 22 && StartMoment.Hour >= 7)
                {
                    //loopt niet door tot de volgende ochtend
                    if (eindMoment.Hour < 7 || eindMoment.Day == StartMoment.Day)
                    {
                        AantalStandaardUur = 22 - StartMoment.Hour - 1;
                        AantalNachtUur     = AantalUur - 1 - AantalStandaardUur;
                    }
                    //loopt wel door tot de volgende ochtend
                    else
                    {
                        //begint ervoor, loopt door tot na => maximaal aantal nachturen
                        AantalNachtUur     = 9;
                        AantalStandaardUur = AantalUur - 1 - AantalNachtUur;
                    }
                }
                //begint in de nachturen, en loopt door tot erna
                else
                {
                    AantalStandaardUur = eindMoment.Hour - 7;
                    AantalNachtUur     = AantalUur - 1 - AantalStandaardUur;
                }
                StandaarUurPrijs              = Math.Round((Limousine.EersteUurPrijs * 0.65) / 5) * 5;
                NachtUurPrijs                 = Math.Round((Limousine.EersteUurPrijs * 1.4) / 5) * 5;
                TotaalMetKortingExclusiefBtw += AantalStandaardUur * StandaarUurPrijs;
                TotaalMetKortingExclusiefBtw += AantalNachtUur * NachtUurPrijs;
            }
            else
            {
                throw new NotImplementedException("New Arrengement is not properly implemented.");
            }
            TotaalMetKortingExclusiefBtw = Math.Round((TotaalMetKortingExclusiefBtw * (1 - (AangerekendeKorting / 100))) * 100) / 100;
            BtwBedrag       = Math.Round((TotaalMetKortingExclusiefBtw * btwPercentage) * 100) / 100;
            TotaalTeBetalen = (TotaalMetKortingExclusiefBtw + BtwBedrag);
        }