Esempio n. 1
0
        public static int CreateCustomerLead(CreateCustomerLeadRequest Request)
        {
            CreateCustomerLeadResponse Response = new CreateCustomerLeadResponse();
            ExigoApi Api = Exigo.WebService();

            Response = Api.CreateCustomerLead(Request);
            if (ResultStatus.Success.Equals(Response.Result.Status))
            {
                return(Response.CustomerLeadID);
            }

            throw new ApplicationException("Create CustomerLead Failed.");
        }
Esempio n. 2
0
 public static string GetWebAlias(int id, ExigoApi ApiContext)
 {
     try
     {
         GetCustomerSiteResponse webAlias = ApiContext.GetCustomerSite(new GetCustomerSiteRequest()
         {
             CustomerID = id
         });
         return(webAlias.WebAlias);
     }
     catch
     {
         return(string.Empty);
     }
 }
        public ExigoApi GetContext()
        {
            var context = new ExigoApi()
            {
                ApiAuthenticationValue = new ApiAuthentication()
                {
                    LoginName = ApiSettings.LoginName,
                    Password  = ApiSettings.Password,
                    Company   = ApiSettings.CompanyKey
                },
                Url = ApiSettings.WebServiceUrl
            };

            return(context);
        }
Esempio n. 4
0
 public static ExigoApi GetNewWebServiceContext(ApiContextSource source, string APIKey)
 {
     try
     {
         var res = new ExigoApi
         {
             ApiAuthenticationValue = new ApiAuthentication
             {
                 LoginName = GlobalSettings.ExigoApiCredentials.LoginName,
                 Password  = GlobalSettings.ExigoApiCredentials.Password,
                 Company   = GlobalSettings.ExigoApiCredentials.CompanyKey
             },
             Url = GlobalSettings.ExigoAPISourceUrl.CurrentWebServiceUrl
         };
         return(res);
     }
     catch { throw; }
 }
Esempio n. 5
0
 public StarterKit(ExigoApi api)
 {
     Api = api;
 }
