コード例 #1
0
        public async Task <IActionResult> Index(string sortOrder    = null, string currentFilter = null,
                                                string searchString = null, int?page             = null)
        {
            ViewData["CurrentSort"]   = sortOrder;
            ViewData["SortValidFrom"] = string.IsNullOrEmpty(sortOrder) ? "validFrom_desc" : "";
            ViewData["SortType"]      = sortOrder == "type" ? "type_desc" : "type";
            ViewData["SortPayment"]   = sortOrder == "payment" ? "payment_desc" : "payment";
            ViewData["SortAccountId"] = sortOrder == "accountId" ? "accountId_desc" : "accountId";
            ViewData["SortValidTo"]   = string.IsNullOrEmpty(sortOrder) ? "validTo_desc" : "";
            ViewData["SortStatus"]    = sortOrder == "status" ? "status_desc" : "status";
            insurances.SortOrder      = sortOrder != null && sortOrder.EndsWith("_desc")
                ? SortOrder.Descending
                : SortOrder.Ascending;
            insurances.SortFunction = getSortFunction(sortOrder);
            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }
            ViewData["CurrentFilter"] = searchString;
            insurances.SearchString   = searchString;
            insurances.PageIndex      = page ?? 1;

            var loggedInUser = await userManager.GetUserAsync(HttpContext.User);

            if (loggedInUser == null)
            {
                return(View());
            }
            var bankAccounts = await accounts.LoadAccountsForUser(loggedInUser.Id);

            var           bankAccountsViewsList = new AccountsViewsList(bankAccounts);
            List <string> bankAccountIds        = new List <string>();

            foreach (var account in bankAccountsViewsList)
            {
                bankAccountIds.Add(account.ID);
            }
            var insuranceList =
                await insurances.LoadInsurancesForUser(bankAccountIds);

            var insurancesViewsList = new InsuranceViewsList(insuranceList);

            await checkForInsuranceExpire(insurancesViewsList);

            return(View(insurancesViewsList));
        }
コード例 #2
0
        private async Task checkForInsuranceExpire(InsuranceViewsList insurancesViewsList)
        {
            foreach (var insurance in insurancesViewsList)
            {
                var daysToExpire = (int)Math.Ceiling(((insurance.ValidTo ?? DateTime.MaxValue) - DateTime.Now)
                                                     .TotalDays);
                if (daysToExpire < 0)
                {
                    insurance.Status = Status.Inactive.ToString();
                    var insur = await insurances.GetObject(insurance.ID);

                    insur.Data.Status = insurance.Status;
                    await insurances.UpdateObject(insur);

                    continue;
                }
                if (daysToExpire < 30 && insurance.Status == "Active")
                {
                    insurance.Status = $"Active (expires in {daysToExpire} days)";
                }
            }
        }