Edit File: BaseService.php
<?php namespace App\Services; use App\Notifications\BlockUser; use App\Services\User\WalletService; use App\Traits\UploadTrait; use Illuminate\Support\Facades\Notification; class BaseService { use UploadTrait; protected $model; public function __construct($model = null) { $this->model = $model; } public function all($paginateNum = 10) { return $this->model::search(request()->searchArray)->paginate($paginateNum); } public function allWithoutPagination() { return $this->model::all(); } public function create($request) { return $this->model::create($request); } public function find($id) { return $this->model::find($id); } public function edit($request, $id) { return $this->find($id)->update($request); } public function delete($id) { return $this->find($id)->delete(); } public function deleteAll($request): array { $requestIds = json_decode($request['data']); foreach ($requestIds as $id) { $ids[] = $id->id; } if ($this->model::whereIn('id', $ids)->get()->each->delete()) { return ['key' => 'success']; } else { return ['key' => 'failed']; } } public function changeStatus($id): array { $model = $this->find($id); $model->update(['status' => !$model->status]); $msg = $model->refresh()->status == 1 ? __('admin.active') : __('admin.dis_activate'); return ['key' => 'success', 'msg' => $msg, 'data' => $model]; } public function block($id): array { $user = $this->find($id); $user->update(['is_blocked' => !$user->is_blocked]); if ($user->refresh()->is_blocked == 1) { Notification::send($user, new BlockUser()); return ['msg' => __('admin.blocked')]; } else return ['msg' => __('admin.unblocked')]; } public function updateBalance($request, $id): array { $user = $this->find($id); if ($request->balance <= 0) { return ['key' => 'fail', 'msg' => __('admin.invalid_balance'), 'balance' => $user->refresh()->balance]; } if ($request->type == 0) { (new WalletService())->charge($user, $request->balance); } else { if ($user->wallet?->balance < $request->balance) { return ['key' => 'fail' ,'msg' => __('admin.balance_not_enough'), 'balance' => $user->wallet?->balance]; } (new WalletService())->debt($user->wallet, $request->balance); } return ['balance' => $user->wallet?->refresh()->balance,'key' => 'success', 'msg' => __('admin.balance_updated')]; } public function createManyToManyRelation($relationName, $user, $request): array { $row = $user->$relationName()->attach($request); return ['key' => 'success', 'msg' => __('apis.success'), 'data' => $row]; } public function updateManyToManyRelation($relationName, $user, $request): array { $row = $user->$relationName()->sync($request); return ['key' => 'success', 'msg' => __('apis.success'), 'data' => $row]; } public function createHasOneRelation($relationName, $user, $request, $conditions = []): array { $row = $user->$relationName()->updateOrCreate($conditions, $request); return ['key' => 'success', 'msg' => __('apis.success'), 'data' => $row]; } public function uploadMultiImages($requestedImageToUpload, $modelImagePath): array { $multiImages = []; if (count($requestedImageToUpload) > 0) { foreach ($requestedImageToUpload as $singleImage) { $multiImages[] = $this->uploadeImage($singleImage, $modelImagePath); } } return $multiImages; } }
Back to File Manager