Edit File: ClientService.php
<?php namespace App\Services\Entity; use App\Mail\SendMail; use App\Models\City; use App\Models\Country; use App\Models\User; use App\Models\WalletTransaction; use App\Notifications\BlockUser; use App\Notifications\NotifyUser; use App\Services\User\WalletService; use App\Traits\ResponseTrait; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Notification; class ClientService extends BaseService { use ResponseTrait; /** * Initializes the ClientService class. * * @param User $u The user model. */ public function __construct(User $user) { $this->model = $user; } public function create() { return view('admin.users.create', $this->commonVars()); } public function edit($id) { $user = $this->model->findOrFail($id); return view('admin.users.edit', array_merge($this->commonVars(), ['user' => $user])); } public function show($id) { $row = User::findOrFail($id); if (request()->ajax()) { if (request()->type == 'main_data') { $html = view('admin.users.parts.main_data', compact('row'))->render(); } if (request()->type == 'contacts') { $contacts = $row->contacts()->paginate(10); $html = view('admin.users.parts.contacts', compact('contacts'))->render(); } if (request()->type == 'wallet') { $transactions = WalletTransaction::where('wallet_id', $row->wallet->id)->paginate(10); $html = view('admin.users.parts.transactions', compact('transactions'))->render(); } if (request()->type == 'orders') { $orders = collect([]); $html = view('admin.users.parts.orders', compact('orders'))->render(); } return response()->json(['html' => $html]); } return view('admin.users.show', ['row' => $row]); } public function block($request) { $user = User::findOrFail($request->id); $user->update(['is_blocked' => !$user->is_blocked]); if ($user->refresh()->is_blocked){ Notification::send($user, (new BlockUser())); $user->devices()->update(['is_current' => false]); } return response()->json(['message' => $user->refresh()->is_blocked == 1 ? __('admin.blocked') : __('admin.unblocked')]); } public function notify($request) { if ($request->notify == 'notifications') { $client = ('all' == $request->id) ? User::latest()->get() : User::findOrFail($request->id); Notification::send($client, new NotifyUser($request->all())); } else { $mail = ('all' == $request->id) ? User::where('email', '!=', null)->get()->pluck('email')->toArray() : User::findOrFail($request->id)->email; Mail::to($mail)->send(new SendMail(['title' => 'اشعار اداري', 'message' => $request->message])); } return true; } function updateBalance($request, $id) { $user = User::findOrFail($id); if ($request->type == 0) { (new WalletService())->charge($user->wallet, $request->balance); } else { if ($request->balance > $user->wallet['available_balance']) return response()->json(['msg' => __('admin.balance_not_enough')], 422); (new WalletService())->debt($user->wallet, $request->balance); } return response()->json(['msg' => __('admin.balance_updated'), 'balance' => $user->refresh()->wallet->balance . ' ' . __('site.currency')]); } protected function commonVars() { return [ 'country_codes' => Country::pluck('key')->toArray(), 'countries' => Country::select(['id', 'name'])->get(), 'cities' => City::select(['id', 'name'])->get(), ]; } }
Back to File Manager