Beispiel #1
0
        private List <CalendarEvent> CalendarPredictions()
        {
            var CalendarList = new List <CalendarEvent>();

            // Get predicted rates for the different room type
            var SprRoomPred   = RoomRatePredictions(7);
            var StdRoomPred   = RoomRatePredictions(8);
            var FamRoomPred   = RoomRatePredictions(9);
            var SuiteRoomPred = RoomRatePredictions(10);
            var DlxRoomPred   = RoomRatePredictions(11);

            // Get the predicted occupancy for the different room type
            var SprOccPred   = OccupancyPredictions(7);
            var StdOccPred   = OccupancyPredictions(8);
            var FamOccPred   = OccupancyPredictions(9);
            var SuiteOccPred = OccupancyPredictions(10);
            var DlxOccPred   = OccupancyPredictions(11);

            var PredictionList = new List <DailyPredictionModel>();

            foreach (var item in SprRoomPred)
            {
                // Store into database
                var pred  = new DailyPredictionModel();
                var modal = new CalendarEvent();

                pred.Date             = item.Item1;
                pred.SprRoomRate      = item.Item2;
                pred.SprOccupancy     = SprOccPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.StdRoomRate      = StdRoomPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.StdOccupancy     = StdOccPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.FamRoomRate      = FamRoomPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.FamOccupancy     = FamOccPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.SuiteRoomRate    = SuiteRoomPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.SuiteOccupancy   = SuiteOccPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.DlxRoomRate      = SuiteRoomPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.DlxOccupancy     = DlxOccPred.Where(i => i.Item1 == item.Item1).FirstOrDefault().Item2;
                pred.SelectedRoomRate = 1;
                pred.AdjSprRoomRate   = 0;
                pred.AdjStdRoomRate   = 0;
                pred.AdjFamRoomRate   = 0;
                pred.AdjSuiteRoomRate = 0;
                pred.AdjDlxRoomRate   = 0;

                PredictionList.Add(pred);

                // Calculate the ADR
                var totalOccupancy = pred.SprOccupancy + pred.StdOccupancy + pred.FamOccupancy + pred.SuiteOccupancy + pred.DlxOccupancy;
                var totalRevenue   = (pred.SprRoomRate * pred.SprOccupancy) + (pred.StdRoomRate * pred.StdOccupancy) +
                                     (pred.FamRoomRate * pred.FamOccupancy) + (pred.SuiteRoomRate * pred.SuiteOccupancy) +
                                     (pred.DlxRoomRate * pred.DlxOccupancy);
                var adr           = totalRevenue / totalOccupancy;
                var revpar        = totalRevenue / 71;
                var occupancyRate = totalOccupancy / 71;
                var percent       = Math.Round((adr - DEFAULT_ADR) / DEFAULT_ADR * 100, 0);

                modal.Date         = item.Item1;
                modal.Adr          = adr.ToString("N0");
                modal.RevPar       = revpar.ToString("N0");
                modal.Occupancy    = occupancyRate.ToString("#0.##%");
                modal.SelectedPlan = 1;

                if (adr > DEFAULT_ADR)
                {
                    modal.Type = "success";
                }
                else if (adr == DEFAULT_ADR)
                {
                    modal.Type = "warning";
                }
                else
                {
                    modal.Type = "danger";
                }

                if (percent < 0)
                {
                    modal.Percent = percent.ToString() + "%";
                }
                else
                {
                    modal.Percent = "+" + percent.ToString() + "%";
                }

                CalendarList.Add(modal);
            }
            // Add the list of new predictions into database
            repository.AddPredictions(PredictionList);
            return(CalendarList);
        }
Beispiel #2
0
 public void UpdatePredictions(DailyPredictionModel item)
 {
     context.Predictions.Update(item);
     context.SaveChanges();
 }