Пример #1
0
        public static void PlaceUniLevelCustomer(PlaceUniLevelCustomerRequest request)
        {
            // Create our request
            var apiRequest = new PlaceUniLevelNodeRequest()
            {
                CustomerID            = request.CustomerID,
                ToSponsorID           = request.ToSponsorID,
                Reason                = request.Reason,
                OptionalFindAvailable = request.FindNextAvailablePlacement
            };

            // Handle the optional filters
            if (request.Placement != null)
            {
                apiRequest.OptionalPlacement = (int)request.Placement;
            }
            if (request.BuildTypeID != null)
            {
                apiRequest.OptionalUnilevelBuildTypeID = (int)request.BuildTypeID;
            }


            // Place the node
            ExigoDAL.WebService().PlaceUniLevelNode(apiRequest);


            // Update the customer's field to indicate they have been moved.
            ExigoDAL.WebService().UpdateCustomer(new UpdateCustomerRequest
            {
                CustomerID = request.CustomerID,
                Field1     = DateTime.Now.ToCST().ToString()
            });
        }
Пример #2
0
        public static BankAccount SetCustomerBankAccount(int customerID, BankAccount account, ExigoService.BankAccountType type)
        {
            // New bank accounts
            if (type == ExigoService.BankAccountType.New)
            {
                return(SaveNewCustomerBankAccount(customerID, account));
            }


            // Save the bank account
            var request = new SetAccountCheckingRequest
            {
                CustomerID = customerID,

                BankName          = account.BankName,
                BankAccountNumber = account.AccountNumber,
                BankRoutingNumber = account.RoutingNumber,
                BankAccountType   = Common.Api.ExigoWebService.BankAccountType.CheckingPersonal,

                NameOnAccount  = account.NameOnAccount,
                BillingAddress = account.BillingAddress.AddressDisplay,
                BillingCity    = account.BillingAddress.City,
                BillingState   = account.BillingAddress.State,
                BillingZip     = account.BillingAddress.Zip,
                BillingCountry = account.BillingAddress.Country
            };
            var response = ExigoDAL.WebService().SetAccountChecking(request);


            return(account);
        }
Пример #3
0
        public static void DeleteCustomerBankAccount(int customerID, ExigoService.BankAccountType type)
        {
            // If this is a new credit card, don't delete it - we have nothing to delete
            if (type == ExigoService.BankAccountType.New)
            {
                return;
            }


            // Save the a blank copy of the bank account
            // Save the bank account
            var request = new SetAccountCheckingRequest
            {
                CustomerID = customerID,

                BankName          = string.Empty,
                BankAccountNumber = string.Empty,
                BankRoutingNumber = string.Empty,
                BankAccountType   = Common.Api.ExigoWebService.BankAccountType.CheckingPersonal,

                NameOnAccount  = string.Empty,
                BillingAddress = string.Empty,
                BillingCity    = string.Empty,
                BillingState   = string.Empty,
                BillingZip     = string.Empty,
                BillingCountry = string.Empty
            };
            var response = ExigoDAL.WebService().SetAccountChecking(request);
        }
Пример #4
0
        public static void DeleteCustomerCreditCard(int customerID, CreditCardType type)
        {
            // If this is a new credit card, don't delete it - we have nothing to delete
            if (type == CreditCardType.New)
            {
                return;
            }


            // Save the a blank copy of the credit card
            // Passing a blank token will do the trick
            var request = new SetAccountCreditCardTokenRequest
            {
                CustomerID = customerID,

                CreditCardAccountType = (type == CreditCardType.Primary) ? AccountCreditCardType.Primary : AccountCreditCardType.Secondary,
                CreditCardToken       = string.Empty,
                ExpirationMonth       = 1,
                ExpirationYear        = DateTime.Now.Year + 1,

                BillingName    = string.Empty,
                BillingAddress = string.Empty,
                BillingCity    = string.Empty,
                BillingState   = string.Empty,
                BillingZip     = string.Empty,
                BillingCountry = string.Empty
            };
            var response = ExigoDAL.WebService().SetAccountCreditCardToken(request);
        }
