コード例 #1
0
        /// <summary>
        /// Approves the request.
        /// </summary>
        /// <param name="adminMember">The admin member</param>
        /// <returns>The message</returns>
        public async Task <string> Approve(FamilyMember adminMember)
        {
            var responseMessage        = string.Empty;
            var currentApprovalRequest = _smsApprovalHistory.GetRecentApprovalRequest(adminMember.Id);

            if (currentApprovalRequest == null)
            {
                return(string.Empty);
            }

            switch (currentApprovalRequest.ApprovalType)
            {
            case ApprovalType.GiftPurchase:
                if (currentApprovalRequest.PurchasedGiftCardID.HasValue)
                {
                    await _spendService.ApprovePurchaseGiftCard(adminMember, currentApprovalRequest.PurchasedGiftCardID.Value);

                    responseMessage = "Ok, consider it done.";
                }
                break;

            case ApprovalType.StockPurchase:
                if (currentApprovalRequest.StockPurchaseRequestID.HasValue)
                {
                    await _saveService.ApproveStockPurchase(adminMember, currentApprovalRequest.StockPurchaseRequestID.Value);

                    responseMessage = "Ok, great. Check your inbox to redeem the stock!";
                }
                break;

            case ApprovalType.CharityDonation:
                if (currentApprovalRequest.DonationID.HasValue)
                {
                    var approvedDonation = _charityService.ApproveDonation(adminMember, currentApprovalRequest.DonationID.Value);
                    responseMessage = $"Ok, great. We have transfered $ {approvedDonation.Amount:N2} back into your account in 1-2 days so you can donate: {approvedDonation.Charity.CharityUrl}";
                }
                break;

            case ApprovalType.CashOut:
                if (currentApprovalRequest.CashOutID.HasValue)
                {
                    _spendService.ApproveCashOut(adminMember, currentApprovalRequest.CashOutID.Value);
                    responseMessage = "OK, consider it done.";
                }
                break;

            case ApprovalType.ChorePayment:
                responseMessage = ApproveChores(adminMember);
                break;
            }
            _smsApprovalHistory.MarkAsNotActive(currentApprovalRequest.Id);
            return(responseMessage);
        }