Edit File: ProfileController.php
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Auth\ActivationRequest; use App\Http\Requests\Api\Profile\UpdatePasswordRequest; use App\Http\Requests\Api\Profile\UpdatePhoneRequest; use App\Http\Requests\Api\Profile\UpdateRequest; use App\Http\Requests\Api\Profile\UpdateStoreRequest; use App\Http\Resources\StoreProfileResource; use App\Http\Resources\UserResource; use App\Models\Setting; use App\Models\Store; use App\Models\StoreCategory; use App\Models\StoreTiming; use App\Models\StoreUpdate; use App\Models\UserAd; use App\Services\Store\HomeServices; use App\Traits\ApiTrait; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use Illuminate\Http\Request; use Illuminate\Support\Str; class ProfileController extends Controller { use ApiTrait, Uploadable, GeneralTrait; 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 store_show() { $user = auth('api')->user(); $store = $user->store; $data = new StoreProfileResource($store); return $this->dataReturn($data); } public function adProfit(Request $request) { $user = auth('api')->user(); $profit = Setting::where('key', 'points_per_video')->first()->value; // if (UserAd::where('user_id' , $user->id)->where('ad_id' , $request->ad_id)->first()) { // return $this->failMsg(__('auth.not_available')); // } $user->points += $profit; $user->update(); UserAd::create([ 'user_id' => $user->id, 'ad_id' => $request->ad_id, ]); return $this->successMsg(__('auth.profit_added')); } public function update(UpdateRequest $request) { $user = auth('api')->user(); // change avatar if ($request['edit_avatar']) { $request['avatar'] = $request['edit_avatar']; } // update user $user->update($request->except('edit_avatar')); $data['user'] = new UserResource($user); $msg = trans('dashboard.alerts.updated_successfully'); return $this->successReturn($msg, $data); } public function sendCurrentPhoneActivation() { auth('api')->user()->sendVerificationCode(); return $this->successMsg(trans('auth.activation_code_sent')); } public function changePhone(UpdatePhoneRequest $request) { $user = auth('api')->user(); // if phone changed $has_changed_phone = 'false'; if ($request->phone) { $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); if ($phone != $user->phone) { if ($this->is_unique('phone', $phone)) { $msg = trans('auth.phone_unique'); return $this->failMsg($msg); } $has_changed_phone = 'true'; } } $user->update(['changed_phone' => $phone]); //send verification code $user->sendVerificationCode($has_changed_phone); return $this->successMsg(trans('auth.activation_code_sent')); } public function changedPhoneActivation(ActivationRequest $request) { $user = $request->user(); if ($user->code != $request['code']) { $msg = trans('auth.invalid_code'); return $this->failMsg($msg); } $user->update([ 'completed_info' => 'true', ]); $user->confirmChangePhone(); $data['token'] = $user->createToken('Laravel Password Grant Client')->accessToken; $data['user'] = new UserResource($user); $msg = trans('dashboard.alerts.updated_successfully'); return $this->successReturn($msg, $data); } public function updatePassword(UpdatePasswordRequest $request) { auth('api')->user()->update([ 'password' => $request->password, ]); $msg = trans('auth.password_changed'); return $this->successMsg($msg); } public function wallet(Request $request) { $user = auth('api')->user(); $data['wallet'] = number_format($user->wallet, 2); $data['points'] = number_format($user->points, 2); return $this->successReturn('', $data); } public function changePoints(Request $request) { $profit = Setting::where('key', 'price_per_point')->first()->value; $wallet = $profit * auth('api')->user()->points; auth('api')->user()->update([ 'wallet' => auth('api')->user()->wallet + $wallet, 'points' => 0, ]); return $this->successMsg(__('auth.points_changed')); } public function update_store(UpdateStoreRequest $request) { $user = auth('api')->user(); $store = $user->store; $data = $request->except([ 'icon']); if ($request['icon']) { $data['icon'] = $this->uploadFile($request['icon'], 'stores', true, 250, null); } if ($request['name_ar'] || $request['name_en']) { // $branch_data = ['name_ar' => $request['name_ar'], 'name_en' => $request['name_en'], 'store_id' => $store->id]; // $branch_service_update = new HomeServices(); // $branch_service_update->updateBranches($branch_data); $data['name'] = [ 'ar' => $request['name_ar'] ? $request['name_ar'] : $store->getTranslation('name', 'ar'), 'en' => $request['name_en'] ? $request['name_en'] : $store->getTranslation('name', 'en'), ]; } StoreUpdate::updateOrCreate(['store_id' => $store->id], $data); // if ($request['days']) { // StoreTiming::where('store_id', $store->id)->delete(); // foreach (json_decode($request['days']) as $day) { // $timing = new StoreTiming(); // $timing->day = Str::lower($day->key); // $timing->from = $day->from ?? NULL; // $timing->to = $day->to ?? NULL; // $timing->store_id = $store->id; // $timing->is_closed = $day->is_closed ?? 'false'; // $timing->save(); // } // } // $store->update($data); $data = new StoreProfileResource($store); $msg = trans('auth.request_sent'); return $this->successReturn($msg, $data); } public function deleteProfile(Request $request) { $user = auth('api')->user(); if ($user->wallet > 0){ $msg = trans('auth.having_balance'); return $this->failMsg($msg); } if ($user->userOrders()->where('status' , '!=' , 'finished')->exists()) { $msg = trans('auth.having_progress_orders'); return $this->failMsg($msg); } if ($user->type == 'store') { $store = $user->store; if ( $store->orders()->where('status' , '!=' , 'finished')->exists()){ $msg = trans('auth.having_progress_orders'); return $this->failMsg($msg); } Store::where('store_id', $store->id)->delete(); $store->delete(); } $user->delete(); $msg = trans('dashboard.alerts.deleted_successfully'); return $this->successMsg($msg); } }
Back to File Manager