mkA~(@^_^@)~PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT p0 search(); if (isset($this->hasPagination) && $this->hasPagination == false) { return $this->ApiResponse('200', __('success'), '', $modelResource->orderBy('id' , 'DESC')->get()); } return $this->paginatedResponse($modelResource->orderBy('id' , 'DESC')); } // get trashed models public function archive() { $recordsQuery = $this->search()->where('is_archived' , 0)->onlyTrashed(); return $this->paginatedResponse($recordsQuery); } public function store() { try { $request = app($this->request); DB::beginTransaction(); // Prepare data to create the record $recordData = $request->except('file', 'multi_file'); // Conditionally add admin_id if present in the request if ($request->has('admin_id')) { $recordData['admin_id'] = auth()->id(); } // Create the record $record = $this->model::create($recordData); // Attach media if provided if (method_exists($record, 'media')) { if ($request->multi_file && $request->file) { $record->media()->attach($request->file); $record->media()->attach($request->multi_file); } elseif ($request->multi_file) { $record->media()->attach($request->multi_file); } elseif ($request->file) { $record->media()->attach($request->file); } } // Create history DB::commit(); // Return response $recordResource = new $this->resource($record); return $this->apiResponse(Response::HTTP_CREATED, __('success'), __('created successfully'), $recordResource); } catch (\Exception $e) { DB::rollBack(); $this->log(0, $this->model, $e->getMessage(),$e); return $this->errorMessage($e); } } public function show(string $id) { $record = $this->model::find($id); if (!$record) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('resource not found')); } $recordResource = new $this->resource($record); return $this->apiResponse(Response::HTTP_OK, __('success'), '', $recordResource); } public function update(string $id) { try { $request = app($this->request); $record = $this->model::find($id); if (!$record) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('resource not found')); } DB::beginTransaction(); $record->update($request->except('admin_id' , 'file', 'multi_file')); // check if this model has media to attach and update the provided the media if (method_exists($record, 'media')) { if ($request->multi_file && $request->file) { $record->media()->sync($request->file); $record->media()->sync($request->multi_file); $record->media()->attach($request->file); // $record->media()->attach($request->multi_file); }elseif ($request->file) { $record->media()->sync($request->file); } elseif ($request->main_file) { $record->media()->sync($request->other_files); $record->media()->sync($request->main_file, ['type' => 'main']); } elseif ($request->multi_file) { $record->media()->sync($request->multi_file); } } // Attach permissions if provided DB::commit(); $recordResource = new $this->resource($record); return $this->apiResponse(Response::HTTP_OK, __('success'), __('Updated Successfully!'), $recordResource); } catch (\Exception $e) { DB::rollBack(); $this->log(0, $this->model, $e->getMessage(),$e); return $this->errorMessage($e); } } // soft delete public function destroy(string $id ) { try { $record = $this->model::find($id); if (!$record) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('resource_not_found')); } DB::beginTransaction(); $record->delete(); if(isset($this->relationMethods)){ foreach ($this->relationMethods as $relationMethod) { if ($record->$relationMethod()->count() > 0) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('messages.cant_delete')); } } } DB::commit(); return $this->apiResponse(Response::HTTP_OK, __('success'), __('deleted successfully')); } catch (\Exception $e) { DB::rollBack(); $this->log($id, $this->model, $e->getMessage(),$e); return $this->errorMessage($e); } } // delete for ever public function forceDelete(string $id) { try { $record = $this->model::onlyTrashed()->where('id', $id)->where('is_archived', 0)->first(); if (!$record) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('resource not found')); } DB::beginTransaction(); // check if the record has many to many media relationship and detach all associated records if (method_exists($record, 'media')) { $record->media()->detach(); } $record->update([ 'is_archived' => true, 'name' => "geex_deleted_" . fake()->randomNumber(6, true) . "_$record->name", 'username' => "geex_deleted_" . fake()->randomNumber(6, true) . "_$record->username", 'email' => "geex_deleted_" . fake()->randomNumber(6, true) . "_$record->email" ]); $this->createHistory($this->model, $record->id, 'deleted'); DB::commit(); return $this->apiResponse(Response::HTTP_OK, __('success'), __('deleted completely successfully')); } catch (\Exception $e) { DB::rollBack(); $this->log($id, $this->model, $e->getMessage(),$e); return $this->errorMessage($e); } } // restore deleted model public function restore(string $id) { $record = $this->model::onlyTrashed()->where('id', $id)->where('is_archived', 0)->first(); if (!$record) { return $this->apiResponse(Response::HTTP_OK, 'fail', __('resource not found')); } try { $record->restore(); return $this->apiResponse(Response::HTTP_OK, __('success'), __('restored successfully')); } catch (\Exception $e) { DB::rollBack(); $this->log($id, $this->model, $e->getMessage(),$e); return $this->errorMessage($e); } } }