public ActionResult DeleteConfirmed(int id)
        {
            WeeklyTotal weeklyTotal = db.WeeklyTotals.Find(id);

            db.WeeklyTotals.Remove(weeklyTotal);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "TimeSheetId,EmployeeId,RegularMinutesTotal,OvertimeMinutesTotal,AnnualLeaveMinutes,SickLeaveMinutes,OtherLeaveMinutes,WeekStarting,ShopId")] WeeklyTotal weeklyTotal)
 {
     if (ModelState.IsValid)
     {
         db.Entry(weeklyTotal).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "EmployeeName", weeklyTotal.EmployeeId);
     return(View(weeklyTotal));
 }
        // GET: WeeklyTotals/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            WeeklyTotal weeklyTotal = db.WeeklyTotals.Find(id);

            if (weeklyTotal == null)
            {
                return(HttpNotFound());
            }
            return(View(weeklyTotal));
        }
        // GET: WeeklyTotals/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            WeeklyTotal weeklyTotal = db.WeeklyTotals.Find(id);

            if (weeklyTotal == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "EmployeeName", weeklyTotal.EmployeeId);
            return(View(weeklyTotal));
        }
Exemplo n.º 5
0
        public async Task CalculateStatistics()
        {
            // todo loop all users.
            var allUsersQuery = DocumentDbBase.DocumentStore.GetItems <ApplicationUser>(x => x.Type == DocumentDbType.User);
            var allUsers      = allUsersQuery.ToList();

            foreach (var applicationUser in allUsers)
            {
                //start with a clean slate for each user
                applicationUser.Statistics = new Statistics();

                var userOrderHistoriesQuery = DocumentDbBase.DocumentStore.GetItems <UserOrderHistory>(x => x.UserId == applicationUser.UserId && x.Type == DocumentDbType.UserHistory);
                var userOrderHistories      = userOrderHistoriesQuery.ToList();

                foreach (var userOrderHistory in userOrderHistories)
                {
                    var monthlyTotal = applicationUser.Statistics.MonthlyTotals.FirstOrDefault(x => x.MonthDate == x.ParseMonth(userOrderHistory.OrderTime));
                    if (monthlyTotal == null)
                    {
                        monthlyTotal = new MonthlyTotal(userOrderHistory.OrderTime);
                        applicationUser.Statistics.MonthlyTotals.Add(monthlyTotal);
                    }

                    var yearlyTotal = applicationUser.Statistics.YearlyTotals.FirstOrDefault(x => x.YearDate == x.ParseYear(userOrderHistory.OrderTime));
                    if (yearlyTotal == null)
                    {
                        yearlyTotal = new YearlyTotal(userOrderHistory.OrderTime);
                        applicationUser.Statistics.YearlyTotals.Add(yearlyTotal);
                    }

                    var weeklyTotal = applicationUser.Statistics.WeeklyTotals.FirstOrDefault(x => x.WeekDate == x.ParseWeek(userOrderHistory.OrderTime));
                    if (weeklyTotal == null)
                    {
                        weeklyTotal = new WeeklyTotal(userOrderHistory.OrderTime);
                        applicationUser.Statistics.WeeklyTotals.Add(weeklyTotal);
                    }

                    var dailyTotal = applicationUser.Statistics.DayTotals.FirstOrDefault(x => x.DayDate == x.ParseDay(userOrderHistory.OrderTime));
                    if (dailyTotal == null)
                    {
                        dailyTotal = new DayTotal(userOrderHistory.OrderTime);
                        applicationUser.Statistics.DayTotals.Add(dailyTotal);
                    }

                    foreach (var entry in userOrderHistory.Entries)
                    {
                        if (_pastaEntriesList.Contains(entry.Id))
                        {
                            yearlyTotal.PastaOrderCount += 1;
                        }

                        if (_healtyEntriesList.Contains(entry.Id))
                        {
                            weeklyTotal.HealthyOrderCount += 1;
                        }

                        yearlyTotal.OrderCount  += 1;
                        yearlyTotal.Amount      += entry.Price;
                        weeklyTotal.OrderCount  += 1;
                        weeklyTotal.Amount      += entry.Price;
                        monthlyTotal.OrderCount += 1;
                        monthlyTotal.Amount     += entry.Price;
                        dailyTotal.Amount       += entry.Price;
                        dailyTotal.OrderCount   += 1;

                        // calculate badges
                        DateTime orderTime = DateTime.Parse("01/01/2001 10:00:00");
                        if (userOrderHistory.OrderTime < DateTime.Parse("12/06/2017 10:00:00"))
                        {
                            orderTime = DateTime.Parse("01/01/2001 9:00:00");
                        }
                        BadgeService.ExtractOrderBadges(applicationUser, userOrderHistory, orderTime);
                    }

                    applicationUser.Statistics.AppTotalSpend += userOrderHistory.FinalPrice;

                    await DocumentDbBase.DocumentStore.UpsertDocument(userOrderHistory);
                }

                var userPrepaysQuery = DocumentDbBase.DocumentStore.GetItems <UserBalanceAudit>(x => x.UserId == applicationUser.UserId && x.Type == DocumentDbType.UserBalanceAudit);
                var userPrepays      = userPrepaysQuery.ToList();

                foreach (var prepay in userPrepays)
                {
                    foreach (var audit in prepay.Audits)
                    {
                        // there might be a difference in prepayedTotal as in first versions this was not been audited.
                        applicationUser.Statistics.PrepayedTotal += audit.Amount;
                    }
                }

                // remove historical data
                var daysToDelete = applicationUser.Statistics.DayTotals.Where(x => x.DayDate != x.ParseDay(DateTime.UtcNow)).ToList();
                foreach (var dayToDelete in daysToDelete)
                {
                    applicationUser.Statistics.DayTotals.Remove(dayToDelete);
                }

                var weeksToDelete = applicationUser.Statistics.WeeklyTotals.Where(x => x.WeekDate != x.ParseWeek(DateTime.UtcNow)).ToList();
                foreach (var weekToDelete in weeksToDelete)
                {
                    applicationUser.Statistics.WeeklyTotals.Remove(weekToDelete);
                }

                var monthsToDelete = applicationUser.Statistics.MonthlyTotals.Where(x => x.MonthDate != x.ParseMonth(DateTime.UtcNow)).ToList();
                foreach (var monthToDelete in monthsToDelete)
                {
                    applicationUser.Statistics.MonthlyTotals.Remove(monthToDelete);
                }

                var yearsToDelete = applicationUser.Statistics.YearlyTotals.Where(x => x.YearDate != x.ParseYear(DateTime.UtcNow)).ToList();
                foreach (var yearToDelete in yearsToDelete)
                {
                    applicationUser.Statistics.YearlyTotals.Remove(yearToDelete);
                }

                // save document
                await DocumentDbBase.DocumentStore.UpsertDocument(applicationUser);
            }
        }
