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); }
/// <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); }
/// <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 })); } } }
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); }
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); }