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