176 lines
6.1 KiB
PHP
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();
|
|
}
|
|
}
|