/// <summary>
        /// Draws all of the integrations that are currently available.
        /// </summary>
        private void DrawAvailableIntegrations()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Integrations can also be found on the");
            GUILayout.Space(-3);
            if (GUILayout.Button("integrations page.", InspectorStyles.LinkStyle, GUILayout.Width(106)))
            {
                Application.OpenURL(GetIntegrationLink());
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            if (m_Integrations == null && m_IntegrationsReqest == null)
            {
                m_IntegrationsReqest = UnityEngine.Networking.UnityWebRequest.Get("https://opsive.com/asset/UltimateCharacterController/IntegrationsList.txt");
                m_IntegrationsReqest.SendWebRequest();
            }
            else if (m_Integrations == null && m_IntegrationsReqest.isDone && string.IsNullOrEmpty(m_IntegrationsReqest.error))
            {
                var splitIntegrations = m_IntegrationsReqest.downloadHandler.text.Split('\n');
                m_Integrations = new AssetIntegration[splitIntegrations.Length];
                var count = 0;
                for (int i = 0; i < splitIntegrations.Length; ++i)
                {
                    if (string.IsNullOrEmpty(splitIntegrations[i]))
                    {
                        continue;
                    }

                    // The data must contain info on the integration name, id, icon, and integraiton url.
                    var integrationData = splitIntegrations[i].Split(',');
                    if (integrationData.Length < 4)
                    {
                        continue;
                    }

                    m_Integrations[count] = new AssetIntegration(int.Parse(integrationData[0].Trim()), integrationData[1].Trim(), integrationData[2].Trim(), integrationData[3].Trim(), m_MainManagerWindow);
                    count++;
                }

                if (count != m_Integrations.Length)
                {
                    System.Array.Resize(ref m_Integrations, count);
                }
                m_IntegrationsReqest = null;
            }
            else if (m_IntegrationsReqest != null)
            {
                m_MainManagerWindow.Repaint();
            }

            // Draw the integrations once they are loaded.
            if (m_Integrations != null && m_Integrations.Length > 0)
            {
                var lastRect = GUILayoutUtility.GetLastRect();
                // Multiple integrations can be drawn on a single row depending on the width of the window.
                var cellsPerRow = (int)(Screen.width - m_MainManagerWindow.MenuWidth - 2) / (c_IntegrationCellWidth + c_IntegrationCellSpacing);
                m_ScrollPosition = GUI.BeginScrollView(new Rect(0, lastRect.y, Screen.width - m_MainManagerWindow.MenuWidth - 2, Screen.height - 64), m_ScrollPosition,
                                                       new Rect(0, 0, Screen.width - m_MainManagerWindow.MenuWidth - 25,
                                                                ((m_Integrations.Length / cellsPerRow) + (m_Integrations.Length % 2 == 0 ? 0 : 1)) * (c_IntegrationCellHeight + c_IntegrationCellSpacing)));
                var position = new Vector2(0, 20);
                // Draw each integration.
                for (int i = 0; i < m_Integrations.Length; ++i)
                {
                    position.x = (i % cellsPerRow) * c_IntegrationCellWidth;
                    m_Integrations[i].DrawIntegration(position + (new Vector2(0, c_IntegrationCellHeight + c_IntegrationCellSpacing) * (i / cellsPerRow)));
                }
                GUI.EndScrollView();
            }
            else
            {
                if (m_IntegrationsReqest == null)
                {
                    if (Event.current.type == EventType.Repaint)
                    {
#if UNITY_2018_3_OR_NEWER
                        m_IntegrationsReqest = UnityEngine.Networking.UnityWebRequest.Get("https://opsive.com/asset/UltimateCharacterController/IntegrationsList.txt");
                        m_IntegrationsReqest.SendWebRequest();
#else
                        m_IntegrationsReqest = new WWW("https://opsive.com/asset/UltimateCharacterController/IntegrationsList.txt");
#endif
                    }
                }
                else
                {
                    if (m_IntegrationsReqest != null && m_IntegrationsReqest.isDone && !string.IsNullOrEmpty(m_IntegrationsReqest.error))
                    {
                        EditorGUILayout.LabelField("Error: Unable to retrieve integrations.");
                    }
                    else
                    {
                        EditorGUILayout.LabelField("Retrieveing the list of current integrations...");
                    }
                }
            }
        }
 public int UpdateItem(Item theItem)
 {
     return(AssetIntegration.UpdateItem(theItem));
 }
 public int DeleteItem(Item theItem)
 {
     return(AssetIntegration.DeleteItem(theItem));
 }
 public Item GetItemByID(int itemID)
 {
     return(AssetIntegration.GetItemByID(itemID));
 }
 public int InsertItem(Item theItem)
 {
     return(AssetIntegration.InsertItem(theItem));
 }
 public List <Item> GetItemsList(bool allOffices = false, bool showDeleted = false)
 {
     return(AssetIntegration.GetItemsList(allOffices, showDeleted));
 }
 public List <Item> GetProductListByCompanyID()
 {
     return(AssetIntegration.GetProductListByCompanyID());
 }
 public int UpdateItemGroup(ItemGroup theItemGroup)
 {
     return(AssetIntegration.UpdateItemGroup(theItemGroup));
 }
 public int DeleteItemGroup(ItemGroup theItemGroup)
 {
     return(AssetIntegration.DeleteItemGroup(theItemGroup));
 }
 public ItemGroup GetItemGroupByID(int itemGroupID)
 {
     return(AssetIntegration.GetItemGroupByID(itemGroupID));
 }
 public int InsertItemGroup(ItemGroup theItemGroup)
 {
     return(AssetIntegration.InsertItemGroup(theItemGroup));
 }
 public List <ItemGroup> GetItemGroupsList(bool allCompanies = false, bool showDeleted = false)
 {
     return(AssetIntegration.GetItemGroupsList(allCompanies, showDeleted));
 }
 public int DeleteIngredient(Ingredient theIngredient)
 {
     return(AssetIntegration.DeleteIngredient(theIngredient));
 }
 public int UpdateIngredient(Ingredient theIngredient)
 {
     return(AssetIntegration.UpdateIngredient(theIngredient));
 }
 public int InsertIngredient(Ingredient theIngredient)
 {
     return(AssetIntegration.InsertIngredient(theIngredient));
 }
 public Ingredient GetIngredientByID(int IngredientID)
 {
     return(AssetIntegration.GetIngredientByID(IngredientID));
 }