Пример #1
0
        /// <summary>
        /// Binds the profile.
        /// </summary>
        /// <param name="profileId">The profile id.</param>
        protected void BindGivingProfile(int profileId)
        {
            DateTime currentDate    = DateTimeOffset.Now.DateTime;
            var      accountService = new FinancialAccountService();
            var      activeAccounts = accountService.Queryable().Where(f => f.IsActive &&
                                                                       (f.StartDate == null || f.StartDate <= currentDate) &&
                                                                       (f.EndDate == null || f.EndDate <= currentDate) &&
                                                                       f.PublicName != null && f.PublicName != "");
            var accountGuids = GetAttributeValues("DefaultAccounts").Select(Guid.Parse).ToList();
            var scheduledTransactionService = new FinancialScheduledTransactionService();
            var transactionList             = new Dictionary <FinancialAccount, decimal>();
            FinancialScheduledTransaction scheduledTransaction;

            if (profileId != 0 && scheduledTransactionService.TryGet(profileId, out scheduledTransaction))
            {   // Retrieve Transaction
                btnFrequency.SelectedValue = scheduledTransaction.TransactionFrequencyValue.Id.ToString();
                divFrequency.Visible       = true;
                dtpStartDate.SelectedDate  = scheduledTransaction.StartDate;
                divRecurrence.Visible      = true;
                divLimitGifts.Visible      = true;

                if (scheduledTransaction.NumberOfPayments != null)
                {
                    chkLimitGifts.Checked  = true;
                    txtLimitNumber.Text    = scheduledTransaction.NumberOfPayments.ToString();
                    divLimitNumber.Visible = true;
                }

                foreach (var details in scheduledTransaction.ScheduledTransactionDetails)
                {
                    transactionList.Add(details.Account, details.Amount);
                }
            }
            else
            {   // New Transaction
                IQueryable <FinancialAccount> selectedAccounts = activeAccounts;

                if (accountGuids.Any())
                {
                    selectedAccounts = selectedAccounts.Where(a => accountGuids.Contains(a.Guid));
                }

                var campusId = btnCampusList.SelectedValueAsInt();
                selectedAccounts = selectedAccounts.Where(f => f.CampusId == campusId ||
                                                          (f.CampusId == null && f.ChildAccounts.Count() == 0));

                foreach (var account in selectedAccounts)
                {
                    transactionList.Add(account, 0M);
                }
            }

            if (activeAccounts.Count() > transactionList.Count() && Convert.ToBoolean(GetAttributeValue("ShowAdditionalAccounts")))
            {
                var unselectedAccounts = activeAccounts.Where(a => !accountGuids.Contains(a.Guid)).ToList();

                if (unselectedAccounts.Any())
                {
                    btnAddAccount.DataTextField  = "PublicName";
                    btnAddAccount.DataValueField = "Id";
                    btnAddAccount.DataSource     = unselectedAccounts.ToList();
                    btnAddAccount.DataBind();
                }
            }
            else
            {
                divAddAccount.Visible = false;
            }

            Session["CachedAmounts"]   = transactionList;
            Session["CachedProfileId"] = profileId;
            rptAccountList.DataSource  = transactionList;
            rptAccountList.DataBind();
            spnTotal.InnerText = transactionList.Sum(d => d.Value).ToString("f2");
        }