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")); }