Exemplo n.º 6
0
        private void CalculateStatistics(ApplicationUser applicationUser, Domain.Entities.DocumentDb.UserOrderHistory userOrderHistory)
        {
            if (!userOrderHistory.StatisticsProcessed)
            {
                var monthlyTotal =
                    applicationUser.Statistics.MonthlyTotals.FirstOrDefault(x =>
                                                                            x.MonthDate == x.ParseMonth(userOrderHistory.OrderTime));
                if (monthlyTotal == null)
                {
                    monthlyTotal = new MonthlyTotal(userOrderHistory.OrderTime);
                    applicationUser.Statistics.MonthlyTotals.Add(monthlyTotal);
                }

                var yearlyTotal =
                    applicationUser.Statistics.YearlyTotals.FirstOrDefault(x =>
                                                                           x.YearDate == x.ParseYear(userOrderHistory.OrderTime));
                if (yearlyTotal == null)
                {
                    yearlyTotal = new YearlyTotal(userOrderHistory.OrderTime);
                    applicationUser.Statistics.YearlyTotals.Add(yearlyTotal);
                }

                var weeklyTotal =
                    applicationUser.Statistics.WeeklyTotals.FirstOrDefault(x =>
                                                                           x.WeekDate == x.ParseWeek(userOrderHistory.OrderTime));
                if (weeklyTotal == null)
                {
                    weeklyTotal = new WeeklyTotal(userOrderHistory.OrderTime);
                    applicationUser.Statistics.WeeklyTotals.Add(weeklyTotal);
                }

                var dailyTotal =
                    applicationUser.Statistics.DayTotals.FirstOrDefault(x =>
                                                                        x.DayDate == x.ParseDay(userOrderHistory.OrderTime));
                if (dailyTotal == null)
                {
                    dailyTotal = new DayTotal(userOrderHistory.OrderTime);
                    applicationUser.Statistics.DayTotals.Add(dailyTotal);
                }

                foreach (var entry in userOrderHistory.Entries)
                {
                    if (entry.Pasta)
                    {
                        yearlyTotal.PastaOrderCount += 1;
                    }
                    if (entry.Healthy)
                    {
                        weeklyTotal.HealthyOrderCount += 1;
                    }

                    yearlyTotal.OrderCount  += 1;
                    yearlyTotal.Amount      += entry.FinalPrice;
                    weeklyTotal.OrderCount  += 1;
                    weeklyTotal.Amount      += entry.FinalPrice;
                    monthlyTotal.OrderCount += 1;
                    monthlyTotal.Amount     += entry.FinalPrice;
                    dailyTotal.Amount       += entry.FinalPrice;
                    dailyTotal.OrderCount   += 1;
                }

                applicationUser.Statistics.AppTotalSpend += userOrderHistory.FinalPrice;
                userOrderHistory.StatisticsProcessed      = true;

                // cleanup old data
                var daysToDelete = applicationUser.Statistics.DayTotals.Where(x => x.DayDate != x.ParseDay(DateTime.UtcNow)).ToList();
                foreach (var dayToDelete in daysToDelete)
                {
                    applicationUser.Statistics.DayTotals.Remove(dayToDelete);
                }

                var weeksToDelete = applicationUser.Statistics.WeeklyTotals.Where(x => x.WeekDate != x.ParseWeek(DateTime.UtcNow)).ToList();
                foreach (var weekToDelete in weeksToDelete)
                {
                    applicationUser.Statistics.WeeklyTotals.Remove(weekToDelete);
                }

                var monthsToDelete = applicationUser.Statistics.MonthlyTotals.Where(x => x.MonthDate != x.ParseMonth(DateTime.UtcNow)).ToList();
                foreach (var monthToDelete in monthsToDelete)
                {
                    applicationUser.Statistics.MonthlyTotals.Remove(monthToDelete);
                }

                var yearsToDelete = applicationUser.Statistics.YearlyTotals.Where(x => x.YearDate != x.ParseYear(DateTime.UtcNow)).ToList();
                foreach (var yearToDelete in yearsToDelete)
                {
                    applicationUser.Statistics.YearlyTotals.Remove(yearToDelete);
                }
            }
        }