d2d.emegrendeles.hu/app/Http/Controllers/Admin/ProfitCenterController.php
E98Developer 68b7c35bef git init
2026-02-28 06:53:05 +01:00

268 lines
8.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Enums\DbStatusFieldEnum;
use App\Http\Controllers\Controller;
use App\Models\Supplier;
use App\Repositories\ProfitCenterRepository;
use App\Services\ProfitCenterService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\View\View;
class ProfitCenterController extends Controller
{
protected ProfitCenterService $service;
private bool $testMode = false;
public function __construct(ProfitCenterService $service)
{
$this->service = $service;
}
/**
* Display a listing of the resource.
*/
public function index(): View|JsonResponse
{
if (\request()->input('t') == 1) {
$options = [
'validate_all' => true,
'return_type' => 'both',
];
[$validate, $allValidations] = auth()->user()->ability(
['root', 'owner'],
['create-post', 'edit-user'],
$options
);
dd($allValidations);
dd(auth()->user()->hasRole('admin'));
return response()->json(['debug' => 'test']);
}
$retData = [];
// $retData['testMode']=($this->testMode)?'true':'false';
$retData['testMode'] = $this->testMode;
$retData['init'] = (bool) \request()->get('init', true);
return view('admin.profitCenter.index')->with($retData);
}
/**
* Show the form for creating a new resource.
*/
public function create(): View
{
$retData = [];
$retData['testMode'] = ($this->testMode) ? 'true' : 'false';
$retData['supplier'] = Supplier::orderBy('name', 'asc')->get()->toArray();
return view('admin.profitCenter.create')->with($retData);
return view('admin.profitCenter.create')->with([
'testMode' => ($this->testMode) ? 'true' : 'false',
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): Response|JsonResponse
{
$data = $this->getSupplierDataFromRequest($request);
$id = $this->service->add($data);
$ret['success'] = true;
$ret['data'] = $data;
$ret['id'] = $id;
if ($this->service->hasError()) {
$ret['success'] = false;
$ret['error'] = $this->service->getError();
}
return \response()->json($ret);
}
/**
* Display the specified resource.
*/
public function show(int $ProfitCenterId): Response|JsonResponse
{
return response()->noContent();
}
/**
* Show the form for editing the specified resource.
*/
public function edit(int $ProfitCenterId): View|JsonResponse|bool
{
$this->service->setRelation('address', 'contact', 'users', 'supplier');
// if(!$itemData=$this->service->getWithRelations($ProfitCenterId)){
if (! $itemData = $this->service->getWithAllRelations($ProfitCenterId)) {
return false;
}
$retData = [];
$retData['itemData'] = $itemData;
if (isset($retData['itemData']['users'][0])) {
$profitCenterUserData = $retData['itemData']['users'][0];
$retData['itemData']['userId'] = $profitCenterUserData['id'];
$retData['itemData']['userName'] = $profitCenterUserData['name'];
} else {
$profitCenterUserData = ['id' => '', 'name' => ''];
}
unset($retData['itemData']['users']);
$retData['testMode'] = ($this->testMode) ? 'true' : 'false';
$retData['init'] = false;
$retData['supplier'] = Supplier::orderBy('name', 'asc')->get()->toArray();
debug($retData);
if (\request()->input('t') == 1) {
echo '<pre>';
var_dump($itemData);
return response()->json($itemData);
}
return view('admin.profitCenter.create')->with($retData);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, int $ProfitCenterId): Response|JsonResponse
{
$data = $this->getSupplierDataFromRequest($request);
debug($data);
$this->service->update($ProfitCenterId, $data);
$ret['success'] = true;
$ret['data'] = $data;
$ret['id'] = $ProfitCenterId;
if ($this->service->hasError()) {
$ret['success'] = false;
$ret['error'] = $this->service->getError();
}
return \response()->json($ret);
}
/**
* Remove the specified resource from storage.
*/
public function destroy(int $id): Response|JsonResponse
{
$repository = new ProfitCenterService(new ProfitCenterRepository);
if ($repository->delete($id)) {
$ret = ['success' => true];
} else {
$ret = ['success' => false];
}
return \response()->json($ret);
}
public function getDataTableContent(): JsonResponse
{
$repository = new ProfitCenterRepository;
$ret = ['data' => []];
$items = $repository->getQueryWithRelations()->orderBy('name')->get()->toArray();
foreach ($items as $item) {
$data['id'] = $item['id'];
$data['name'] = $item['name'];
$data['hooreycaId'] = $item['hooreycaId'];
$data['nameId'] = $item['nameId'];
$data['created_at'] = formatterDateTime($item['created_at']);
$ret['data'][] = $data;
}
return \response()->json($ret);
}
private function getSupplierDataFromRequest(Request $request)
{
// dd($request->route('supplier'));
/** @var array $data */
$data = [];
$acceptedData = [
'name',
'hooreycaId',
'nameId',
'email',
'postCode',
'city',
'street',
'phone',
'mobil',
'userName',
'userPassword',
'userRePassword',
'note',
'canSee',
'addressEqual',
'multiAddress',
'user',
];
foreach ($acceptedData as $num => $key) {
$data[$key] = $request->get($key);
}
$data['status'] = DbStatusFieldEnum::active;
if ($contactId = $request->get('contactId')) {
$data['contactId'] = $contactId;
} else {
$data['contactId'] = [];
}
if ($addressId = $request->get('addressId')) {
$data['addressId'] = $addressId;
} else {
$data['addressId'] = [];
}
$hasDefaultValueNotNull = [
'addressEqual',
'multiAddress',
'canSee',
];
foreach ($hasDefaultValueNotNull as $key) {
if (array_key_exists($key, $data) && is_null($data[$key])) {
unset($data[$key]);
}
}
$data['supplierId'] = [];
if ($supplierNames = $request->get('supplier')) {
$data['supplierId'] = \App\Models\Supplier::whereIn('name', (array) $supplierNames)->get()->pluck('id')->toArray();
}
if ($request->file('logoFile')) {
$disk = 'image';
$diskPath = \Storage::disk($disk)->getAdapter()->getPathPrefix();
$pathPrefix = str_replace(public_path(), '', $diskPath);
$pathPrefix = ltrim($pathPrefix, DIRECTORY_SEPARATOR);
$pathPrefix = str_replace('\\', '/', $pathPrefix);
// ha van mar akkor torolni kell!!!
if ($request->route('profitCenter')) {
$profitCenter = \App\Models\ProfitCenter::with('attachment')->find($request->route('profitcenter'));
if ($profitCenter->logoFile) {
$file = 'images/supplierLogo/B9f65IlF62fEoNfLPmSFen8D8A2E0HUCHJcqHYDw.jpg';
// var_dump(str_replace($pathPrefix,'',$file));
\Storage::disk($disk)->delete(str_replace($pathPrefix, '', $profitCenter->logoFile));
}
}
$path = $request->file('logoFile')->store('/profitCenter', $disk);
$data['logoFile'] = $pathPrefix.$path;
}
return $data;
}
}