Edit File: ProfileController.php
<?php namespace App\Http\Controllers\StoresDashboard; use App\Http\Controllers\Controller; use App\Http\Requests\UpdateStoreRequest; use App\Models\Category; use App\Models\Country; use App\Models\Store; use App\Models\StoreTiming; use App\Models\User; use App\Traits\ApiTrait; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Validator; class ProfileController extends Controller { // use ApiTrait, GeneralTrait, Uploadable; // public function get_edit_profile() { $user = Auth::user(); $countries = Country::all(); return view('stores_dashboard.settings.profile', compact('user', 'countries')); } public function post_edit_profile(Request $request) { $validator = Validator::make($request->all(), [ 'phone' => 'required|numeric|digits_between:9,10', 'name' => 'required|string|min:3|max:141', 'email' => 'required|email', 'avatar' => 'image|mimes:jpg,jpeg,svg,png', 'country_key' => 'required', ]); if ($validator->fails()) { $msg = implode(' , ',$validator->errors()->all()); return response()->json(['key'=>'fail','msg'=>$msg]); } $user = Auth::user(); $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); if ($phone != $user->phone) { $Unique_phone = $this->is_unique('phone', $phone); if ($Unique_phone) { $msg = trans('auth.phone_unique'); return response()->json(['key'=>'fail','msg'=>$msg]); } } if ($request['email'] != $user->email) { $Unique_email = $this->is_unique('email', $request['email']); if ($Unique_email) { $msg = trans('auth.email_unique'); return response()->json(['key'=>'fail','msg'=>$msg]); } } $request['phone'] = $phone; $user->update($request->all()); $url = route('stores_dashboard.get_edit_profile'); $msg = trans('dashboard.alerts.updated_successfully'); return response()->json([ 'key' => 'success', 'url' => $url, 'msg' => $msg, ]); } public function get_edit_password() { $user = Auth::user(); return view('stores_dashboard.settings.password', compact('user')); } public function post_edit_password(Request $request) { $validator = Validator::make($request->all(), [ 'current_password' => 'required', 'new_password' => 'required|min:6', 'password_confirmation' => 'required|same:new_password', ]); if ($validator->fails()) { $msg = implode(' , ',$validator->errors()->all()); return response()->json(['key'=>'fail','msg'=>$msg]); } $user = User::find(Auth::user()->id); if (Hash::check($request['current_password'], $user->password)) { $user->password = $request['new_password']; $user->update(); $msg = trans('auth.password_changed'); $url = route('stores_dashboard.index'); return response()->json([ 'key' => 'success', 'msg' => $msg, 'url' => $url, ]); } else { $msg = trans('auth.wrong_password'); return response()->json([ 'key' => 'fail', 'msg' => $msg, ]); } } public function get_edit_store() { $user = Auth::user(); $categories = Category::where('slug', '!=', 'free_delivery')->get(); $store = Store::where('user_id', $user->id)->first(); $timings = StoreTiming::where('store_id', $store->id)->get(); return view('stores_dashboard.settings.store', compact('user', 'categories', 'store', 'timings')); } public function post_edit_store(UpdateStoreRequest $request) { $user = Auth::user(); $data = $request->validated(); $store = Store::where('user_id', $user->id)->first(); if ($request['commercial_id'] != $store->commercial_id) { $Unique_commercial_id = Store::where("commercial_id", $request['commercial_id'])->first(); if ($Unique_commercial_id) { $msg = trans('auth.commercial_id_unique'); return $this->failMsg($msg); } } if ($request['category']) { $data['category'] = $request['category']; } if ($request->has('icon')) { $data['icon'] = $this->uploadFile($request->icon, 'stores', true, 250, null); } if ($request->has('cover')) { $data['cover'] = $this->uploadFile($request->cover, 'stores', true, 250, null); } if ($request->has('commercial_image')) { $data['commercial_image'] = $this->uploadFile($request->commercial_image, 'stores', true, 250, null); } $data['name'] = [ 'ar' => $data['name_ar'], 'en' => $data['name_en'], ]; $store->update($data); if ($store) { $olds = $store->timings; if ($olds) { foreach ($olds as $old) { $old->delete(); } } if ($request['days']) { foreach ($request['days'] as $key => $ex) { if ($request['from'][$key] && $request['to'][$key]) { $timing = new StoreTiming(); $timing->day = $request['days'][$key]; $timing->from = $request['from'][$key]; $timing->to = $request['to'][$key]; $timing->store_id = $store->id; $timing->save(); } } } } $url = route('stores_dashboard.get_edit_store'); $msg = trans('dashboard.alerts.updated_successfully'); return response()->json([ 'key' => 'success', 'msg'=>$msg, 'url' => $url, ]); } }
Back to File Manager