Files
freeu-project/app/Http/Controllers/Admin/ManageFreeUInvestments/ManageCompaniesController.php
2024-06-25 12:46:28 +05:30

176 lines
6.1 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\ManageFreeUInvestments;
use App\Services\Admin\CompanyService;
use App\Traits\HttpResponse;
use App\Http\Controllers\Controller;
use App\Models\Company;
use App\Models\CompanyCategory;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\Exports\CompanyExport;
use DataTables;
class ManageCompaniesController extends Controller
{
use HttpResponse;
protected $company;
public function __construct(CompanyService $company)
{
$this->company = $company;
}
public function index()
{
$check = checkSidebarAccess('manage-manufacture-company');
if (!$check) {
abort(404);
}
return view('Admin.manage-freeu-investments.companies', [
'categories' => $this->company->getCategories()
]);
}
public function addCompany(Request $request)
{
$validator = Validator::make($request->all(), [
'company_name' => 'required|unique:companies,company_name',
'company_logo' => 'required',
], [
'required' => 'The :attribute field must be required',
'unique' => 'The :attribute field must be unique'
]);
$validationMessage = $this->validationError($validator);
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
}
$companyStorageName = time() . '.' . $request->company_logo->extension();
$request->company_logo->move(public_path('/uploads/manufactures_company/logo'), $companyStorageName);
$addCompany = Company::create([
'company_name' => $request->company_name,
'company_logo' => $companyStorageName,
]);
foreach ($request->categories as $categories) {
CompanyCategory::create([
'companies_id' => $addCompany->id,
'categories_id' => $categories
]);
}
return response()->json(['status' => 200, 'message' => 'Company Added!']);
}
public function getCompany(Request $request)
{
return response()->json(
[
'status' => 200,
'company' => $this->company->getCompany($request->id),
'categories' => $this->company->getCompanyCategory($request->id)
]
);
}
public function companyStatus(Request $request)
{
$statusUpdated = $this->company->updateStatus($request);
return $statusUpdated ?
response()->json(['status' => 400, 'message' => 'Error Changing Company Status!']) :
response()->json(['status' => 200, 'message' => 'Status Changed!']);
}
public function updateCompany(Request $request)
{
$id = $request->company_id;
$validator = Validator::make($request->all(), [
'company_name' => 'required|unique:companies,company_name,' . $id . '',
], [
'required' => 'The :attribute field must be required',
'unique' => 'The :attribute field must be unique'
]);
$validationMessage = $this->validationError($validator);
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
}
$company = Company::find($id);
if ($request->has('company_logo')) {
if (\File::exists(public_path('/uploads/manufactures_company/logo/' . $company->company_logo . ''))) {
\File::delete(public_path('/uploads/manufactures_company/logo/' . $company->company_logo . ''));
}
$companyStorageName = time() . '.' . $request->company_logo->extension();
$request->company_logo->move(public_path('/uploads/manufactures_company/logo'), $companyStorageName);
$updateCompanyLogo = Company::where('id', $id)->update([
'company_logo' => $companyStorageName,
]);
}
$updateCompanyName = Company::where('id', $id)->update([
'company_name' => $request->company_name,
]);
CompanyCategory::where('companies_id', $id)->delete();
collect($request->categories)->each(function ($item) use ($id) {
CompanyCategory::create([
'companies_id' => $id,
'categories_id' => $item
]);
});
return response()->json(['status' => 200, 'message' => 'Company Updated!']);
}
public function deleteCompany(Request $request)
{
$id = $request->company_id;
// dd($id);
$company = Company::find($id);
if (!$company) {
return response()->json(['status' => 400, 'message' => 'Error Deleting Company!!']);
}
Company::where('id', $id)->delete();
return response()->json(['status' => 200, 'message' => 'Company Deleted!!']);
}
public function validationError($validator)
{
if ($validator->fails()) {
$errors = $validator->errors();
$messages = '';
foreach ($errors->all() as $message) {
$messages .= $message . '</br>';
}
return $messages;
}
}
public function exportCompanies(Request $request)
{
$query = $request->post();
// $a = Excel::download(new CompanyExport, 'Company List.xlsx');
// Excel::import(new AlternativeInvestmentFundImport($category_type), $request->file('productFile'))
return Excel::download(new CompanyExport($query), 'Company List.xlsx');
}
public function getExcelfile()
{
$users = Company::all();
// $total = Company::count();
$total = 100;
Excel::download('excelfile', function ($excel) use ($users, $total) {
$excel->sheet('Excel', function ($sheet) use ($users, $total) {
$sheet->loadView('report.excel')->with("users", $users)->with("total", $total);
});
})->export('xls');
}
public function dataTableCompanies(Request $request)
{
return $this->company->datatable($request);
}
public function getCompaniesData()
{
return $this->company->getActiveCompanies();
}
}