Пример #5
0
        public static bool IsWebaliasAvailable(string webalias)
        {
            var webaliasAvailable = false;

            // must use try catch as API returns an exception if no customer site with the provided webalias is found
            try
            {
                // cannot use SQL due to delay in update to replicated database
                var customerSite = ExigoDAL.WebService().GetCustomerSite(new GetCustomerSiteRequest()
                {
                    WebAlias = webalias
                });

                if (customerSite == null)
                {
                    webaliasAvailable = true;
                }
                ;
            }
            catch (Exception ex)
            {
                webaliasAvailable = true;
                Log.Error(ex, "Error Getting Replicated Site: {Message}", ex.Message);
            }


            return(webaliasAvailable);
        }
Пример #6
0
        public static Address SaveNewCustomerAddress(int customerID, Address address)
        {
            var addressesOnFile = ExigoDAL.GetCustomerAddresses(customerID).Where(c => c.IsComplete);

            // Do any of the addresses on file match the one we are using?
            // If not, save this address to the next available slot
            if (!addressesOnFile.Any(c => c.Equals(address)))
            {
                var saveAddress = false;
                var request     = new UpdateCustomerRequest();
                request.CustomerID = customerID;

                // Main address
                if (!addressesOnFile.Any(c => c.AddressType == AddressType.Main))
                {
                    saveAddress          = true;
                    address.AddressType  = AddressType.Main;
                    request.MainAddress1 = address.Address1;
                    request.MainAddress2 = address.Address2;
                    request.MainCity     = address.City;
                    request.MainState    = address.State;
                    request.MainZip      = address.Zip;
                    request.MainCountry  = address.Country;
                }

                // Mailing address
                else if (!addressesOnFile.Any(c => c.AddressType == AddressType.Mailing))
                {
                    saveAddress          = true;
                    address.AddressType  = AddressType.Mailing;
                    request.MailAddress1 = address.Address1;
                    request.MailAddress2 = address.Address2;
                    request.MailCity     = address.City;
                    request.MailState    = address.State;
                    request.MailZip      = address.Zip;
                    request.MailCountry  = address.Country;
                }

                // Other address
                else
                {
                    saveAddress           = true;
                    address.AddressType   = AddressType.Other;
                    request.OtherAddress1 = address.Address1;
                    request.OtherAddress2 = address.Address2;
                    request.OtherCity     = address.City;
                    request.OtherState    = address.State;
                    request.OtherZip      = address.Zip;
                    request.OtherCountry  = address.Country;
                }

                if (saveAddress)
                {
                    ExigoDAL.WebService().UpdateCustomer(request);
                    ExigoDAL.PurgeCustomer(customerID);
                }
            }

            return(address);
        }
