Edit File: DelegateJoinrequestController.php
<?php namespace App\Http\Controllers\Site; use App\Http\Controllers\Controller; use App\Models\Setting; use App\Services\SettingService; use Illuminate\Http\Request; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use App\Models\User; use App\Models\Nationality; use App\Models\Region; use App\Models\City; use App\Models\Cartype; use App\Models\DelegateJoinrequest; use App\Models\Country; use App\Models\DelegateCompany; use App\Http\Requests\DelegationValidationJoinRequest; use Session; use Validator; use Auth; use App\Jobs\NewJoinierRequestNotify; class DelegateJoinrequestController extends Controller { use GeneralTrait, Uploadable; public function getAccount(){ $countries = Country::all(); return view('delegate_join_request.getAccount',compact('countries')); } public function checkAccount(Request $request){ $validator = Validator::make($request->all(), [ 'phone' => 'required|numeric|min:9', 'country_key' => 'required' ]); if ($validator->fails()) { $msg = implode(' , ',$validator->errors()->all()); return response()->json(['key'=>'fail','msg'=>$msg]); } $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); if($user = User::where('phone','=',$phone)->first()){ if($user->status == 'block'){ $msg = trans('auth.blocked_user'); return response()->json(['key'=>'fail','msg'=>$msg]); } $user->status = 'pending'; $user->update(); $user->sendVerificationCode(); Session::put('user',$user); return response()->json(['key'=>'success','url'=>route('user.verification')]); }else{ $msg = trans('auth.user_not_found'); return response()->json(['key'=>'fail','msg'=>$msg]); } } public function sendVerification(){ if(!Session::has('user')){ return redirect()->route('user.get_account'); } return view('delegate_join_request.sendVerification'); } public function resendCode(){ if(!Session::has('user')){ return route('user.get_account'); } $user = Session::get('user'); $user->sendVerificationCode(); return response()->json(['location' => route('user.verification') ,'key' => 'success', 'msg' => awtTrans('تم اعاده ارسال الكود بنجاح')]); } public function postVerificationCode(Request $request){ if(!Session::has('user')){ return redirect()->route('user.get_account'); } $user = Session::get('user'); $code = implode("", $request['code']); if($user->code == $code){ $user->markAsActive(); Auth::login($user); $user->delete(); $msg = trans('auth.account_deleted_successfully'); return response()->json(['key'=>'success','msg'=>$msg,'url'=>route('user.get_account')]); } $msg = trans('auth.invalid_code'); return response()->json(['key'=>'fail','msg'=>$msg]); } public function login(){ $countries = Country::all(); return view('delegate_join_request.login',compact('countries')); } public function terms(){ $setting = SettingService::appInformations(Setting::pluck('value', 'key')); return view('delegate_join_request.rules',compact('setting')); } public function postLogin(Request $request){ $validator = Validator::make($request->all(), [ 'phone' => 'required|numeric|min:9', 'country_key' => 'required' ]); if ($validator->fails()) { $msg = implode(' , ',$validator->errors()->all()); return response()->json(['key'=>'fail','msg'=>$msg]); } $number = $this->convert2english($request->phone); $phone = $this->phoneValidate($number); if($user = User::where('phone','=',$phone)->first()){ if($user->status == 'block'){ $msg = trans('auth.blocked_user'); return response()->json(['key'=>'fail','msg'=>$msg]); } $user->type = 'delegate'; $user->status = 'pending'; $user->update(); }else{ $user = new User(); $user->completed_info = 'false'; $user->status = 'pending'; $user->phone = $phone; $user->type = 'delegate'; $user->country_key = $request['country_key']; $user->save(); } $user->sendVerificationCode(); Session::put('user',$user); return response()->json(['key'=>'success','url'=>route('delegate_join_request.verification')]); } public function verification(){ if(!Session::has('user')){ return redirect()->route('delegate_join_request.login'); } return view('delegate_join_request.verification'); } public function resend(){ if(!Session::has('user')){ return route('delegate_join_request.login'); } $user = Session::get('user'); $user->sendVerificationCode(); return response()->json(['location' => route('delegate_join_request.verification') ,'key' => 'success', 'msg' => awtTrans('تم اعاده ارسال الكود بنجاح')]); } public function postVerification(Request $request){ if(!Session::has('user')){ return redirect()->route('delegate_join_request.login'); } $user = Session::get('user'); $code = implode("", $request['code']); if($user->code == $code){ $user->markAsActive(); Auth::login($user); return response()->json(['key'=>'success','url'=>route('delegate_join_request.join_request')]); } $msg = trans('auth.invalid_code'); return response()->json(['key'=>'fail','msg'=>$msg]); } public function invalidateCode(){ if(!Session::has('user')){ return response()->json(); } $user = Session::get('user'); $user->update(['code' => null]); $user->save(); } public function joinRequest(){ $nationalities = Nationality::all(); $regions = Region::all(); $cartypes = Cartype::all(); $companies = User::where('type' , 'company')->where('approve' , 'accept')->get(); return view('delegate_join_request.join_request',compact('nationalities','regions','companies','cartypes')); } public function changeRegion($id){ $region = Region::find($id); if(!$region){ $msg = 'هذه المنطقة غير متاحة'; return response()->json(['key'=>'fail','msg'=>$msg]); } $cities = City::where('region_id',$region->id)->get(); $view = view("delegate_join_request.cities",compact('cities'))->render(); return response()->json(['key'=>'success','html'=>$view]); } public function postJoinRequest(DelegationValidationJoinRequest $request){ $user = Auth::user(); // delete old join requests $user->update(['email' => $request->email]); $user->delegateJoinRequests()->delete(); $delegate_join_request_data = $request->validatedExcept('terms' , 'fullname_ar', 'fullname_en' ,'car_letters_ar' , 'car_letters_en' , 'car_numbers_en' , 'car_numbers_ar'); // insert new $delegate_join_request_data['fullname'] = ['ar' => $request['fullname_ar'] , 'en' => $request['fullname_en']]; $delegate_join_request_data['car_letters'] = ['ar' => $request['car_letters_ar'] , 'en' => $request['car_letters_en']]; $delegate_join_request_data['car_numbers'] = ['ar' => $request['car_numbers_ar'] , 'en' => $request['car_numbers_en']]; $delegate_join_request=DelegateJoinrequest::create($delegate_join_request_data+['phone' => $user->phone , 'email'=>$user->email , 'user_id'=> $user->id]); $user->update(['type' => 'delegate','approve'=>'pending' , 'name' => $request['fullname_ar']]); dispatch(new NewJoinierRequestNotify($delegate_join_request , 'delegate')); Session::forget('user'); Auth::logout(); return response()->json(['key'=>'success','url'=>route('delegate_join_request.successeful_request')]); } public function successefulRequest(){ return view('delegate_join_request.successeful_request'); } }
Back to File Manager