public void CreateCustomerSite(CustomerSite CustomerSite)
        {
            var request = new SetCustomerSiteRequest();

            request.CustomerID = CustomerSite.CustomerID;
            request.WebAlias   = CustomerSite.WebAlias;
            request.FirstName  = CustomerSite.FirstName;
            request.LastName   = CustomerSite.LastName;
            request.Company    = CustomerSite.Company;
            request.Email      = CustomerSite.Email;
            request.Phone      = CustomerSite.Phone;
            request.Phone2     = CustomerSite.Phone2;
            request.Fax        = CustomerSite.Fax;
            request.Notes1     = CustomerSite.Notes1;
            request.Notes2     = CustomerSite.Notes2;
            request.Notes3     = CustomerSite.Notes3;
            request.Notes4     = CustomerSite.Notes4;
            if (CustomerSite.Address != null)
            {
                request.Address1 = CustomerSite.Address.Address1;
                request.Address2 = CustomerSite.Address.Address2;
                request.City     = CustomerSite.Address.City;
                request.State    = CustomerSite.Address.State;
                request.Zip      = CustomerSite.Address.Zip;
                request.Country  = CustomerSite.Address.Country;
            }

            var response = GetContext().SetCustomerSite(request);
        }
        public void DeleteCustomerSite(int CustomerID)
        {
            var request = new SetCustomerSiteRequest();

            request.CustomerID = CustomerID;
            request.WebAlias   = "Deleted-" + DateTime.Now.ToString("yyyyMMddhhmmssfff");

            var response = GetContext().SetCustomerSite(request);
        }
        public void UpdateCustomerSite(CustomerSite CustomerSite)
        {
            // First, get the existing customer site.
            var existingCustomerSite = GetContext().GetCustomerSite(new GetCustomerSiteRequest
            {
                CustomerID = CustomerSite.CustomerID
            });

            if (existingCustomerSite == null)
            {
                existingCustomerSite = new GetCustomerSiteResponse();
            }


            // Now, save the information.
            var request = new SetCustomerSiteRequest();

            request.CustomerID = CustomerSite.CustomerID;
            request.WebAlias   = CustomerSite.WebAlias ?? existingCustomerSite.WebAlias;
            request.FirstName  = CustomerSite.FirstName ?? existingCustomerSite.FirstName;
            request.LastName   = CustomerSite.LastName ?? existingCustomerSite.LastName;
            request.Company    = CustomerSite.Company ?? existingCustomerSite.Company;
            request.Email      = CustomerSite.Email ?? existingCustomerSite.Email;
            request.Phone      = CustomerSite.Phone ?? existingCustomerSite.Phone;
            request.Phone2     = CustomerSite.Phone2 ?? existingCustomerSite.Phone;
            request.Fax        = CustomerSite.Fax ?? existingCustomerSite.Fax;
            request.Notes1     = CustomerSite.Notes1 ?? existingCustomerSite.Notes1;
            request.Notes2     = CustomerSite.Notes2 ?? existingCustomerSite.Notes2;
            request.Notes3     = CustomerSite.Notes3 ?? existingCustomerSite.Notes3;
            request.Notes4     = CustomerSite.Notes4 ?? existingCustomerSite.Notes4;
            request.Address1   = CustomerSite.Address.Address1 ?? existingCustomerSite.Address1;
            request.Address2   = CustomerSite.Address.Address2 ?? existingCustomerSite.Address2;
            request.City       = CustomerSite.Address.City ?? existingCustomerSite.City;
            request.State      = CustomerSite.Address.State ?? existingCustomerSite.State;
            request.Zip        = CustomerSite.Address.Zip ?? existingCustomerSite.Zip;
            request.Country    = CustomerSite.Address.Country ?? existingCustomerSite.Country;

            var response = GetContext().SetCustomerSite(request);
        }
