/// <summary>
        /// This method adds the purchased reward products to the customer extended group for this rewards program.
        /// </summary>
        protected void AddProductsToPurchasedExtendedGroup(IEnumerable <Product> rewardProducts)
        {
            var apiRequests = new List <ApiRequest>();

            foreach (var product in rewardProducts)
            {
                // Temporarily reset the quantity to one to ensure subtotal for the product is correct for the customer extended table
                var originalQuantity = product.Quantity;
                product.Quantity = 1;
                var customerExtendedRequest = new CreateCustomerExtendedRequest();
                if (product.ApplyDiscountType.Equals(DiscountType.NewProductsLaunchReward))
                {
                    customerExtendedRequest = new CreateCustomerExtendedRequest {
                        CustomerID = CustomerId, ExtendedGroupID = (int)CustomerExtendedGroup.NewProductsLaunchPurchase, Field1 = product.ItemCode, Field2 = DateTime.Now.ToString(CultureInfo.InvariantCulture), Field3 = product.Subtotal.ToString("c")
                    };
                }
                else if (product.ApplyDiscountType.Equals(DiscountType.ProductCredit))
                {
                    customerExtendedRequest = new CreateCustomerExtendedRequest {
                        CustomerID = CustomerId, ExtendedGroupID = (int)CustomerExtendedGroup.ProductCredit, Field1 = product.ItemCode, Field2 = DateTime.Now.ToString(CultureInfo.InvariantCulture), Field3 = product.Subtotal.ToString("c")
                    };
                }

                product.Quantity = originalQuantity;

                apiRequests.Add(customerExtendedRequest);
            }

            Api.ProcessTransaction(new TransactionalRequest {
                TransactionRequests = apiRequests.ToArray()
            });
        }
示例#2
0
        public static void ArchiveEb(int customerID, int duration, int ownerID)
        {
            var createCustomerExRequest = new CreateCustomerExtendedRequest
            {
                CustomerID      = ownerID,
                ExtendedGroupID = (int)CustomerExtendedGroup.EBPhaseReminderArchive,
                Field1          = DateTime.Now.ToString(),
                Field2          = customerID.ToString(), //customerID
                Field3          = duration.ToString(),   //duration
            };
            var api = Exigo.WebService();

            api.CreateCustomerExtended(createCustomerExRequest);
        }
示例#3
0
        /// <summary>
        /// This method adds the purchased reward products to the customer extended group for this rewards program.
        /// </summary>
        protected void AddProductsToPurchasedExtendedGroup(IEnumerable <Product> rewardProducts)
        {
            List <ApiRequest> apiRequests = new List <ApiRequest>();

            foreach (var product in rewardProducts)
            {
                // Temporarily reset the quantity to one to ensure subtotal for the product is correct for the customer extended table
                decimal originalQuantity = product.Quantity;
                product.Quantity = 1;

                var customerExtendedRequest = new CreateCustomerExtendedRequest {
                    CustomerID = CustomerId, ExtendedGroupID = (int)CustomerExtendedGroup.RecruitingRewards, Field1 = product.ItemCode, Field2 = DateTime.Now.ToString(CultureInfo.InvariantCulture), Field3 = 1.ToString(CultureInfo.InvariantCulture), Field4 = product.Discounts[0].AppliedAmount.ToString("c")
                };

                product.Quantity = originalQuantity;

                apiRequests.Add(customerExtendedRequest);
            }

            Api.ProcessTransaction(new TransactionalRequest {
                TransactionRequests = apiRequests.ToArray()
            });
        }
示例#4
0
 /// <remarks/>
 public void CreateCustomerExtendedAsync(CreateCustomerExtendedRequest CreateCustomerExtendedRequest, object userState) {
     if ((this.CreateCustomerExtendedOperationCompleted == null)) {
         this.CreateCustomerExtendedOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateCustomerExtendedOperationCompleted);
     }
     this.InvokeAsync("CreateCustomerExtended", new object[] {
                 CreateCustomerExtendedRequest}, this.CreateCustomerExtendedOperationCompleted, userState);
 }
