/// <summary> /// Executes the Remove card invocation. /// </summary> public async Task Execute() { try { SharedUserLogic sharedUserLogic = new SharedUserLogic(Context, CommerceOperationsFactory.UserOperations(Context)); SharedCardLogic sharedCardLogic = new SharedCardLogic(Context, CommerceOperationsFactory.CardOperations(Context)); RemoveCardConcluder removeCardConcluder = new RemoveCardConcluder(Context); User user = sharedUserLogic.RetrieveUser(); Context[Key.User] = user; if (user != null) { Card card = sharedCardLogic.RetrieveCard(); Context[Key.Card] = card; if (card != null) { if (card.GlobalUserId == user.GlobalId) { Context.Log.Verbose("Attempting to remove the card from all current partners."); RemoveCardInvoker removeCardInvoker = new RemoveCardInvoker(Context); await removeCardInvoker.Invoke(); } else { removeCardConcluder.Conclude(ResultCode.CardDoesNotBelongToUser); } } else { removeCardConcluder.Conclude(ResultCode.UnregisteredCard); } } else { removeCardConcluder.Conclude(ResultCode.UnexpectedUnregisteredUser); } } catch (Exception ex) { ((ResultSummary)Context[Key.ResultSummary]).SetResultCode(ResultCode.UnknownError); RestResponder.BuildAsynchronousResponse(Context, ex); } }
/// <summary> /// Executes the Claim Deal API invocation. /// </summary> public async Task Execute() { try { SharedUserLogic sharedUserLogic = new SharedUserLogic(Context, CommerceOperationsFactory.UserOperations(Context)); SharedCardLogic sharedCardLogic = new SharedCardLogic(Context, CommerceOperationsFactory.CardOperations(Context)); SharedDealLogic sharedDealLogic = new SharedDealLogic(Context, CommerceOperationsFactory.DealOperations(Context)); ClaimDealConcluder claimDealConcluder = new ClaimDealConcluder(Context); ResultCode extractionResult = ExtractClaimDealPayload(); if (extractionResult == ResultCode.Success) { Deal deal = sharedDealLogic.RetrieveDeal(); Context[Key.Deal] = deal; if (deal != null) { Context[Key.DealDiscountSummary] = deal.DiscountSummary; User user = sharedUserLogic.RetrieveUser(); Context[Key.User] = user; if (user != null) { Card card = sharedCardLogic.RetrieveCard(); Context[Key.Card] = card; if (card != null) { // If the deal and card have common ground, claim the deal for the card. if (MustClaim(deal, card) == true) { Context[Key.MerchantName] = deal.MerchantName; Context.Log.Verbose("Trying to claim the deal for the user with the appropriate partner."); ClaimDealInvoker claimDealInvoker = new ClaimDealInvoker(Context); await claimDealInvoker.Invoke(); } else { Context.Log.Verbose("It is not necessary to claim this deal for this card."); ((ResultSummary)Context[Key.ResultSummary]).SetResultCode(ResultCode.Success); RestResponder.BuildAsynchronousResponse(Context); } } else { claimDealConcluder.Conclude(ResultCode.UnregisteredCard); } } else { claimDealConcluder.Conclude(ResultCode.UnexpectedUnregisteredUser); } } else { claimDealConcluder.Conclude(ResultCode.UnactionableDealId); } } else { claimDealConcluder.Conclude(extractionResult); } } catch (Exception ex) { ((ResultSummary)Context[Key.ResultSummary]).SetResultCode(ResultCode.UnknownError); RestResponder.BuildAsynchronousResponse(Context, ex); } }