Esempio n. 6
0
        ////Not being used anymore...just here for reference
        //public void CreateCustomerRecruitingRewards(int customerId)
        //{

        //    var api = Exigo.WebService();
        //    var reward = new RecruitingRewardDiscount();

        //    //Set start and expiry dates.
        //    var startDate = DateTime.Now;
        //    reward.CompletionDate = startDate.AddDays(60);

        //    //customerId = 1022;
        //    const int extendedGroupId = (int)CustomerExtendedGroup.RecruitingRewards;

        //    //Get Discount amount and check validity.
        //    reward.RewardAmount = Convert.ToDecimal(GetRecruitingReward(customerId));
        //    if (reward.DiscountAmount <= 0) return;

        //    //Check if the reward has already been added for the customer
        //    var customerEx = Exigo.GetCustomerExtendedDetails(customerId, extendedGroupId).Where(x => Convert.ToDateTime(x.Field2) == reward.CompletionDate);
        //    if (customerEx.Any()) return;

        //    var response = api.CreateCustomerExtended(new CreateCustomerExtendedRequest()
        //    {
        //        CustomerID = customerId,
        //        ExtendedGroupID = extendedGroupId,
        //        Field1 = reward.ItemCode, //Item Code
        //        Field2 = reward.CompletionDate.ToString(CultureInfo.InvariantCulture), //Completion Date
        //        Field4 = Convert.ToString(reward.RewardAmount, CultureInfo.InvariantCulture), //RewardAmount
        //        Field3 = 0.ToString(CultureInfo.InvariantCulture) //Redeemed

        //    });
        //}

        ////Also not being use at this time.
        //public decimal GetRecruitingReward(int customerId)
        //{

        //    var request = new GetPointAccountRequest()
        //    {
        //        CustomerID = customerId,
        //        PointAccountID = PointAccounts.RecruitingRewards
        //    };
        //    var rewardAmount = Exigo.GetRecruitingReward(request);

        //    return rewardAmount;
        //}

        //public IList<RecruitingRewardDiscount> GetCustomerRecruitingRewardDiscounts(int customerId)
        //{
        //    var details = Exigo.GetCustomerExtendedDetails(customerId, (int)CustomerExtendedGroup.RecruitingRewards /* Recruiting Rewards Extended Group ID */);

        //    var recruitingReward = (from d in details
        //                            select new RecruitingRewardDiscount()
        //                    {
        //                        CustomerExtendedDetailId = d.CustomerExtendedDetailID,
        //                        CompletionDate = DateTime.Parse(d.Field2),
        //                        ItemCode = d.Field1,
        //                        HasBeenRedeemed = (d.Field3 == "1"),
        //                        RewardAmount = Convert.ToDecimal(d.Field4)
        //                    }
        //     );

        //    return recruitingReward.ToList();

        //}

        #endregion Recruiting-Reward

        #region Enrollee-Reward

        //public void CreateCustomerEnrolleeRewards(int customerId)
        //{

        //    var api = Exigo.WebService();
        //    var reward = new EnrolleeRewardDiscount();

        //    //Set start and expiry dates.
        //    var startDate = DateTime.Now;
        //    reward.CompletionDate = startDate.AddDays(60);

        //    //customerId = 1022;
        //    const int extendedGroupId = (int)CustomerExtendedGroup.EnrolleeRewards;

        //    //Get Discount amount and check validity.
        //    reward.RewardAmount = Convert.ToDecimal(GetEnrolleeReward(customerId));
        //    if (reward.DiscountAmount <= 0) return;

        //    //Check if the reward has already been added for the customer
        //    var customerEx = Exigo.GetCustomerExtendedDetails(customerId, extendedGroupId).Where(x => Convert.ToDateTime(x.Field2) == reward.CompletionDate);
        //    if (customerEx.Any()) return;

        //    var response = api.CreateCustomerExtended(new CreateCustomerExtendedRequest()
        //    {
        //        CustomerID = customerId,
        //        ExtendedGroupID = extendedGroupId,
        //        Field1 = reward.CompletionDate.ToString(CultureInfo.InvariantCulture), //Completion Date
        //        Field2 = Convert.ToString(reward.RewardAmount), //RewardAmount
        //        Field3 = 0.ToString(CultureInfo.InvariantCulture) //Redeemed

        //    });
        //}

        //public decimal GetEnrolleeReward(int customerId)
        //{

        //    var request = new GetPointAccountRequest()
        //    {
        //        CustomerID = customerId,
        //        PointAccountID = PointAccounts.EnrolleeRewards
        //    };
        //    var rewardAmount = Exigo.GetEnrolleeReward(request);

        //    return rewardAmount;
        //}

        //public IList<EnrolleeRewardDiscount> GetCustomerEnrolleeRewardDiscounts(int customerId)
        //{
        //    var details = Exigo.GetCustomerExtendedDetails(customerId, (int)CustomerExtendedGroup.EnrolleeRewards /* Recruiting Rewards Extended Group ID */);

        //    var enrolleeReward = (from d in details
        //                          select new EnrolleeRewardDiscount()
        //                            {
        //                                CustomerExtendedDetailId = d.CustomerExtendedDetailID,
        //                                CompletionDate = DateTime.Parse(d.Field2),
        //                                ItemCode = d.Field3,
        //                                HasBeenRedeemed = (d.Field5 == "1")
        //                            }
        //     );

        //    return enrolleeReward.ToList();

        //}

        #endregion Enrollee-Reward


        public int CreateRewardsAutoOrder(string itemCode, int customerId, int ExtendedGroupID, int phase)
        {
            ShoppingCart.Items.Clear();
            try
            {
                Api = Exigo.WebService();

                CustomerExtendedDetails customerEx = Exigo.GetCustomerExtendedDetails(customerId, ExtendedGroupID).FirstOrDefault(x => x.Field3 == itemCode && x.Field1 == phase.ToString());
                if (customerEx != null)
                {
                    return(0);
                }
                var customer = Exigo.GetCustomer(customerId);
                // Start creating the API requests
                var details = new List <ApiRequest>();
                // Create the order request, if applicable
                ShoppingCartItem cartItem = ShoppingCartItem.Create();

                cartItem.ItemCode          = itemCode;
                cartItem.Quantity          = 1;
                cartItem.PriceEachOverride = 0;
                cartItem.PriceTypeID       = PriceTypes.Wholesale;
                cartItem.Type = ShoppingCartItemType.Order;

                ShoppingCart.Items.Add(cartItem);
                if (string.IsNullOrEmpty(itemCode))
                {
                    _log.TraceEvent(TraceEventType.Warning, 1, "IRewardService.CreateBonusKickerAutoOrder( String, int ): Entering method and ShoppingCart.Items is {0}.", (ShoppingCart.Items == null) ? "null" : "empty");
                    _nlog.Warn("IRewardService.CreateBonusKickerAutoOrder( String, int ): Entering method and ShoppingCart.Items is {0}.", (ShoppingCart.Items == null) ? "null" : "empty");
                }
                else
                {
                    _log.TraceEvent(TraceEventType.Information, 1, "IRewardService.CreateBonusKickerAutoOrder( String, int ): Entering method and ShoppingCart.Items is {0}.", ShoppingCart.Items.Count);
                    _nlog.Info("IOrderService.PlaceOrder( Shop, String ): Entering method with {0} products.", ShoppingCart.Items.Count);
                }
                // Create the autoorder request, if applicable
                var autoOrderRequest = new CreateOrderRequest(
                    AutoOrderConfiguration,
                    (int)ShipMethods.Standard,
                    string.Empty,
                    ShoppingCart.Items,
                    new ShippingAddress
                {
                    Address1    = string.IsNullOrEmpty(customer.MainAddress.Address1) ? customer.MailingAddress.Address1 : customer.MainAddress.Address1,
                    Address2    = string.IsNullOrEmpty(customer.MainAddress.Address2) ? customer.MailingAddress.Address2 : customer.MainAddress.Address2,
                    AddressType = AddressType.Mailing,
                    City        = string.IsNullOrEmpty(customer.MainAddress.City) ? customer.MailingAddress.City : customer.MainAddress.City,
                    Country     = string.IsNullOrEmpty(customer.MainAddress.Country) ? customer.MailingAddress.Country : customer.MainAddress.Country,
                    CustomerID  = customer.CustomerID,
                    Email       = customer.Email,
                    LastName    = customer.LastName,
                    FirstName   = customer.FirstName,
                    Phone       = customer.MobilePhone,
                    State       = string.IsNullOrEmpty(customer.MainAddress.State) ? customer.MailingAddress.State : customer.MainAddress.State,
                    Zip         = string.IsNullOrEmpty(customer.MainAddress.Zip) ? customer.MailingAddress.Zip : customer.MainAddress.Zip,
                },
                    shippingOverride: 0,
                    taxOverride: 0);

                autoOrderRequest.TaxRateOverride        = 0M;
                autoOrderRequest.ShippingAmountOverride = 0M;
                autoOrderRequest.CustomerID             = customerId;
                autoOrderRequest.Other15 = "1";

                details.Add(autoOrderRequest);

                // Process the transaction
                var transactionRequest = new TransactionalRequest {
                    TransactionRequests = details.ToArray()
                };
                var transactionResponse = Exigo.WebService().ProcessTransaction(transactionRequest);
                if (transactionResponse == null)
                {
                    _log.TraceEvent(TraceEventType.Error, 1, "There was no CreateOrderResponse.");
                }
                else
                {
                    _log.TraceEvent(TraceEventType.Information, 1, "ProcessTransaction.Result.TransactionKey = {0}", transactionResponse.Result.TransactionKey);
                    _log.TraceEvent(TraceEventType.Information, 1, "ProcessTransaction.Result.Reponse = {0}", transactionResponse.Result.Status);

                    if ((transactionResponse.Result.Errors != null) && (transactionResponse.Result.Errors.Length > 0))
                    {
                        _log.TraceEvent(TraceEventType.Error, 1, "ProcessTransaction.Result.Errors.Length = {0}", transactionResponse.Result.Errors.Length);
                        for (int i = 0; i < transactionResponse.Result.Errors.Length; i++)
                        {
                            _log.TraceEvent(TraceEventType.Error, 1, "ProcessTransaction.Result.Errors[{0}] = {1}", i, transactionResponse.Result.Errors[i]);
                        }
                    }
                }
                var newOrderId = 0;

                //process the response
                if (transactionResponse.Result.Status == ResultStatus.Success)
                {
                    foreach (var orderResponse in transactionResponse.TransactionResponses.OfType <CreateOrderResponse>())
                    {
                        newOrderId = orderResponse.OrderID;

                        var request = Api.CreateCustomerExtended(new CreateCustomerExtendedRequest()
                        {
                            CustomerID      = customer.CustomerID,
                            ExtendedGroupID = ExtendedGroupID,
                            Field1          = phase.ToString(),                         // phase # for bonus kicker or module for training
                            Field2          = DateTime.Now.ToString(CultureInfo.InvariantCulture),
                            Field3          = itemCode,                                 //ItemCode
                            Field4          = 100.ToString(),                           //Discount Percent
                            Field5          = 1.ToString(CultureInfo.InvariantCulture), //Redeemed
                            Field6          = newOrderId.ToString()                     // orderid
                        });
                    }

                    var updateOrder = Api.ChangeOrderStatus(new ChangeOrderStatusRequest()
                    {
                        OrderID     = newOrderId,
                        OrderStatus = OrderStatusType.Accepted
                    });
                }
                return(newOrderId);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }