public function search(Request $request)
 {
     $paginationList = [];
     //$this->validate($request, Search::getValidatorRules());
     $searchFilters = Companies::getCompaniesSearchBy();
     $search = $request->get("search") ? $request->get("search") : Session::get('CompanySearch');
     Session::set('CompanySearch', $search);
     $companiesList = DB::table('Company')->where("Deleted", "=", NULL)->orderBy('Company_Full_Name', 'asc');
     if (count($searchFilters)) {
         $companiesList->where(function ($query) use($searchFilters, $search) {
             foreach ($searchFilters as $searchFilter) {
                 $query->where($searchFilter, 'like', "%{$search}%", "OR");
             }
         });
     }
     if ($companiesList->count()) {
         foreach ($companiesList->get() as $company) {
             if (strlen($company->Company_Full_Name)) {
                 $firstChar = strtolower(substr($company->Company_Full_Name, 0, 1));
                 if (!isset($paginationList[$firstChar])) {
                     $paginationList[$firstChar] = 0;
                 }
                 $paginationList[$firstChar] += 1;
             }
         }
         $activePage = $request->page ? $request->page : null;
         $companies = DB::table('Company')->select('Company.id_Company', 'Company.Company_Full_Name', 'Company.Year_Founded', 'Company.Website', 'Company.id_Employee_Size', 'Employee_Size.Employee_Size', 'Addresses.City', 'Addresses.State', 'Country.Country', 'Revenue_Stage.Revenue_Stage')->leftJoin('Employee_Size', 'Company.id_Employee_Size', '=', 'Employee_Size.id_Employee_Size')->leftJoin('Headquarters_Information', 'Company.id_Company', '=', 'Headquarters_Information.id_Company')->leftJoin('Addresses', 'Headquarters_Information.AddressId', '=', 'Addresses.AddressId')->leftJoin('Country', 'Addresses.id_Country', '=', 'Country.id_Country')->leftJoin('Revenue_Stage', 'Company.id_Revenue_Stage', '=', 'Revenue_Stage.id_Revenue_Stage')->whereNull("Deleted")->groupBy("Headquarters_Information.AddressId")->groupBy("Company.id_Company")->orderBy('Company_Full_Name', 'asc');
         if (count($searchFilters)) {
             $companies->where(function ($query) use($searchFilters, $search) {
                 foreach ($searchFilters as $searchFilter) {
                     $query->where($searchFilter, 'like', "%{$search}%", "OR");
                 }
             });
         }
         if (!is_null($activePage) && $activePage != "all") {
             $companies->where("Company_Full_Name", "like", "{$activePage}%");
         }
     } else {
         $companies = $companiesList;
         $activePage = "";
     }
     //$products = Products::whereNull("Deleted");
     $products = Products::whereNull("Deleted")->get();
     $employeeSize = EmployeeSize::all();
     $ProductsToShow = [];
     $ProductsToHide = [];
     foreach ($companies->get() as $company) {
         $ProductsToShow[$company->id_Company] = [];
         $ProductsToHide[$company->id_Company] = [];
         $itemQty = 0;
         foreach ($products as $product) {
             if ($product->id_Owner_Company == $company->id_Company) {
                 $itemQty++;
                 if ($itemQty > 1) {
                     $ProductsToHide[$company->id_Company][] = ["id" => $product->id_Product, "title" => $product->Product_Title];
                     //link_to(URL::route("admin.products.edit", $product->id_Product), $product->Product_Title, ["target"=>"_blank"]);
                 } else {
                     $ProductsToShow[$company->id_Company][] = ["id" => $product->id_Product, "title" => $product->Product_Title];
                 }
             }
         }
     }
     $employeeSize = EmployeeSize::all();
     return view("admin.companies.index", compact('companies', "products", "search", "employeeSize", "searchFilters", "paginationList", "activePage", "companiesSearchBy", "ProductsToHide", "ProductsToShow"));
 }