Пример #1
0
        public async Task <ActionResult> Payments()
        {
            MemberViewModel vwMemberViewModel = new MemberViewModel(_uri);

            try
            {
                //set the member
                bool bHasSet = await vwMemberViewModel.SetClubAndMember(this.Request.HttpContext,
                                                                        _memberService);

                //set the clubinuse credit
                //_memberService.SetClubCredit(vwMemberViewModel.Member);
                if (TempData["errormessage"] != null)
                {
                    //update payment action failed
                    vwMemberViewModel.ErrorMessage = TempData["errormessage"].ToString();
                    if (TempData["credit"] != null)
                    {
                        //for their convenience display whatever form elements they already have filled out
                        AccountToCredit clubCredit = (AccountToCredit)TempData["credit"];
                        vwMemberViewModel.Member.ClubDefault.AccountToCredit.Add(clubCredit);
                    }
                }
                ViewData["Title"] = AppHelper.GetResource("PAYMENTS");
                return(View("Payments", vwMemberViewModel));
            }
            catch (Exception x)
            {
                //AppHelper.PublishError(x, vwMemberViewModel.ErrorMessage);
                TempData["errormessage"]       = x.Message;
                vwMemberViewModel.ErrorMessage = x.Message;
                return(View("Payments", vwMemberViewModel));
            }
        }
Пример #2
0
        public async Task <bool> SetClubCreditAsync(AccountToMember loggedInMember)
        {
            bool bHasSet = false;
            List <AccountToCredit> colCredits
                = await GetCreditsByClubAsync(loggedInMember.ClubDefault.PKId);

            if (colCredits != null)
            {
                //current design uses a one to one relation (one to many used in db for consistency)
                AccountToCredit clubCredit = colCredits.FirstOrDefault();
                if (clubCredit != null)
                {
                    if (loggedInMember.ClubDefault.AccountToCredit == null)
                    {
                        loggedInMember.ClubDefault.AccountToCredit = new List <AccountToCredit>();
                    }
                    loggedInMember.ClubDefault.AccountToCredit.Add(clubCredit);
                    bHasSet = true;
                }
            }
            return(bHasSet);
        }
Пример #3
0
        //update clubdefault.Credit
        public async Task <bool> UpdatePaymentHandlingAsync(AccountToMember loggedInMember,
                                                            string cardNumberHash, string salt)
        {
            bool bIsUpdated = false;

            if (loggedInMember.ClubDefault != null)
            {
                if (loggedInMember.ClubDefault.PKId != 0 &&
                    loggedInMember.ClubDefault.AccountToCredit != null)
                {
                    bool bNeedsInsert = false;
                    if (loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault().PKId == 0 ||
                        loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault().AccountId == 0)
                    {
                        bNeedsInsert = true;
                    }
                    if (!bNeedsInsert)
                    {
                        try
                        {
                            AccountToCredit existingCR =
                                await _dataContext.AccountToCredit.SingleOrDefaultAsync(x => x.PKId == loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault().PKId);

                            if (_dataContext.Entry(existingCR) != null)
                            {
                                //tell the tracker to change the state is unchanged
                                _dataContext.Entry(existingCR).State = EntityState.Unchanged;
                                //2.0.0 changes
                                //update the properties to the new values
                                var currentObjContext = _dataContext.Entry(existingCR);
                                var aToC = loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault();
                                var currentObjContent = new AccountToCredit(aToC);
                                //var existingCRProps = currentObjContext.Metadata.GetProperties();
                                //_dataContext.Entry(existingCR).CurrentValues.SetValues(loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault());
                                _dataContext.Entry(existingCR).State = EntityState.Modified;
                                //state is now modified and can be updated
                                await _dataContext.SaveChangesAsync();
                            }
                            bIsUpdated = true;
                        }
                        catch
                        {
                            throw;
                        }
                    }
                    else
                    {
                        AccountToCredit newAccountToCredit
                            = new AccountToCredit(loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault());
                        newAccountToCredit.AccountId      = loggedInMember.AccountId;
                        newAccountToCredit.Account        = null;
                        newAccountToCredit.CardFullNumber = cardNumberHash;
                        newAccountToCredit.CardNumberSalt = salt;
                        try
                        {
                            _dataContext.Entry(newAccountToCredit).State = EntityState.Added;
                            await _dataContext.SaveChangesAsync();

                            bIsUpdated = true;
                            loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault().PKId           = newAccountToCredit.PKId;
                            loggedInMember.ClubDefault.AccountToCredit.FirstOrDefault().CardNumberSalt = newAccountToCredit.CardNumberSalt;
                        }
                        catch
                        {
                            throw;
                        }
                    }
                }
            }
            return(bIsUpdated);
        }