Exemple #1
0
        public virtual APIResult <CardPointsCampaign> AddPoints(string numPoints, string campaignId, string customerId)
        {
            APIResult <CardPointsCampaign> res = new APIResult <CardPointsCampaign>();
            FidelityCustomer customer;

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

            FidelityCampaign campaign = new FidelityCampaign();

            campaign.Id = campaignId;
            if (customer != null)
            {
                APIResult <bool> resAdd = _sendService.SendAddPoints(settingsPart, customer, campaign, numPoints);
                if (!resAdd.success)
                {
                    res = new APIResult <CardPointsCampaign> {
                        success = false, data = null, message = resAdd.message
                    };
                }
                else
                {
                    APIResult <FidelityCustomer> resCust = _sendService.SendCustomerDetails(settingsPart, customer);
                    if (!resCust.success)
                    {
                        res = new APIResult <CardPointsCampaign> {
                            success = false, data = null, message = resCust.message
                        };
                    }
                    else
                    {
                        res.success = resAdd.success;
                        res.message = resAdd.message;
                        CardPointsCampaign data = new CardPointsCampaign()
                        {
                            idCampaign = campaignId,
                            idCustomer = customer.Id,
                            points     = resCust.data.PointsInCampaign[campaignId]
                        };
                        res.data = data;
                    }
                }
            }
            else
            {
                res = new APIResult <CardPointsCampaign> {
                    success = false, data = null, message = "The user is not configured to use " + GetProviderName()
                };
            }
            _workflowManager.TriggerEvent("AddFidelityPoints", null, () => new Dictionary <string, object> {
                { "result", res }
            });
            return(res);
        }
        public override IEnumerable <LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext)
        {
            APIResult <CardPointsCampaign> res  = (APIResult <CardPointsCampaign>)(workflowContext.Tokens["result"]);
            CardPointsCampaign             card = res.data;

            if (res.success)
            {
                workflowContext.SetState <string>("customerId", card.idCustomer);
                workflowContext.SetState <string>("campaignId", card.idCampaign);
                workflowContext.SetState <double>("points", card.points);
                yield return(T("Success"));
            }
            else
            {
                yield return(T("Error"));
            }
        }