Edit File: ProfileController.php
<?php namespace App\Http\Controllers\Api\Provider; use App\Enums\AuthUpdatesAttributesEnum; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Provider\Profile\NewEmailRequest; use App\Http\Requests\Api\Provider\Profile\NewPhoneRequest; use App\Http\Requests\Api\Provider\Profile\UpdateProfileRequest; use App\Http\Requests\Api\Provider\Profile\VerifyCodeRequest; use App\Http\Resources\Api\Provider\ProviderResource; use App\Models\Provider; 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(Provider::class); } public function profile(): JsonResponse { return $this->successData(new ProviderResource(auth()->user())); } // tradtional update profile public function update(UpdateProfileRequest $request): JsonResponse { $user = $this->profileService->editProfile($request->validated())['user']; $this->profileService ->updateManyToManyRelation(relationName: 'subCategories', user: $user, request: $request['sub_categories']); $this->profileService ->createHasOneRelation(relationName: 'bankAccount', user: $user, request: $request->validated(), conditions: ['bankable_type' => Provider::class, 'bankable_id' => $user->id]); return $this->successMsg(__('apis.updated')); } 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 provider phone and email public function changePhoneSendCode(): JsonResponse { $result = $this->profileService ->storeAtUpdates(type: AuthUpdatesAttributesEnum::Phone->value, user: auth()->user()); return $this->response('success', __('auth.code_sent'), $result); } public function newPhoneSendCode(NewPhoneRequest $request): JsonResponse { $result = $this->profileService ->storeAtUpdates(type: AuthUpdatesAttributesEnum::NewPhone->value, user: auth()->user(), request: $request); return $this->successData($result); } public function changeEmailSendCode(): JsonResponse { $result = $this->profileService->storeAtUpdates(type: AuthUpdatesAttributesEnum::Email->value, user: auth()->user()); return $this->successData($result); } public function newEmailSendCode(NewEmailRequest $request): JsonResponse { $result = $this->profileService ->storeAtUpdates(type: AuthUpdatesAttributesEnum::NewEmail->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