示例#4
0
 /// <remarks/>
 public void SetCustomerSiteAsync(SetCustomerSiteRequest SetCusotmerSiteRequest, object userState) {
     if ((this.SetCustomerSiteOperationCompleted == null)) {
         this.SetCustomerSiteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetCustomerSiteOperationCompleted);
     }
     this.InvokeAsync("SetCustomerSite", new object[] {
                 SetCusotmerSiteRequest}, this.SetCustomerSiteOperationCompleted, userState);
 }
示例#5
0
 /// <remarks/>
 public void SetCustomerSiteAsync(SetCustomerSiteRequest SetCusotmerSiteRequest) {
     this.SetCustomerSiteAsync(SetCusotmerSiteRequest, null);
 }
        public ActionResult SubmitCheckout()
        {
            if (!PropertyBag.IsSubmitting)
            {
                PropertyBag.IsSubmitting = true;
                _propertyBag             = ExigoDAL.PropertyBags.Update(PropertyBag);

                try
                {
                    // Start creating the API requests
                    var apiRequests = new List <ApiRequest>();

                    // Create the customer
                    var customerRequest = new CreateCustomerRequest(PropertyBag.Customer)
                    {
                        InsertEnrollerTree = true,
                        EnrollerID         = PropertyBag.EnrollerID,
                        CustomerType       = CustomerTypes.Distributor,
                        EntryDate          = DateTime.Now.ToCST(),
                        CustomerStatus     = CustomerStatuses.Active,
                        CanLogin           = true,
                        DefaultWarehouseID = OrderConfiguration.WarehouseID,
                        Notes = "Distributor was entered by Distributor #{0}. Created by the API Enrollment at ".FormatWith(Identity.Owner.CustomerID) + HttpContext.Request.Url.Host + HttpContext.Request.Url.LocalPath + " on " + DateTime.Now.ToCST().ToString("dddd, MMMM d, yyyy h:mmtt") + " CST at IP " + Common.GlobalUtilities.GetClientIP() + " using " + HttpContext.Request.Browser.Browser + " " + HttpContext.Request.Browser.Version + " (" + HttpContext.Request.Browser.Platform + ")."
                    };

                    ///IF Unilevel Place in Sponsor Tree Now, Binary will be placed post transactional envelope
                    if (!GlobalSettings.Exigo.UseBinary)
                    {
                        customerRequest.InsertUnilevelTree = true;
                        customerRequest.SponsorID          = customerRequest.EnrollerID;
                    }
                    apiRequests.Add(customerRequest);


                    // Set a few variables up for our shippping address, order/auto order items and the default auto order payment type
                    var shippingAddress      = PropertyBag.ShippingAddress;
                    var orderItems           = ShoppingCart.Items.Where(i => i.Type == ShoppingCartItemType.Order || i.Type == ShoppingCartItemType.EnrollmentPack).ToList();
                    var autoOrderItems       = ShoppingCart.Items.Where(i => i.Type == ShoppingCartItemType.AutoOrder || i.Type == ShoppingCartItemType.EnrollmentAutoOrderPack).ToList();
                    var autoOrderPaymentType = AutoOrderPaymentType.PrimaryCreditCard;

                    // Create initial order
                    var orderRequest = new CreateOrderRequest(OrderConfiguration, PropertyBag.ShipMethodID, orderItems, shippingAddress);

                    // Add order request now if we need to do any testing with the accepted functionality
                    apiRequests.Add(orderRequest);

                    if (PropertyBag.PaymentMethod.CanBeParsedAs <BankAccount>())
                    {
                        var bankAccount = PropertyBag.PaymentMethod.As <BankAccount>();
                        if (bankAccount.Type == ExigoService.BankAccountType.New)
                        {
                            apiRequests.Add(new DebitBankAccountRequest(bankAccount));
                        }
                        else
                        {
                            apiRequests.Add(new DebitBankAccountOnFileRequest(bankAccount));
                        }
                    }

                    // Create subscription autoorder if an autoorder has been chosen
                    if (autoOrderItems != null && autoOrderItems.Count() > 0)
                    {
                        var autoOrderRequest = new CreateAutoOrderRequest(AutoOrderConfiguration, autoOrderPaymentType, DateTime.Now.AddMonths(1).ToCST(), PropertyBag.ShipMethodID, autoOrderItems, shippingAddress);
                        autoOrderRequest.Frequency = FrequencyType.Monthly;
                        apiRequests.Add(autoOrderRequest);
                    }

                    // Create customer site
                    var customerSiteRequest = new SetCustomerSiteRequest(PropertyBag.Customer);
                    apiRequests.Add(customerSiteRequest);

                    // Add the new credit card to the customer's record and charge it for the current order
                    if (PropertyBag.PaymentMethod.CanBeParsedAs <CreditCard>())
                    {
                        var creditCard = PropertyBag.PaymentMethod.As <CreditCard>();

                        if (!creditCard.IsTestCreditCard && !Request.IsLocal)
                        {
                            var saveCCRequest = new SetAccountCreditCardTokenRequest(creditCard);
                            apiRequests.Add(saveCCRequest);

                            var chargeCCRequest = new ChargeCreditCardTokenRequest(creditCard);
                            apiRequests.Add(chargeCCRequest);
                        }
                        else
                        {
                            orderRequest.OrderStatus = GlobalUtilities.GetDefaultOrderStatusType();
                        }
                    }

                    // Process the transaction
                    var transaction = new TransactionalRequest {
                        TransactionRequests = apiRequests.ToArray()
                    };
                    var response = ExigoDAL.WebService().ProcessTransaction(transaction);

                    var newcustomerid  = 0;
                    var neworderid     = 0;
                    var newautoorderid = 0;

                    if (response.Result.Status == ResultStatus.Success)
                    {
                        foreach (var apiresponse in response.TransactionResponses)
                        {
                            if (apiresponse.CanBeParsedAs <CreateCustomerResponse>())
                            {
                                newcustomerid = apiresponse.As <CreateCustomerResponse>().CustomerID;
                            }
                            if (apiresponse.CanBeParsedAs <CreateOrderResponse>())
                            {
                                neworderid = apiresponse.As <CreateOrderResponse>().OrderID;
                            }
                            if (apiresponse.CanBeParsedAs <CreateAutoOrderResponse>())
                            {
                                newautoorderid = apiresponse.As <CreateAutoOrderResponse>().AutoOrderID;
                            }
                        }
                    }

                    ///If Binary Place Node Now
                    if (GlobalSettings.Exigo.UseBinary)
                    {
                        var placeNodeRequest = new PlaceBinaryNodeRequest
                        {
                            CustomerID    = newcustomerid,
                            ToParentID    = PropertyBag.EnrollerID,
                            PlacementType = BinaryPlacementType.EvenFill
                        };
                        ExigoDAL.WebService().PlaceBinaryNode(placeNodeRequest);
                    }

                    PropertyBag.NewCustomerID  = newcustomerid;
                    PropertyBag.NewOrderID     = neworderid;
                    PropertyBag.NewAutoOrderID = newautoorderid;
                    _propertyBag = ExigoDAL.PropertyBags.Update(PropertyBag);

                    // If the transaction was successful, then send the customer an email that will allow them to confirm thier opt in choice
                    if (PropertyBag.Customer.IsOptedIn)
                    {
                        ExigoDAL.SendEmailVerification(newcustomerid, PropertyBag.Customer.Email);
                    }

                    var token = Security.Encrypt(new
                    {
                        CustomerID  = newcustomerid,
                        OrderID     = neworderid,
                        AutoOrderID = newautoorderid
                    });

                    // Enrollment complete, now delete the Property Bag
                    ExigoDAL.PropertyBags.Delete(PropertyBag);
                    ExigoDAL.PropertyBags.Delete(ShoppingCart);

                    return(new JsonNetResult(new
                    {
                        success = true,
                        token = token
                    }));
                }
                catch (Exception exception)
                {
                    PropertyBag.OrderException = exception.Message;
                    PropertyBag.IsSubmitting   = false;
                    _propertyBag = ExigoDAL.PropertyBags.Update(PropertyBag);

                    return(new JsonNetResult(new
                    {
                        success = false,
                        message = exception.Message
                    }));
                }
            }
            else
            {
                if (PropertyBag.NewCustomerID > 0)
                {
                    var token = Security.Encrypt(new
                    {
                        CustomerID  = PropertyBag.NewCustomerID,
                        OrderID     = PropertyBag.NewOrderID,
                        AutoOrderID = PropertyBag.NewAutoOrderID
                    });

                    return(new JsonNetResult(new
                    {
                        success = true,
                        token = token
                    }));
                }
                else
                {
                    return(new JsonNetResult(new
                    {
                        success = false,
                        message = Resources.Common.YourOrderIsSubmitting
                    }));
                }
            }
        }
