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 Carbon\Carbon; 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|min:9', '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 $user; 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); $update_branshes = ['store_id' => $store->id , 'name_ar' => $request->name_ar , 'name_en' => $request->name_en]; $this->updateBranches($update_branshes); if ($store) { $olds = $store->timings; if ($request['days']) { $array = $request->days; $unique = array_unique($array); $times = []; foreach ($unique as $value){ $duplicated = array_keys(array_intersect($array, $unique), $value); $from = array_values(array_intersect_key($request->from, array_flip($duplicated))); $to = array_values(array_intersect_key($request->to, array_flip($duplicated))); $times[] = [$value=>['from'=>$from, 'to'=>$to]]; } foreach ($times as $values){ foreach ($values as $value){ $count = count($value['from']); for ($i = 0; $i < $count; $i++) { if ($value['from'][$i] && $value['to'][$i]) { $start = Carbon::createFromTimeString($value['from'][$i]); $end = Carbon::createFromTimeString($value['to'][$i]); for ($i2 = 0; $i2 < $count; $i2++) { if ($i2 != $i) { $previos_from = Carbon::createFromTimeString($value['from'][$i2]); $previos_to = Carbon::createFromTimeString($value['to'][$i2])->subHour(); if ($start->between($previos_from, $previos_to) || $end->between($previos_from, $previos_to, false)) { return response()->json(['key'=>'fail']); } } } } } } } if ($olds) { foreach ($olds as $old) { $old->delete(); } } if($request->days){ foreach ($request->days as $key => $value) { StoreTiming::create([ 'day' => $value , 'from' => $request->from[$key] , 'to' => $request->to[$key] , 'store_id' => $store->id ]); } } } } $url = route('stores_dashboard.get_edit_store'); $msg = trans('dashboard.alerts.updated_successfully'); return response()->json([ 'key' => 'success', 'msg'=>$msg, 'url' => $url, ]); } public function updateBranches(array $request) { $branches = Store::where('store_id', $request['store_id'])->get(); foreach ($branches as $branch) { $branch->update(['name' => [ 'ar' => $request['name_ar'], 'en' => $request['name_en'], ] ]); } } }
Back to File Manager