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 '
';
            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;
    }
}