public ActionResult Index(FormCollection collection) { List <HistoryItemModel> HistoryItems = new List <HistoryItemModel>(); Dictionary <int, CardAccount> CardAccounts = new Dictionary <int, CardAccount>(); RouteValueDictionary RouteValues = new RouteValueDictionary(); #region parsing List <string> cardIds = new List <string>(); if (collection["item.CardAccount.CardAccountID"] == null) { return(View("Index", (object)"Не найдена информация о платежных картах")); } cardIds = collection["item.CardAccount.CardAccountID"].Split(',').Where(id => id != "false").ToList(); if (cardIds.Any() == false) { return(View("Index", (object)"Не выбрана ни одна из карт")); } RouteValues.Add("item.CardAccount.CardAccountID", collection["item.CardAccount.CardAccountID"]); var dateFrom = collection["datepicker-from"]; var dateTo = collection["datepicker-to"]; DateTime DateFrom; DateTime DateTo; try { DateFrom = String.IsNullOrEmpty(dateFrom) ? DateTime.MinValue : DateTime.Parse(dateFrom); DateTo = String.IsNullOrEmpty(dateTo) ? DateTime.MaxValue : DateTime.Parse(dateTo); } catch (Exception ex) { return(View("Index", (object)ex.Message)); } RouteValues.Add("datepicker-from", collection["datepicker-from"]); RouteValues.Add("datepicker-to", collection["datepicker-to"]); var arbitraryPaymentsParam = collection["arbitrary_payments"]; var ssispPaymentsParam = collection["ssisp_payments"]; var mobilePaymentsParam = collection["mobile_payments"]; var transferPaymentsParam = collection["transfer_payments"]; if ((arbitraryPaymentsParam == null) && (ssispPaymentsParam == null) && (mobilePaymentsParam == null) && (transferPaymentsParam == null)) { return(View("Index", (object)"Ни один из типов платежей не выбран")); } RouteValues.Add("arbitrary_payments", collection["arbitrary_payments"]); RouteValues.Add("ssisp_payments", collection["ssisp_payments"]); RouteValues.Add("mobile_payments", collection["mobile_payments"]); RouteValues.Add("transfer_payments", collection["transfer_payments"]); #endregion parsing #region fill foreach (var cardId in cardIds) { var id = Int32.Parse(cardId); CardAccounts.Add(id, service.GetCardAccountById(id)); } if (arbitraryPaymentsParam != null) { foreach (var cardId in cardIds) { var payments = service.GetArbitraryTransactionsByCardId(Int32.Parse(cardId), DateFrom, DateTo); if (payments != null && payments.Any()) { foreach (var payment in payments) { HistoryItems.Add(new HistoryItemModel() { Amount = payment.Amount, CardNumber = CardAccountModule.ConvertCardNumberString(CardAccounts[payment.CardAccountID].CardNumber), Currency = service.GetBankAccountCurrencyShortString(CardAccounts[payment.CardAccountID].BankAccountID), Date = payment.Date, Recipient = payment.Recipient, TransactionId = payment.ArbitraryTransactionID, Type = payment.Type }); } } } } if (ssispPaymentsParam != null) { foreach (var cardId in cardIds) { var payments = service.GetSSISTransactionsByCardId(Int32.Parse(cardId), DateFrom, DateTo); if (payments != null && payments.Any()) { foreach (var payment in payments) { HistoryItems.Add(new HistoryItemModel() { Amount = payment.Amount, CardNumber = CardAccountModule.ConvertCardNumberString(CardAccounts[payment.CardAccountID].CardNumber), Currency = service.GetBankAccountCurrencyShortString(CardAccounts[payment.CardAccountID].BankAccountID), Date = payment.Date, Recipient = rep.SSISPayments.GetSingle(payment.SSISPaymentID).Name, TransactionId = payment.SSISTransactionID, Type = payment.Type }); } } } } if (mobilePaymentsParam != null) { foreach (var cardId in cardIds) { var payments = service.GetMobileTransactionsByCardId(Int32.Parse(cardId), DateFrom, DateTo); if (payments != null && payments.Any()) { foreach (var payment in payments) { HistoryItems.Add(new HistoryItemModel() { Amount = payment.Amount, CardNumber = CardAccountModule.ConvertCardNumberString(CardAccounts[payment.CardAccountID].CardNumber), Currency = service.GetBankAccountCurrencyShortString(CardAccounts[payment.CardAccountID].BankAccountID), Date = payment.Date, Recipient = payment.MobileProvider, TransactionId = payment.MobileTransactionID, Type = payment.Type }); } } } } if (transferPaymentsParam != null) { foreach (var cardId in cardIds) { var payments = service.GetTransferTransactionsByCardId(Int32.Parse(cardId), DateFrom, DateTo); if (payments != null && payments.Any()) { foreach (var payment in payments) { HistoryItems.Add(new HistoryItemModel() { Amount = payment.Amount, CardNumber = CardAccountModule.ConvertCardNumberString(CardAccounts[payment.CardAccountID].CardNumber), Currency = service.GetBankAccountCurrencyShortString(CardAccounts[payment.CardAccountID].BankAccountID), Date = payment.Date, Recipient = payment.Number, TransactionId = payment.TransferTransactionID, Type = payment.Type }); } } } } #endregion fill HistoryListModel model = new HistoryListModel() { BackRouteValues = RouteValues, Items = HistoryItems.OrderBy(x => x.Date).ToList() }; return(View("HistoryList", model)); }