示例#5
0
 /// <remarks/>
 public void CreateCustomerExtendedAsync(CreateCustomerExtendedRequest CreateCustomerExtendedRequest) {
     this.CreateCustomerExtendedAsync(CreateCustomerExtendedRequest, null);
 }
示例#6
0
        EventConfirmation IEventService.CreateEvent(Common.ModelsEx.Event.EventBooking eventBooking)
        {
            var confirmation             = new EventConfirmation();
            TransactionalResponse result = null;

            try
            {
                var requests = new List <ApiRequest>();

                // Need to create customer if new party customer
                if (eventBooking.Customer.CustomerID == 0)
                {
                    // TODO: gwb:20150111 - What is the default warehouse for a party customer?
                    var createCustomerRequest = new CreateCustomerRequest(eventBooking.Customer);

                    requests.Add(createCustomerRequest);
                }
                else
                {
                    throw new ApplicationException("Cannot call CreateEvent for an existing event.  Call EditEvent instead.");
                }

                var setCustomerSiteRequest = new SetCustomerSiteRequest(eventBooking.CustomerSite);
                requests.Add(setCustomerSiteRequest);

                var hostSpecial = RewardService.GetHostSpecialReward(eventBooking.ActualStartDate);
                var createCustomerExtendedRequest = new CreateCustomerExtendedRequest()
                {
                    CustomerID      = eventBooking.Customer.CustomerID,
                    ExtendedGroupID = (int)CustomerExtendedGroup.PartyDetails, // Party Extended Fields
                    Field1          = eventBooking.StartDate.ToString(CultureInfo.InvariantCulture),
                    Field2          = eventBooking.ActualStartDate.ToString(CultureInfo.InvariantCulture),
                    Field3          = eventBooking.CloseDate.ToString(CultureInfo.InvariantCulture),
                    Field4          = eventBooking.LockoutDate.ToString(CultureInfo.InvariantCulture),
                    Field5          = eventBooking.CreatorCustomerID.ToString(),
                    Field6          = eventBooking.HostCustomerID.ToString(),
                    Field8          = hostSpecial.ItemCode,
                    Field9          = hostSpecial.DiscountAmount.ToString(CultureInfo.InvariantCulture),
                    Field10         = string.Empty, // Reward Not Redeemed
                    Field11         = hostSpecial.SalesThreshold.ToString(CultureInfo.InvariantCulture),
                    Field12         = eventBooking.PartyDate.ToString(CultureInfo.InvariantCulture),
                    Field13         = eventBooking.PartyStartTime,
                    Field14         = eventBooking.PartyEndTime,
                    Field15         = eventBooking.TimeZone
                };
                requests.Add(createCustomerExtendedRequest);
                result = Api.ProcessTransaction(new TransactionalRequest
                {
                    TransactionRequests = requests.ToArray()
                });
            }
            catch (Exception ex)
            {
                if (Status.Success.Equals(confirmation.Result.Status))
                {
                    confirmation.Result.Errors.Add("Your event was created but an unexpected error was encountered: " + ex.Message);
                }
                else
                {
                    confirmation.Result.Errors.Add("There was an unexpected error while creating your event: " + ex.Message);
                }

                return(confirmation);
            }

            ProcessCreatePartyCustomerResponse(result, eventBooking, confirmation);
            // save new event entry into database to overcome delay
            try
            {
                using (var context = Exigo.Sql())
                {
                    string sqlProcedure  = string.Format("InsertNewCreatedEvent {0},{1},'{2}','{3}','{4}','{5}','{6}'", confirmation.CustomerID, eventBooking.CreatorCustomerID, eventBooking.Customer.FirstName, eventBooking.ActualStartDate.ToString(CultureInfo.InvariantCulture), eventBooking.StartDate.ToString(CultureInfo.InvariantCulture), eventBooking.CloseDate.ToString(CultureInfo.InvariantCulture), eventBooking.LockoutDate.ToString(CultureInfo.InvariantCulture));
                    bool   eventinserted = context.Query <bool>(sqlProcedure).FirstOrDefault();
                }
            }
            catch (Exception EX)
            {
            }

            return(confirmation);
        }