Edit File: ProfileController.php
<?php namespace App\Http\Controllers\Api; use App\Models\User; use App\Models\Setting; use App\Models\DelegateJoinrequest; use App\Models\DelegateCompany; use App\Traits\ApiTrait; use App\Traits\Uploadable; use App\Rules\CheckCodeRule; use App\Traits\GeneralTrait; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use App\Http\Controllers\Controller; use App\Http\Resources\UserResource; use App\Http\Resources\UserCollection; use App\Http\Resources\DelegateResource; use App\Http\Resources\CompanyResource; use Illuminate\Support\Facades\Validator; use App\Http\Requests\Api\Profile\UpdateRequest; use App\Http\Requests\Api\Profile\UpdateDelegateRequest; use App\Http\Requests\Api\Auth\ActivationRequest; use App\Http\Requests\Api\Profile\changePhoneRequest; use App\Http\Requests\Api\Profile\changePhoneActivationRequest; use App\Http\Requests\Api\Profile\UpdateDelegateProfile; use Log; use App\Http\Requests\Api\Profile\chargeWalletRequest; class ProfileController extends Controller { use ApiTrait, Uploadable, GeneralTrait; public function show() { $user = auth('api')->user(); // dd( $user ); $data['user'] = new UserResource($user); // dd( $data ); if ('delegate' == $user->type) { $data['user'] = new DelegateResource($user); } if ('company' == $user->type) { $data['user'] = new CompanyResource($user); } return $this->dataReturn($data); } // public function show() { // $user = auth( 'api' )->user(); // $data[ 'user' ] = new UserResource( $user ); // $settings = Setting::all()->pluck( 'value', 'key' ); // $data[ 'telegram' ] = $settings[ 'telegram' ]??''; // return $this->dataReturn( $data ); // } public function update(UpdateRequest $request) { $user = auth('api')->user(); // change avatar if ($request['edit_avatar']) { $request['avatar'] = $request['edit_avatar']; } // $request[ 'avatar' ] = $request[ 'edit_avatar' ]; // if phone changed $has_changed_phone = 'false'; // if ( $request->phone ) { // $number = $this->convert2english( $request->phone ); // $phone = $this->phoneValidate( $number ); // if ( $phone != $user->phone ) { // $Unique = $this->is_unique( 'phone', $phone ); // if ( $Unique ) { // $msg = trans( 'auth.phone_unique' ); // return $this->failMsg( $msg ); // } // $request[ 'changed_phone' ] = $phone; // $has_changed_phone = 'true'; // } // } // update user $user->update($request->except('phone', 'edit_avatar')); //send verification code $user->sendVerificationCode($has_changed_phone); $data['user'] = new UserResource($user); $data['has_changed_phone'] = $has_changed_phone; $msg = trans('dashboard.alerts.updated_successfully'); return $this->successReturn($msg, $data); } public function chargeWallet(chargeWalletRequest $request) { $user = auth('api')->user(); $user->wallet+=$request['amount']; $user->update(); $msg = trans('dashboard.alerts.charged_successfully'); return $this->successMsg($msg); } public function changePhone(Request $request) { $user = auth('api')->user(); $user->sendVerificationCode(); $msg = trans('auth.activation_code_sent'); return $this->successMsg($msg); } public function changePhoneActivation(ActivationRequest $request) { $user = $request->user(); if ($user->code != $request['code']) { $msg = trans('auth.invalid_code'); return $this->failMsg($msg); } $data['user'] = new UserResource($user); return $this->successReturn('', $data); } public function changedPhone(changePhoneActivationRequest $request) { $user = auth('api')->user(); $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); if ($phone == auth()->user()->phone) { $msg = trans('auth.same_old'); return $this->failMsg($msg); } $has_changed_phone = 'true'; $user->update([ 'changed_phone' => $phone, 'changed_country_key' => $request->country_key ]); $user->sendVerificationCode(); $msg = trans('auth.activation_code_sent'); return $this->successMsg($msg); } public function changedPhoneActivation(ActivationRequest $request) { $user = $request->user(); if ($user->code != $request['code']) { $msg = trans('auth.invalid_code'); return $this->failMsg($msg); } $user->confirmChangePhone(); if($user->type=='delegate'){ $data[ 'user' ] = new DelegateResource( $user ); } if($user->type=='company'){ $data[ 'user' ] = new CompanyResource( $user ); } if($user->type=='user'){ $data[ 'user' ] = new UserResource( $user ); } // $data['user'] = new UserResource($user); $msg = trans('dashboard.alerts.updated_successfully'); return $this->successReturn($msg, $data); } public function completeInfo(UpdateRequest $request) { $user = auth('api')->user(); // $number = $this->convert2english($request->phone); // $phone = $this->phoneValidate($number); // $request['phone'] = $phone; $request['completed_info'] = 'true'; if ($request['edit_avatar']) { $request['avatar'] = $request['edit_avatar']; } $user->update($request->except('edit_avatar')); $data['user'] = new UserResource($user); return $this->successReturn('', $data); } public function completeDelegateInfo(UpdateDelegateRequest $request) { $delegate = auth('api')->user(); $delegate->update($request->only('name', 'city_id', 'avatar') + ['completed_info' => 'true']); DelegateJoinrequest::create($request->only('identity_card_image', 'identity_card_number', 'driving_license_image', 'car_license_image', 'car_numbers', 'category_id', 'car_type_id', 'bank_name', 'bank_acc_number', 'bank_iban_number', 'city_id') + ['user_id' => $delegate->id, 'phone' => $delegate->phone, 'fullname' => $delegate->name,'bank_account_number'=>$request['bank_acc_number']]); $data['user'] = new DelegateResource($delegate); return $this->successReturn('', $data); } public function updateDelegate(UpdateDelegateRequest $request) { $delegate = auth('api')->user(); $join = $delegate->delegateJoinRequests()->latest()->first(); $delegate->update($request->only('name', 'avatar', 'city_id')); $join->update($request->validated() + ['user_id' => $delegate->id, 'phone' => $delegate->phone, 'fullname' => $delegate->name]); $delegateData['delegate'] = new DelegateResource($delegate); $msg = trans('auth.you_need_to_be_approved'); return $this->dataReturn($delegateData, 200, $msg); } public function wallet(Request $request) { $user = auth('api')->user(); $data['wallet'] = number_format($user->wallet, 2); return $this->successReturn('', $data); } public function deleteProfile(Request $request) { $user = auth('api')->user(); $orders = 0; if ($user->type == 'delegate' || $user->type == 'company') { $orders = $user->delegateOrders()->whereIn('status', ['open', 'inprogress'])->count(); } else { $orders = $user->userOrders()->whereIn('status', ['open', 'inprogress'])->count(); } if ($orders > 0) { $msg = trans('auth.cant_delete_account'); return $this->failMsg($msg); } $user->delete(); $msg = trans('dashboard.alerts.deleted_successfully'); return $this->successMsg($msg); } public function changeLang(Request $request) { // Update the user's language preference auth('api')->user()->update(['lang' => $request->lang]); // Set the application locale to the new language App::setLocale($request->lang); // Return a success message return $this->successMsg(__('apis.lang_changed_successfully')); } public function updateAvailability(Request $request) { // Update the user's language preference auth('api')->user()->update(['is_available' => $request['is_available']]); $data['is_available'] = auth('api')->user()->refresh()->is_available; // Return a success message return $this->successReturn('', $data); } public function updateLocation(Request $request) { // Update the user's language preference $user = auth('api')->user(); auth('api')->user()->update([ 'lat' => $request['lat'], 'long' => $request['long'], 'address' => $request['address'] ]); $msg = trans('dashboard.alerts.updated_successfully'); $data['user'] = new DelegateResource($user); return $this->successReturn($msg, $data); } }
Back to File Manager