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);
        }