private DashboardItem createDasboardItemByUserPurchase(UserPurchase userPurchase) { var dashboardItem = new DashboardItem(); dashboardItem.Email = userPurchase.Email; dashboardItem.Name = userPurchase.Name; dashboardItem.Facility = userPurchase.FacilityName; dashboardItem.DateOfPurchase = userPurchase.DateOfPurchase; dashboardItem.UserRegistrationDate = userPurchase.UserRegistrationDate; dashboardItem.UserExpirationDate = userPurchase.UserExpirationDate; if (dashboardItem.UserExpirationDate > DateTime.Now) dashboardItem.status = PurchaseStatus.Active; else dashboardItem.status = PurchaseStatus.Expired; return dashboardItem; }
public ActionResult Index() { List<PurchasedItem> purchasedItems = GetStoredPurchasedItems(); if (purchasedItems == null) { return LogOutAndRedirectToLoginPage(); } //TODO: refactor this algorithm. List<DashboardItem> dasboardItems = new List<DashboardItem>(); List<UserPurchase> activatedItems = context.UserPurchases.Where(u => u.ActivatorsEmail == User.Identity.Name).ToList(); foreach (UserPurchase userPurchase in activatedItems) { var dashboardItem = createDasboardItemByUserPurchase(userPurchase); dasboardItems.Add(dashboardItem); } foreach (PurchasedItem purchasedItem in purchasedItems) { var activatedItem = activatedItems.Find(i => Math.Abs(i.DateOfPurchase.Subtract(purchasedItem.DateOfPurchase).TotalSeconds) < 1); if (activatedItem == null) { var dashboardItem = new DashboardItem(); dashboardItem.Email = purchasedItem.Email; dashboardItem.Name = purchasedItem.Name; dashboardItem.Facility = purchasedItem.Facility; dashboardItem.DateOfPurchase = purchasedItem.DateOfPurchase; dashboardItem.status = PurchaseStatus.ReadyForActivate; dasboardItems.Add(dashboardItem); } } DashboardModel dashboardModel = new DashboardModel(); dashboardModel.Items = dasboardItems.OrderBy(d => d.UserExpirationDate); dashboardModel.LastPurchase = HttpContext.Session["lastPurchase"] as UserPurchase; dashboardModel.LastPurchasePassword = HttpContext.Session["lastPurchasePassword"] as string; HttpContext.Session["lastPurchase"] = null; HttpContext.Session["lastPurchasePassword"] = null; return View(dashboardModel); }