Edit File: ProfileController.php
<?php namespace App\Http\Controllers\Api\Delegate; use App\Enums\AuthUpdatesAttributesEnum; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Delegate\Profile\NewPhoneRequest; use App\Http\Requests\Api\Delegate\Profile\UpdateProfileRequest; use App\Http\Requests\Api\Delegate\Profile\VerifyCodeRequest; use App\Http\Resources\Api\Delegate\DelegateResource; use App\Models\Delegate; use App\Services\ProfileService; use App\Traits\ResponseTrait; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; class ProfileController extends Controller { use ResponseTrait; private $profileService; public function __construct() { $this->profileService = new ProfileService(Delegate::class); } public function profile(): JsonResponse { return $this->successData(new DelegateResource(auth()->user())); } // tradtional update profile public function update(UpdateProfileRequest $request): JsonResponse { try { DB::beginTransaction(); $user = $this->profileService->editProfile($request->validated())['user']; $this->profileService ->updateManyToManyRelation(relationName: 'neighborhoods', user: $user, request: $request['neighborhoods']); $this->profileService ->createHasOneRelation( relationName: 'bankAccount', user: $user, request: $request->validated(), conditions: ['bankable_type' => Delegate::class, 'bankable_id' => $user->id] ); DB::commit(); return $this->successMsg(__('apis.updated')); } catch (\Exception $exception) { DB::rollBack(); return $this->fail($exception->getMessage()); } } public function editProfileRequest(UpdateProfileRequest $request) { try { DB::beginTransaction(); $data = $this->profileService->editProfileRquest($request->validated()); DB::commit(); return $this->response($data['key'], $data['msg']); } catch (\Exception $exception) { DB::rollBack(); return $this->failMsg($exception); } } // change user phone public function changePhoneSendCode(): JsonResponse { $result = $this->profileService ->storeAtUpdates(type: AuthUpdatesAttributesEnum::Phone->value, user: auth()->user()); return $this->successData($result); } public function newPhoneSendCode(NewPhoneRequest $request): JsonResponse { $result = $this->profileService ->storeAtUpdates(type: AuthUpdatesAttributesEnum::NewPhone->value, user: auth()->user(), request: $request); return $this->successData($result); } protected function verifyCode(VerifyCodeRequest $request): JsonResponse { $result = $this->profileService->verifyCode(user: auth()->user(), request: $request); return $this->successMsg($result['msg']); } public function toggleProviderAvailability(): JsonResponse { $data = $this->profileService->toggleOrderReceivingAvailability(user: auth()->user()); return $this->response($data['key'], $data['msg'], $data['data']); } }
Back to File Manager