public static string GetNestProId()
        {
            RestClient  client  = new RestClient($@"https://api.bigcommerce.com/stores/v68kp5ifsa/v2/customers/{customerId}");
            RestRequest request = BigCommerceHelper.CreateNewGetRequest();

            IRestResponse       customerApiResponse = client.Execute(request);
            BigCommerceCustomer parsedCustomer      = JsonConvert.DeserializeObject <BigCommerceCustomer>(customerApiResponse.Content);
            string nestProId = "";

            if (parsedCustomer.form_fields == null)
            {
                string      errorMessage = $"No Nest Pro Id found for Big Commerce customer {customerId}";
                string      title        = "Error in ImportOrdersToNetSuite";
                string      color        = "red";
                TeamsHelper teamsMessage = new TeamsHelper(title, errorMessage, color, Program.errorLogsUrl);
                teamsMessage.LogToMicrosoftTeams(teamsMessage);
            }
            else
            {
                foreach (var formField in parsedCustomer.form_fields)
                {
                    if (formField.name.ToLower().Contains("nest pro id"))
                    {
                        nestProId = formField.value;
                    }
                }
            }

            return(nestProId);
        }
        public static void SetTaxableStatus(BigCommerceCustomer customer, OrderToImport request)
        {
            // If there is any value in the tax_exemption_category, they are tax exempt
            request.Taxable = customer.tax_exempt_category == "";

            // If customer is taxable, set tax vendor to Avatax
            request.TaxVendor = request.Taxable ? "1990053" : " ";
        }
        public static BigCommerceCustomer GetCustomerData()
        {
            string customerUrl = $"https://api.bigcommerce.com/stores/v68kp5ifsa/v2/customers/{customerId}";

            RestClient  client  = new RestClient(customerUrl);
            RestRequest request = BigCommerceHelper.CreateNewGetRequest();

            IRestResponse       customerApiResponse = client.Execute(request);
            BigCommerceCustomer parsedCustomer      = JsonConvert.DeserializeObject <BigCommerceCustomer>(customerApiResponse.Content);

            return(parsedCustomer);
        }
        public void WillSetTaxableStatus()
        {
            BigCommerceCustomer customer = new BigCommerceCustomer();

            customer.tax_exempt_category = "G";

            OrderToImport netsuiteRequest       = new OrderToImport();
            bool          expectedTaxableStatus = false;

            NetSuiteController.SetTaxableStatus(customer, netsuiteRequest);

            Assert.Equal(expectedTaxableStatus, netsuiteRequest.Taxable);
        }
        public void WillSetCustomerName()
        {
            string firstName             = "Morty";
            string lastName              = "Smith";
            BigCommerceCustomer customer = new BigCommerceCustomer();

            customer.first_name = firstName;
            customer.last_name  = lastName;

            OrderToImport netsuiteRequest = new OrderToImport();

            NetSuiteController.SetCustomerName(customer, netsuiteRequest);

            Assert.Equal(firstName, netsuiteRequest.CustomerFirstName);
            Assert.Equal(lastName, netsuiteRequest.CustomerLastName);
            Assert.Equal(firstName + " " + lastName, netsuiteRequest.CustomerName);
        }
        public static OrderToImport CreateNetSuiteRequest(Order parsedOrder, ShippingAddress customerShippingAddress)
        {
            OrderToImport       netsuiteRequest = new OrderToImport();
            BigCommerceCustomer customerData    = BigCommerceController.GetCustomerData();

            SetTaxableStatus(customerData, netsuiteRequest);

            SetCustomerName(customerData, netsuiteRequest);

            SetBillingInformation(parsedOrder, netsuiteRequest);

            SetShippingInformation(customerShippingAddress, netsuiteRequest);

            SetOrderDetails(parsedOrder, netsuiteRequest);

            netsuiteRequest.NestProId = BigCommerceController.GetNestProId();

            Log.Information("netsuiteRequest {@netsuiteRequest}", netsuiteRequest);

            return(netsuiteRequest);
        }
 public static void SetCustomerName(BigCommerceCustomer customer, OrderToImport request)
 {
     request.CustomerFirstName = customer.first_name;
     request.CustomerLastName  = customer.last_name;
 }