示例#1
0
        public virtual APIResult <FidelityReward> GiveReward(string rewardId, string campaignId, string customerId)
        {
            APIResult <FidelityReward> res = new APIResult <FidelityReward>();
            FidelityCustomer           customer;

            if (customerId == null)
            {
                customer = GetCustomerFromAuthenticatedUser();
            }
            else
            {
                customer = GetCustomerFromIdOrEmail(customerId);
            }

            if (customer != null)
            {
                FidelityReward reward = new FidelityReward();
                reward.Id = rewardId;
                FidelityCampaign campaign = new FidelityCampaign();
                campaign.Id = campaignId;
                APIResult <bool> resGive = _sendService.SendGiveReward(settingsPart, customer, reward, campaign);
                if (!resGive.success)
                {
                    res = new APIResult <FidelityReward> {
                        success = false, data = null, message = resGive.message
                    };
                }
                else
                {
                    APIResult <FidelityCampaign> resCamp = _sendService.SendCampaignData(settingsPart, campaign);
                    if (!resCamp.success)
                    {
                        res = new APIResult <FidelityReward> {
                            success = false, data = null, message = resCamp.message
                        };
                    }
                    else
                    {
                        res.message = resGive.message;
                        res.success = resGive.success;
                        res.data    = resCamp.data.Rewards.Where(r => r.Id.Equals(rewardId)).First();
                    }
                }
            }
            else
            {
                res = new APIResult <FidelityReward> {
                    success = false, data = null, message = "The user is not configured to use " + GetProviderName()
                };
            }
            _workflowManager.TriggerEvent("RedeemFidelityReward", null, () => new Dictionary <string, object> {
                { "result", res }
            });
            return(res);
        }