示例#7
0
        EventConfirmation IEventService.EditEvent(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 - Need clarification which fields can be updated for a party
                    // Right now, updating party location
                    var updateCustomerRequest = new UpdateCustomerRequest
                    {
                        CustomerID   = eventBooking.Customer.CustomerID,
                        FirstName    = eventBooking.Customer.FirstName,
                        LastName     = eventBooking.Customer.LastName,
                        MainAddress1 = eventBooking.Customer.MainAddress.Address1,
                        MainAddress2 = eventBooking.Customer.MainAddress.Address2,
                        MainCity     = eventBooking.Customer.MainAddress.City,
                        MainState    = eventBooking.Customer.MainAddress.State,
                        MainZip      = eventBooking.Customer.MainAddress.Zip,
                        MainCountry  = eventBooking.Customer.MainAddress.Country
                    };
                    requests.Add(updateCustomerRequest);
                }
                else
                {
                    throw new ApplicationException("Cannot call EditEvent for a new event.  Call CreateEvent instead.");
                }

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

                var getCustomerExtendedRequest = new GetCustomerExtendedRequest()
                {
                    CustomerID      = eventBooking.Customer.CustomerID,
                    ExtendedGroupID = (int)CustomerExtendedGroup.PartyDetails // Party Extended Fields
                };
                var getCustomerExtendedResponse = Exigo.GetCustomerExtendedDetails(eventBooking.Customer.CustomerID, (int)CustomerExtendedGroup.PartyDetails).FirstOrDefault();

                var updateCustomerExtendedRequest = new UpdateCustomerExtendedRequest()
                {
                    CustomerExtendedID = getCustomerExtendedResponse.CustomerExtendedDetailID,
                    CustomerID         = eventBooking.Customer.CustomerID,
                    ExtendedGroupID    = (int)CustomerExtendedGroup.PartyDetails, // Party Extended Fields
                    Field2             = eventBooking.ActualStartDate.ToString(),
                    Field3             = eventBooking.CloseDate.ToString(),
                    Field4             = eventBooking.LockoutDate.ToString(),
                    Field12            = eventBooking.PartyDate.ToString(),
                    Field13            = eventBooking.PartyStartTime,
                    Field14            = eventBooking.PartyEndTime,
                    Field15            = eventBooking.TimeZone
                };
                requests.Add(updateCustomerExtendedRequest);

                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 updated but an unexpected error was encountered: " + ex.Message);
                }
                else
                {
                    confirmation.Result.Errors.Add("There was an unexpected error while updating your event: " + ex.Message);
                }

                return(confirmation);
            }
            try
            {
                using (var context = Exigo.Sql())
                {
                    string sqlProcedure = string.Format("UpdateEvent {0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}'", eventBooking.Customer.CustomerID, eventBooking.Customer.FirstName, eventBooking.ActualStartDate.ToString(CultureInfo.InvariantCulture), eventBooking.CloseDate.ToString(CultureInfo.InvariantCulture), eventBooking.LockoutDate.ToString(CultureInfo.InvariantCulture), eventBooking.PartyStartTime, eventBooking.PartyEndTime, eventBooking.TimeZone, eventBooking.CustomerSite.WebAlias);
                    bool   eventUpdated = context.Query <bool>(sqlProcedure).FirstOrDefault();
                }
            }
            catch (Exception EX)
            {
            }

            ProcessUpdatePartyCustomerResponse(result, eventBooking, confirmation);
            return(confirmation);
        }
示例#8
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);
        }