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