Пример #7
0
        public static bool IsWebAliasAvailable(int customerID, string webalias)
        {
            try
            {
                // Get the current webalias to see if it matches what we passed. If so, it's still valid.
                var currentWebAlias = ExigoDAL.GetCustomerSite(customerID).WebAlias;
                if (webalias.Equals(currentWebAlias, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(true);
                }

                // Validate the web alias
                // cannot use SQL due to delay in update to replicated database
                var customerSite = ExigoDAL.WebService().GetCustomerSite(new GetCustomerSiteRequest()
                {
                    WebAlias = webalias
                });

                return(customerSite == null);
            }
            catch (Exception ex)
            {
                // the GetCustomerSite throws an exception if no matching web alias is found
                // return the web alias is available in this case so return true
                Log.Error(ex, "Error Getting Replicated Site: {Message}", ex.Message);
                return(true);
            }
        }
Пример #8
0
        public static Address SetCustomerAddressOnFile(int customerID, Address address, AddressType type)
        {
            var saveAddress = false;
            var request     = new UpdateCustomerRequest();

            request.CustomerID = customerID;

            // Attempt to validate the user's entered address if US address
            address = GlobalUtilities.ValidateAddress(address) as Address;

            // New Addresses
            if (type == AddressType.New)
            {
                return(ExigoDAL.SaveNewCustomerAddress(customerID, address));
            }

            // Main address
            if (type == AddressType.Main)
            {
                saveAddress          = true;
                request.MainAddress1 = address.Address1;
                request.MainAddress2 = address.Address2 ?? string.Empty;
                request.MainCity     = address.City;
                request.MainState    = address.State;
                request.MainZip      = address.Zip;
                request.MainCountry  = address.Country;
            }

            // Mailing address
            if (type == AddressType.Mailing)
            {
                saveAddress          = true;
                request.MailAddress1 = address.Address1;
                request.MailAddress2 = address.Address2 ?? string.Empty;
                request.MailCity     = address.City;
                request.MailState    = address.State;
                request.MailZip      = address.Zip;
                request.MailCountry  = address.Country;
            }

            // Other address
            if (type == AddressType.Other)
            {
                saveAddress           = true;
                request.OtherAddress1 = address.Address1;
                request.OtherAddress2 = address.Address2 ?? string.Empty;
                request.OtherCity     = address.City;
                request.OtherState    = address.State;
                request.OtherZip      = address.Zip;
                request.OtherCountry  = address.Country;
            }

            if (saveAddress)
            {
                ExigoDAL.WebService().UpdateCustomer(request);
                ExigoDAL.PurgeCustomer(customerID);
            }

            return(address);
        }
Пример #9
0
 public static void SetCustomerBinaryPlacementPreference(int customerID, BinaryPlacementType placementType)
 {
     ExigoDAL.WebService().SetBinaryPreference(new SetBinaryPreferenceRequest
     {
         CustomerID    = customerID,
         PlacementType = placementType
     });
 }
Пример #10
0
 public static void OptOutCustomer(int customerID)
 {
     ExigoDAL.WebService().UpdateCustomer(new UpdateCustomerRequest
     {
         CustomerID            = customerID,
         SubscribeToBroadcasts = false
     });
 }
Пример #11
0
 public static void SetCustomerPreferredLanguage(int customerID, int languageID)
 {
     ExigoDAL.WebService().UpdateCustomer(new UpdateCustomerRequest
     {
         CustomerID = customerID,
         LanguageID = languageID
     });
 }
Пример #12
0
 public static void CancelOrder(int orderID)
 {
     ExigoDAL.WebService().ChangeOrderStatus(new ChangeOrderStatusRequest
     {
         OrderID     = orderID,
         OrderStatus = OrderStatusType.Canceled
     });
 }
Пример #13
0
 public static void OptInCustomer(int customerID, string email)
 {
     ExigoDAL.WebService().UpdateCustomer(new UpdateCustomerRequest
     {
         CustomerID             = customerID,
         Email                  = email,
         SubscribeToBroadcasts  = true,
         SubscribeFromIPAddress = GlobalUtilities.GetClientIP()
     });
 }
Пример #14
0
        public static bool UpdateCustomer(UpdateCustomerRequest request)
        {
            if (MemoryCache.Default.Contains("Customer_" + request.CustomerID))
            {
                PurgeCustomer(request.CustomerID);
            }
            var response = ExigoDAL.WebService().UpdateCustomer(request);

            return(response.Result.Status == ResultStatus.Success);
        }
Пример #15
0
        public static void DeleteCustomerAutoOrder(int customerID, int autoOrderID)
        {
            // Make sure the autoorder exists
            if (!IsValidAutoOrderID(customerID, autoOrderID))
            {
                return;
            }

            // Cancel the autoorder
            var response = ExigoDAL.WebService().ChangeAutoOrderStatus(new ChangeAutoOrderStatusRequest
            {
                AutoOrderID     = autoOrderID,
                AutoOrderStatus = AutoOrderStatusType.Deleted
            });
        }
Пример #16
0
        public static void DeleteCustomerAddress(int customerID, AddressType type)
        {
            var deleteAddress = false;
            var request       = new UpdateCustomerRequest();

            request.CustomerID = customerID;

            // Main address
            if (type == AddressType.Main)
            {
                deleteAddress        = true;
                request.MainAddress1 = string.Empty;
                request.MainAddress2 = string.Empty;
                request.MainCity     = string.Empty;
                request.MainState    = string.Empty;
                request.MainZip      = string.Empty;
                request.MainCountry  = string.Empty;
            }

            // Mailing address
            else if (type == AddressType.Mailing)
            {
                deleteAddress        = true;
                request.MailAddress1 = string.Empty;
                request.MailAddress2 = string.Empty;
                request.MailCity     = string.Empty;
                request.MailState    = string.Empty;
                request.MailZip      = string.Empty;
                request.MailCountry  = string.Empty;
            }

            // Other address
            else if (type == AddressType.Other)
            {
                deleteAddress         = true;
                request.OtherAddress1 = string.Empty;
                request.OtherAddress2 = string.Empty;
                request.OtherCity     = string.Empty;
                request.OtherState    = string.Empty;
                request.OtherZip      = string.Empty;
                request.OtherCountry  = string.Empty;
            }

            if (deleteAddress)
            {
                ExigoDAL.WebService().UpdateCustomer(request);
            }
        }
Пример #17
0
        public static string GetCustomerPassword(int customerID)
        {
            try
            {
                if (GlobalSettings.Parties.CustomReportID_GetCustomerPassword > 0)
                {
                    //Create Request
                    GetCustomReportRequest request = new GetCustomReportRequest {
                        ReportID = GlobalSettings.Parties.CustomReportID_GetCustomerPassword
                    };

                    //Add Parameters
                    List <ParameterRequest> parameters = new List <ParameterRequest>();

                    parameters.Add(new ParameterRequest
                    {
                        ParameterName = "PassCheck",
                        // Unique passkey to ensure only we are calling this report and it is not accessed from others with API credentials
                        Value = "!00000000000000"
                    });

                    parameters.Add(new ParameterRequest
                    {
                        ParameterName = "CID",
                        Value         = customerID
                    });

                    //Now attach the list to the request
                    request.Parameters = parameters.ToArray();

                    //Send Request to Server and Get Response
                    GetCustomReportResponse response = ExigoDAL.WebService().GetCustomReport(request);

                    string password = response.ReportData.Tables[0].Rows[0].ItemArray[0].ToString();
                    //Now examine the results:
                    return(password);
                }
                else
                {
                    return("");
                }
            }
            catch
            {
                return("");
            }
        }
Пример #18
0
        public static bool IsEmailAvailable(int customerID, string email)
        {
            var isEmailAvailable = true;

            var customer = ExigoDAL.WebService().GetCustomers(new GetCustomersRequest()
            {
                Email = email
            }).Customers
                           .Where(c => c.CustomerID != customerID).Count();

            if (customer > 0)
            {
                isEmailAvailable = false;
            }

            return(isEmailAvailable);
        }
Пример #19
0
        public static CompanyNewsItem GetCompanyNewsItem(GetCompanyNewsItemRequest request)
        {
            var             api = ExigoDAL.WebService();
            CompanyNewsItem response;
            var             newsItemResponse = (api.GetCompanyNewsItem(new Common.Api.ExigoWebService.GetCompanyNewsItemRequest
            {
                NewsID = request.NewsID
            }));

            //Convert to our model
            CompanyNewsItem newsItem = (CompanyNewsItem)newsItemResponse;

            //Only respond if the article is flagged to backoffice visbility
            if (newsItem.WebSettings == NewsWebSettings.AccessAvailable)
            {
                response = newsItem;
            }

            return(newsItem);
        }
Пример #20
0
        public bool SaveImage(string path, string filename, byte[] bytes)
        {
            try
            {
                ExigoDAL.WebService().SetImageFile(new Common.Api.ExigoWebService.SetImageFileRequest
                {
                    Name      = filename,
                    Path      = path,
                    ImageData = bytes
                });
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Error Saving Image: {Message}", ex.Message);
                return(false);
            }

            // If we got here, everything should be good
            return(true);
        }
Пример #21
0
        public static VerifyAddressResponse VerifyAddress(Address address)
        {
            var result = new VerifyAddressResponse();

            result.OriginalAddress = address;
            result.IsValid         = false;

            try
            {
                if (address.Country.ToUpper() == "US" && address.IsComplete)
                {
                    var verifiedAddress = ExigoDAL.WebService().VerifyAddress(new VerifyAddressRequest
                    {
                        Address = address.AddressDisplay,
                        City    = address.City,
                        State   = address.State,
                        Zip     = address.Zip,
                        Country = address.Country
                    });

                    result.VerifiedAddress = new Address()
                    {
                        AddressType = address.AddressType,
                        Address1    = verifiedAddress.Address,
                        Address2    = string.Empty,
                        City        = verifiedAddress.City,
                        State       = verifiedAddress.State,
                        Zip         = verifiedAddress.Zip,
                        Country     = verifiedAddress.Country
                    };

                    result.IsValid = true;
                }
            }
            catch
            {
                return(result);
            }

            return(result);
        }
Пример #22
0
        public static List <CompanyNewsItem> GetCompanyNews(GetCompanyNewsRequest request)
        {
            var api = ExigoDAL.WebService();

            CompanyNewsResponse[] newsResponse;
            var newsItems = new List <CompanyNewsItem>();

            foreach (var department in request.NewsDepartments)
            {
                newsResponse = (api.GetCompanyNews(new Common.Api.ExigoWebService.GetCompanyNewsRequest
                {
                    DepartmentType = department
                }).CompanyNews);

                //Convert to our model
                newsItems = newsResponse.Select(apiItem => (CompanyNewsItem)apiItem)
                            .Where(newsItem => (NewsWebSettings)newsItem.WebSettings == NewsWebSettings.AccessAvailable).ToList(); //and filter out anything not flagged as available in the backoffice


                // If they requested the content, then loop through all the articles and add the content to each news item
                var tasks = new List <Task>();
                foreach (var item in newsItems)
                {
                    tasks.Add(Task.Factory.StartNew(() =>
                    {
                        var newsItemResponse = (api.GetCompanyNewsItem(new Common.Api.ExigoWebService.GetCompanyNewsItemRequest
                        {
                            NewsID = item.NewsID
                        }));

                        //Add the content to the item
                        item.Content = newsItemResponse.Content;
                    }));

                    Task.WaitAll(tasks.ToArray());
                    tasks.Clear();
                }
            }

            return(newsItems);
        }
Пример #23
0
        public static bool IsLoginNameAvailable(string loginname, int customerID = 0)
        {
            if (customerID > 0)
            {
                // Get the current login name to see if it matches what we passed. If so, it's still valid.
                var currentLoginName = ExigoDAL.GetCustomer(customerID).LoginName;
                if (loginname.Equals(currentLoginName, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(true);
                }
            }

            // Validate the login name
            // cannot use SQL due to delay in update to replicated database
            var apiCustomer = ExigoDAL.WebService().GetCustomers(new GetCustomersRequest()
            {
                LoginName = loginname
            }).Customers.FirstOrDefault();

            return(apiCustomer == null);
        }
Пример #24
0
        public static CustomerSite GetCustomerSiteRealTime(int customerID)
        {
            var site = new CustomerSite();

            // The GetCustomerSite method currently throws an exception if no customer site record exists for the customer
            // We will set the site for this customer in the Catch and get the site again if this is the case
            try
            {
                var apiCustomerSite = ExigoDAL.WebService().GetCustomerSite(new GetCustomerSiteRequest {
                    CustomerID = customerID
                });

                site = (CustomerSite)apiCustomerSite;
            }
            catch (Exception)
            {
                // Do Nothing
            }

            return(site);
        }
Пример #25
0
        public static CreditCard SetCustomerCreditCard(int customerID, CreditCard card, CreditCardType type)
        {
            // New credit cards
            if (type == CreditCardType.New)
            {
                return(SaveNewCustomerCreditCard(customerID, card));
            }

            // Validate that we have a token
            var token = card.Token;     //card.GetToken();

            if (token.IsNullOrEmpty())
            {
                return(card);
            }


            // Save the credit card
            var request = new SetAccountCreditCardTokenRequest
            {
                CustomerID = customerID,

                CreditCardAccountType = (card.Type == CreditCardType.Primary) ? AccountCreditCardType.Primary : AccountCreditCardType.Secondary,
                CreditCardToken       = token,
                ExpirationMonth       = card.ExpirationMonth,
                ExpirationYear        = card.ExpirationYear,

                BillingName    = card.NameOnCard,
                BillingAddress = card.BillingAddress.AddressDisplay,
                BillingCity    = card.BillingAddress.City,
                BillingState   = card.BillingAddress.State,
                BillingZip     = card.BillingAddress.Zip,
                BillingCountry = card.BillingAddress.Country
            };
            var response = ExigoDAL.WebService().SetAccountCreditCardToken(request);


            return(card);
        }
Пример #26
0
        public static void SendEmail(SendEmailRequest request)
        {
            var sendEmailRequest = new Common.Api.ExigoWebService.SendEmailRequest
            {
                MailFrom = request.From,
                Subject  = request.Subject,
                Body     = request.Body
            };

            // Send the emails
            var tasks = new List <Task>();

            foreach (var email in request.To)
            {
                tasks.Add(
                    Task.Factory.StartNew(() =>
                {
                    sendEmailRequest.MailTo = email;
                    ExigoDAL.WebService().SendEmail(sendEmailRequest);
                }));
            }
            Task.WaitAll(tasks.ToArray());
        }
Пример #27
0
 public static CustomerSite SetCustomerSite(CustomerSite request)
 {
     ExigoDAL.WebService().SetCustomerSite(new SetCustomerSiteRequest(request));
     return(request);
 }
Пример #28
0
        public static Customer GetCustomer(int customerID, bool realtime = false)
        {
            if (!MemoryCache.Default.Contains("Customer_" + customerID))
            {
                Customer customer = null;
                if (!realtime)
                {
                    using (var context = ExigoDAL.Sql())
                    {
                        customer = context.Query <Customer, Address, Address, Address, Customer>(@"                                
                                     SELECT 
                                        c.CustomerID
                                        ,c.FirstName
                                        ,c.MiddleName
                                        ,c.LastName
                                        ,c.NameSuffix
                                        ,c.Company
                                        ,c.CustomerTypeID
                                        ,c.CustomerStatusID
                                        ,c.Email
                                        ,c.Phone  AS PrimaryPhone	
                                        ,c.Phone2 AS SecondaryPhone	
                                        ,c.MobilePhone
                                        ,c.Fax
                                        ,c.CanLogin
                                        ,c.LoginName
                                        ,c.PasswordHash
                                        ,c.RankID
                                        ,c.EnrollerID
                                        ,c.SponsorID
                                        ,c.BirthDate
                                        ,c.CurrencyCode
                                        ,c.PayableToName
                                        ,c.DefaultWarehouseID
                                        ,c.PayableTypeID
                                        ,c.CheckThreshold
                                        ,c.LanguageID
                                        ,c.Gender
                                        ,c.TaxCode AS TaxID
                                        ,c.TaxCodeTypeID
                                        ,c.IsSalesTaxExempt
                                        ,c.SalesTaxCode
                                        ,c.SalesTaxExemptExpireDate
                                        ,c.VatRegistration
                                        ,c.BinaryPlacementTypeID
                                        ,c.UseBinaryHoldingTank
                                        ,c.IsInBinaryHoldingTank
                                        ,c.IsEmailSubscribed
                                        ,c.EmailSubscribeIP
                                        ,c.Notes
                                        ,c.Field2
                                        ,c.Field3
                                        ,c.Field4
                                        ,c.Field5
                                        ,c.Field6
                                        ,c.Field7
                                        ,c.Field8
                                        ,c.Field9
                                        ,c.Field10
                                        ,c.Field11
                                        ,c.Field12
                                        ,c.Field13
                                        ,c.Field14
                                        ,c.Field15
                                        ,c.Date1
                                        ,c.Date2
                                        ,c.Date3
                                        ,c.Date4
                                        ,c.Date5
                                        ,c.CreatedDate
                                        ,c.ModifiedDate
                                        ,c.CreatedBy
                                        ,c.ModifiedBy
	                                    ,cs.CustomerStatusDescription
                                        ,ct.CustomerTypeDescription
                                        ,c.MainAddress1	AS Address1
                                        ,c.MainAddress2	AS Address2
                                        ,c.MainAddress3 AS Address3
                                        ,c.MainCity AS City
                                        ,c.MainState AS State
                                        ,c.MainZip AS Zip
                                        ,c.MainCountry AS Country
                                        ,c.MainCounty AS County
                                        ,c.MainVerified AS isVerified
                                        ,c.MailAddress1	AS Address1 
                                        ,c.MailAddress2	AS Address2 
                                        ,c.MailAddress3	AS Address3 
                                        ,c.MailCity AS City
                                        ,c.MailState AS State
                                        ,c.MailZip AS Zip
                                        ,c.MailVerified AS isVerified
                                        ,c.MailCountry AS Country
                                        ,c.MailCounty AS County
                                        ,c.OtherAddress1 AS Address1 
                                        ,c.OtherAddress2 AS Address2 
                                        ,c.OtherAddress3 AS Address3 
                                        ,c.OtherCity AS City
                                        ,c.OtherState AS State
                                        ,c.OtherZip	AS Zip		
                                        ,c.OtherCountry	AS Country	
                                        ,c.OtherCounty AS County
                                        ,c.OtherVerified AS isVerified
                                    FROM Customers c
	                                    LEFT JOIN CustomerStatuses cs
		                                    ON c.CustomerStatusID = cs.CustomerStatusID
	                                    LEFT JOIN CustomerTypes ct
		                                    ON c.CustomerTypeID = ct.CustomerTypeID
                                    WHERE c.CustomerID = @CustomerID
                    ", (cust, main, mail, other) =>
                        {
                            main.AddressType    = AddressType.Main;
                            cust.MainAddress    = main;
                            mail.AddressType    = AddressType.Mailing;
                            cust.MailingAddress = mail;
                            other.AddressType   = AddressType.Other;
                            cust.OtherAddress   = other;
                            return(cust);
                        },
                                                                                                 param: new
                        {
                            CustomerID = customerID
                        }, splitOn: "Address1, Address1, Address1"
                                                                                                 ).FirstOrDefault();
                    }
                }

                if (customer == null)
                {
                    var customerResponse = ExigoDAL.WebService().GetCustomers(new GetCustomersRequest {
                        CustomerID = customerID
                    }).Customers.FirstOrDefault();

                    customer        = (Customer)customerResponse;
                    customer.RankID = customerResponse.RankID;
                    customer.CustomerStatusDescription = CommonResources.CustomerStatuses(customerResponse.CustomerStatus);
                }
                if (customer == null)
                {
                    return(null);
                }
                MemoryCache.Default.Add("Customer_" + customerID, customer, DateTime.Now.AddMinutes(15));

                return(customer);
            }
            else
            {
                return(MemoryCache.Default.Get("Customer_" + customerID) as Customer);
            }
        }
Пример #29
0
        public static IEnumerable <RealTimeCommission> GetCustomerRealTimeCommissions(GetCustomerRealTimeCommissionsRequest request)
        {
            var results = new List <RealTimeCommission>();


            // Get the commission record
            var realtimeresponse = ExigoDAL.WebService().GetRealTimeCommissions(new Common.Api.ExigoWebService.GetRealTimeCommissionsRequest
            {
                CustomerID = request.CustomerID
            });

            if (realtimeresponse.Commissions.Length == 0)
            {
                return(results);
            }


            // Get the unique periods for each of the commission results
            if (request.GetPeriodVolumes)
            {
                var periods        = new List <Period>();
                var periodRequests = new List <GetPeriodsRequest>();
                foreach (var commissionResponse in realtimeresponse.Commissions)
                {
                    var periodID     = commissionResponse.PeriodID;
                    var periodTypeID = commissionResponse.PeriodType;

                    var req = periodRequests.Where(c => c.PeriodTypeID == periodTypeID).FirstOrDefault();
                    if (req == null)
                    {
                        periodRequests.Add(new GetPeriodsRequest()
                        {
                            PeriodTypeID = periodTypeID,
                            PeriodIDs    = new List <int> {
                                periodID
                            }
                        });
                    }
                    else
                    {
                        var ids = req.PeriodIDs.ToList();
                        ids.Add(periodID);
                        req.PeriodIDs = ids.Distinct().ToList();
                    }
                }
                foreach (var req in periodRequests)
                {
                    var responses = GetPeriods(req);
                    foreach (var response in responses)
                    {
                        periods.Add(response);
                    }
                }


                // Get the volumes for each unique period
                var volumeCollections = new List <VolumeCollection>();
                foreach (var period in periods)
                {
                    volumeCollections.Add(GetCustomerVolumes(new GetCustomerVolumesRequest
                    {
                        CustomerID     = request.CustomerID,
                        PeriodID       = period.PeriodID,
                        PeriodTypeID   = period.PeriodTypeID,
                        VolumesToFetch = request.VolumesToFetch
                    }));
                }

                // Process each commission response
                try
                {
                    foreach (var commission in realtimeresponse.Commissions)
                    {
                        var typedCommission = (RealTimeCommission)commission;

                        typedCommission.Period = periods
                                                 .Where(c => c.PeriodTypeID == commission.PeriodType)
                                                 .Where(c => c.PeriodID == commission.PeriodID)
                                                 .FirstOrDefault();

                        typedCommission.Volumes = volumeCollections
                                                  .Where(c => c.Period.PeriodTypeID == typedCommission.Period.PeriodTypeID)
                                                  .Where(c => c.Period.PeriodID == typedCommission.Period.PeriodID)
                                                  .FirstOrDefault();

                        typedCommission.PaidRank = typedCommission.Volumes.PayableAsRank;

                        results.Add(typedCommission);
                    }

                    return(results.OrderByDescending(c => c.Period.StartDate));
                }
                catch { return(results); }
            }
            else
            {
                var periodInfo = ExigoDAL.GetPeriods(new GetPeriodsRequest
                {
                    PeriodIDs    = realtimeresponse.Commissions.Select(p => p.PeriodID).ToList(),
                    PeriodTypeID = realtimeresponse.Commissions.FirstOrDefault().PeriodType
                });
                foreach (var commission in realtimeresponse.Commissions)
                {
                    var typedCommission = (RealTimeCommission)commission;
                    var period          = periodInfo.FirstOrDefault(p => p.PeriodID == commission.PeriodID && p.PeriodTypeID == commission.PeriodType);

                    typedCommission.Period = new Period();

                    //typedCommission.Period.PeriodID = commission.PeriodID;
                    //typedCommission.Period.PeriodTypeID =commission.PeriodType;
                    //typedCommission.Period.PeriodDescription = commission.PeriodDescription;

                    if (period != null)
                    {
                        typedCommission.Period = period;
                    }

                    results.Add(typedCommission);
                }

                return(results.OrderByDescending(c => c.Period.StartDate));
            }
        }
Пример #30
0
        public static IEnumerable <AutoOrder> GetCustomerAutoOrders(int customerid, int?autoOrderID = null, bool includePaymentMethods = true)
        {
            var autoOrders      = new List <AutoOrder>();
            var detailItemCodes = new List <string>();

            var request = new GetAutoOrdersRequest
            {
                CustomerID      = customerid,
                AutoOrderStatus = AutoOrderStatusType.Active
            };

            if (autoOrderID != null)
            {
                request.AutoOrderID = (int)autoOrderID;
            }

            var aoResponse = ExigoDAL.WebService().GetAutoOrders(request);

            if (!aoResponse.AutoOrders.Any())
            {
                return(autoOrders);
            }

            foreach (var aor in aoResponse.AutoOrders)
            {
                autoOrders.Add((AutoOrder)aor);
            }

            detailItemCodes = autoOrders.SelectMany(a => a.Details.Select(d => d.ItemCode)).Distinct().ToList();


            var autoOrderIds     = autoOrders.Select(a => a.AutoOrderID).ToList();
            var createdDateNodes = new List <AutoOrderCreatedDate>();
            var aoDetailInfo     = new List <AutoOrderDetailInfo>();

            using (var context = ExigoDAL.Sql())
            {
                var nodeResults = context.QueryMultiple(@"
                    SELECT
                        AutoOrderID,
                        CreatedDate
                    FROM
                        AutoOrders
                    WHERE
                        AutoOrderID in @ids

                    SELECT
                        ItemCode,
                        SmallImageName,
                        IsVirtual
                    FROM Items
                    WHERE ItemCode in @itemcodes
                    ",
                                                        new
                {
                    ids       = autoOrderIds,
                    itemcodes = detailItemCodes
                });

                createdDateNodes = nodeResults.Read <AutoOrderCreatedDate>().ToList();
                aoDetailInfo     = nodeResults.Read <AutoOrderDetailInfo>().ToList();
            }

            foreach (var ao in autoOrders)
            {
                ao.CreatedDate = createdDateNodes.Where(n => n.AutoOrderID == ao.AutoOrderID).Select(n => n.CreatedDate).FirstOrDefault();

                foreach (var detail in ao.Details)
                {
                    var detailInfo = aoDetailInfo.Where(i => i.ItemCode == detail.ItemCode).FirstOrDefault();
                    detail.ImageUrl  = GlobalUtilities.GetProductImagePath(detailInfo.ImageUrl);
                    detail.IsVirtual = detailInfo.IsVirtual;
                }
            }

            if (includePaymentMethods)
            {
                // Add payment methods
                var paymentMethods = GetCustomerPaymentMethods(new GetCustomerPaymentMethodsRequest
                {
                    CustomerID = customerid
                });

                foreach (var autoOrder in autoOrders)
                {
                    IPaymentMethod paymentMethod;
                    switch (autoOrder.AutoOrderPaymentTypeID)
                    {
                    case 1: paymentMethod = paymentMethods.Where(c => c is CreditCard && ((CreditCard)c).Type == CreditCardType.Primary).FirstOrDefault(); break;

                    case 2: paymentMethod = paymentMethods.Where(c => c is CreditCard && ((CreditCard)c).Type == CreditCardType.Secondary).FirstOrDefault(); break;

                    case 3: paymentMethod = paymentMethods.Where(c => c is BankAccount && ((BankAccount)c).Type == BankAccountType.Primary).FirstOrDefault(); break;

                    default: paymentMethod = null; break;
                    }
                    autoOrder.PaymentMethod = paymentMethod;
                }
            }

            return(autoOrders);
        }