getUser(); return view('Frontend.Pages.profile.investor-profile', compact('user')); } public function edit() { $user = $this->getUser(); return view('Frontend.Pages.profile.investor-profile-edit', compact('user')); } public function update(Request $request) { dd($request->all()); $validator = Validator::make($request->all(), [ 'name' => 'required|regex:/^[a-zA-Z ]+$/u|max:255', // 'email' => 'required|unique:users,email,' . $request->id . '', // 'contact_number' => 'required|numeric|digits:10|unique:users,contact_number,' . $request->id . '', 'profile_image' => 'image|mimes:jpeg,jpg,png|max:2000', 'address' => 'max:255' ], [ 'required' => 'The :attribute field must be required', // 'unique' => 'The :attribute field must be unique', // 'numeric' => 'The :attribute field must be in digits', // 'digits' => 'The :attribute field must have 10 digits', // 'profile_image.mimes' => 'The :attribute can only be of type jpeg,jpg,png' ]); $validationMessage = $this->validationError($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } $user = User::where('id', $request->id)->first(); $image = $request->has('profile_image') ? $this->imageUpload($request->profile_image, $request->id) : $user->getRawOriginal('profile_image'); $addUser = User::where('id', $request->id)->update([ 'name' => $request->name, // 'contact_number' => $request->contact_number, 'address' => $request->address ?? null, // 'email' => $request->email, 'profile_image' => $image, ]); if ($addUser) { return response()->json(['status' => 200, 'message' => 'Details Updated Successfully!']); } return response()->json(['status' => 400, 'message' => 'Error Updating Details!']); } public function imageUpload($image, $id) { $user = User::where('id', $id)->first(); if ($image) { if (\File::exists(public_path('/uploads/profile/img/' . $user->getRawOriginal('profile_image') . ''))) { \File::delete(public_path('/uploads/profile/img/' . $user->getRawOriginal('profile_image') . '')); } $profileImageName = time() . '.' . $image->extension(); $image->move(public_path('/uploads/profile/img'), $profileImageName); return $profileImageName; // $updateCompanyLogo = User::where('id', $request->id)->update([ // 'profile_image' => $profileImageName, // ]); } } public function updateAPI(Request $request) { // dd($request->profile_image == null); $validator = Validator::make($request->all(), [ 'name' => 'required', // 'email' => 'required', // 'contact_number' => 'required|min:10|max:10|unique:users,contact_number,' . $request->user()->id . '', 'profile_image' => 'nullable|image|mimes:jpeg,jpg,png|max:2000', 'address' => 'required' ], [ 'required' => 'The :attribute field must be required', 'unique' => 'The :attribute field must be unique', 'min' => 'The :attribute field must be :min digits', 'max' => 'The :attribute field must be :max digits' ]); $validationMessage = $this->validationErrorWithoutBr($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } $user = User::find($request->user()->id); // if ($request->has('profile_image')) { // if (\File::exists(public_path('/uploads/profile/img/' . $user->profile_image . ''))) { // \File::delete(public_path('/uploads/profile/img/' . $user->profile_image . '')); // } // // dd('inside'); // $profileImageName = time() . '.' . $request->profile_image->extension(); // $request->profile_image->move(public_path('/uploads/profile/img'), $profileImageName); // $updateCompanyLogo = User::where('id', $request->user()->id)->update([ // 'profile_image' => $profileImageName, // ]); // } // dd($user); if($request->profile_image) { // $image = $request->has('profile_image') ? $this->imageUpload($request->profile_image, $request->user()->id) : $user->getRawOriginal('profile_image'); $image = $this->imageUpload($request->profile_image, $request->user()->id); } // dd($image); $addUser = User::where('id', $request->user()->id)->update([ 'name' => $request->name, // 'email' => $request->email, // 'contact_number' => $request->contact_number, 'address' => $request->address, 'profile_image' => $request->profile_image ? $image : $user->getRawOriginal('profile_image'), ]); if ($addUser && $user->email != $request->email && $user->contact_number != $request->contact_number) { //update $validator = validator::make($request->all(), [ 'email' => 'required|unique:users,email', 'contact_number' => 'required|unique:users,contact_number,' . $request->user()->id . '', ], [ 'required' => 'The :attribute field must be required', 'unique' => 'The :attribute field must be unique', ]); $validationMessage = $this->validationErrorWithoutBr($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } // dd('both'); $emailotp = rand(1000, 9999); $mailData = [ 'title' => 'Mail from Jerichoalternatives.in', 'body' => 'This is for testing email using smtp.' ]; Mail::to($request->email)->send(new OtpMail($mailData, $emailotp)); //mobile no, // $validator = validator::make($request->all(), [ // 'contact_number' => 'required|unique:users,contact_number,' . $request->user()->id . '', // ], [ // 'required' => 'The :attribute field must be required', // 'unique' => 'The :attribute field must be unique', // ]); $otp = rand(1000, 9999); // Session::put('contact_number', $request->newcontact_number); // Session::put('mobile_otp', $otp); $this->thirdPartyOTP($request->contact_number, $otp); $usersOTPS = UserOtpModel::updateOrCreate( ['user_id' => $user->id], [ 'email_otp' => $emailotp, 'contact_otp' => $otp, 'expire_at' => Carbon::now()->addMinutes('5'), ] ); return response()->json([ 'status' => 200, 'message' => 'Details Updated Successfully!', 'email_otp' => $emailotp, 'mobile_otp' => $otp ]); } else if ($addUser && $user->email != $request->email) { //update $validator = validator::make($request->all(), [ 'email' => 'required|unique:users,email', ], [ 'required' => 'The :attribute field must be required', 'unique' => 'The :attribute field must be unique', ]); $validationMessage = $this->validationErrorWithoutBr($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } // dd('email'); $emailotp = rand(1000, 9999); $mailData = [ 'title' => 'Mail from Jerichoalternatives.in', 'body' => 'This is for testing email using smtp.' ]; Mail::to($request->email)->send(new OtpMail($mailData, $emailotp)); $usersOTPS = UserOtpModel::updateOrCreate( ['user_id' => $user->id], [ 'email_otp' => $emailotp, // 'contact_otp' => $otp, 'expire_at' => Carbon::now()->addMinutes('5'), ] ); return response()->json(['status' => 200, 'message' => 'Details Updated Successfully!', 'email_otp' => $emailotp]); } else if ($addUser && $user->contact_number != $request->contact_number) { //mobile no, $validator = validator::make($request->all(), [ 'contact_number' => 'required|unique:users,contact_number,' . $request->user()->id . '', ], [ 'required' => 'The :attribute field must be required', 'unique' => 'The :attribute field must be unique', ]); $validationMessage = $this->validationErrorWithoutBr($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } // dd('mobile'); $otp = rand(1000, 9999); // Session::put('contact_number', $request->newcontact_number); // Session::put('mobile_otp', $otp); $this->thirdPartyOTP($request->contact_number, $otp); $usersOTPS = UserOtpModel::updateOrCreate( ['user_id' => $user->id], [ // 'email_otp' => $emailotp, 'contact_otp' => $otp, 'expire_at' => Carbon::now()->addMinutes('5'), ] ); return response()->json(['status' => 200, 'message' => 'Details Updated Successfully!', 'mobile_otp' => $otp]); } if ($addUser) { return response()->json(['status' => 200, 'message' => 'Details Updated Successfully!']); } return response()->json(['status' => 400, 'message' => 'Error Updating Details!'], 400); } public function verifyOtpAPI(Request $request) { try { $isVerificationFor = $request->is_verify_for; //1=email, 2=mobile , $userId = $request->user()->id; $userOtpData = UserOtpModel::where('user_id', $userId)->first(); $userData = User::where('id', $userId)->first(); if (!$userOtpData || !$userData) { return response()->json(['status' => 400, 'message' => 'User Data Not Found in database'], 400); } if ($isVerificationFor == 1) { $emailOtp = $request->email_otp; $emailToUpdate = $request->email; $userOtpData = UserOtpModel::where('user_id', $userId)->where('email_otp', $emailOtp)->first(); if (!$userOtpData) { return response()->json(['status' => 400, 'message' => 'OTP Did Not Matched!'], 400); } if (now() > $userOtpData->expire_at) { return response()->json(['status' => 400, 'message' => 'OTP has been expired!'], 400); } $userData->email = $emailToUpdate; $userData->save(); } if ($isVerificationFor == 2) { $contactOtp = $request->contact_otp; $contactToUpdate = $request->contact_no; $userOtpData = UserOtpModel::where('user_id', $userId)->where('contact_otp', $contactOtp)->first(); if (!$userOtpData) { return response()->json(['status' => 400, 'message' => 'OTP Did Not Matched!'], 400); } if (now() > $userOtpData->expire_at) { return response()->json(['status' => 400, 'message' => 'OTP has been expired!'], 400); } $userData->contact_number = $contactToUpdate; $userData->save(); } return response()->json(['status' => 200, 'message' => 'Your OTP verified Successfully!']); } catch (\Exception $e) { return response()->json(['status' => 400, 'message' => 'Error Updating Details!'], 400); } } public function resendOtpForProfileUpdate(Request $request) { try { $type = $request->type; $user_id = request()->user()->id; $credential = $request->credential; $otp = rand(1000, 9999); // $getUser = User::find($user_id); if ($type == 1) { // type 1 for email otp // $email = $getUser->email; $mailData = [ 'title' => 'Mail from Jerichoalternatives.in', 'body' => 'This is for testing email using smtp.' ]; Mail::to($credential)->send(new OtpMail($mailData, $otp)); UserOtpModel::where('user_id', $user_id)->update(['email_otp' => $otp, 'expire_at' => Carbon::now()->addMinutes(2)]); } else if ($type == 2) { // $mobileNumber = $getUser->contact_number; $this->thirdPartyOTP($credential, $otp); UserOtpModel::where('user_id', $user_id)->update(['contact_otp' => $otp, 'expire_at' => Carbon::now()->addMinutes(2)]); } return response()->json([ 'status' => 200, 'message' => 'OTP has been send', ]); } catch (\Exception $e) { return response()->json(['message' => $e->getMessage()], 400); } } public function getUser() { try { $user = User::find(auth()->guard('users')->user()->id); $user = collect([ 'name' => $user->name, 'email' => $user->email, 'contact_number' => $user->contact_number, 'address' => $user->address, 'profile_image' => $user->profile_image, ]); return ($user); // ->response() // ->setStatusCode(200); } catch (\Exception $e) { return response()->json(['message' => $e->getMessage()], 400); } } public function validationError($validator) { if ($validator->fails()) { $errors = $validator->errors(); $messages = ''; foreach ($errors->all() as $message) { $messages .= $message . ''; } return $messages; } } public function validationErrorWithoutBr($validator) { if ($validator->fails()) { $errors = $validator->errors(); $messages = ''; foreach ($errors->all() as $message) { $messages .= $message .'.'; } return $messages; } } public function sendEmailOTP(Request $request) { $validator = validator::make($request->all(), [ 'newEmail' => 'required|unique:users,email,' . Auth::guard('users')->user()->id . '', ], [ 'required' => 'The attribute field must be required', 'unique' => 'Email must be unique', ]); $validationMessage = $this->validationError($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } $otp = rand(1000, 9999); $mailData = [ 'title' => 'Mail from Jerichoalternatives.in', 'body' => 'This is for testing email using smtp.' ]; Session::put('newEmail', $request->newEmail); Session::put('otp', $otp); Mail::to($request->newEmail)->send(new OtpMail($mailData, $otp)); return response()->json([ 'status' => 200, 'message' => 'OTP has been sent to your email', ]); } public function sendEmailOTPApi(Request $request) { $validator = validator::make($request->all(), [ 'newEmail' => 'required|unique:users,email', ], [ 'required' => 'The attribute field must be required', 'unique' => 'The attribute field must be unique', ]); $validationMessage = $this->validationError($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } $otp = rand(1000, 9999); $mailData = [ 'title' => 'Mail from Jerichoalternatives.in', 'body' => 'This is for testing email using smtp.' ]; // Session::put('newEmail', $request->newEmail); // Session::put('otp', $otp); Mail::to($request->newEmail)->send(new OtpMail($mailData, $otp)); return response()->json([ 'status' => 200, 'message' => 'OTP has been sent to your email', 'your_otp' => $otp ]); } public function updateEmail(Request $request) { // dd('hello'); if ($request->email_otp) { if ((int) $request->email_otp == Session::get('otp')) { $updateUserProfile = User::where('id', Auth::guard('users')->user()->id)->update([ 'email' => Session::get('newEmail'), ]); Session::forget(['newEmail', 'otp']); return response()->json(['status' => 200, 'message' => 'Your email updated successfully']); } return response()->json(['status' => 201, 'message' => 'OTP invalid !']); } return response()->json(['status' => 201, 'message' => 'Please enter OTP']); } public function sendOTPNumber(Request $request) { // dd('hello'); $validator = validator::make($request->all(), [ 'newcontact_number' => 'required|unique:users,contact_number,' . Auth::guard('users')->user()->id . '', ], [ 'required' => 'The attribute field must be required', 'unique' => 'Phone number must be unique', ]); $validationMessage = $this->validationError($validator); if ($validationMessage) { return response()->json(['status' => 400, 'message' => $validationMessage]); } $otp = rand(1000, 9999); Session::put('contact_number', $request->newcontact_number); Session::put('mobile_otp', $otp); $this->thirdPartyOTP($request->newcontact_number, $otp); return response()->json([ 'status' => 200, 'message' => 'OTP has been sent to your contact number', ]); } public function thirdPartyOTP($number, $otp) { $curl = curl_init(); curl_setopt_array( $curl, array( CURLOPT_URL => 'https://restapi.smscountry.com/v0.1/Accounts/4F7T5SbGyV7HBrEHxmX4/SMSes/', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "Text": "Dear Investor, Your login OTP is ' . $otp . '. - Blue Feather Ventures Pvt Ltd.", "Number": "91' . $number . '", "SenderId": "BLUFVL", "DRNotifyUrl": "https://www.domainname.com/notifyurl", "DRNotifyHttpMethod": "POST", "Tool": "API" }', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'Authorization: Basic NEY3VDVTYkd5VjdIQnJFSHhtWDQ6emFXdFEyTlV3ZlZROHB6dGRvVlRZUFdibG01Y1AxRldsbWl2WlVrbg==' ), ) ); $response = curl_exec($curl); curl_close($curl); return $response; // return true; } public function updateContactNumber(Request $request) { // dd(Session::get('mobile_otp'), Session::get('contact_number'), $request->mobile_otp); if ($request->mobile_otp) { if ((int) $request->mobile_otp == Session::get('mobile_otp')) { $updateUserProfile = User::where('id', Auth::guard('users')->user()->id)->update([ 'contact_number' => Session::get('contact_number'), ]); Session::forget(['contact_number', 'mobile_otp']); return response()->json(['status' => 200, 'message' => 'Contact number updated successfully']); } return response()->json(['status' => 201, 'message' => 'OTP invalid !']); } return response()->json(['status' => 201, 'message' => 'Please enter OTP']); } public function readNotification(Request $request) { $id = $request->id; // dd(Auth::guard('users')->user()); // dd(getAllNotifications()); if ($id) { Auth::guard('users')->user()->unreadNotifications->where('id', $id)->markAsRead(); } $notifications = Auth::guard('users')->user()->notifications; // dd($notifications); $notificationHTML = ''; $count = 0; foreach ($notifications as $data) { $count++; $read_at = $data->read_at ? 'style="color:#808080"' : 'style="color:black"'; $oddEven = $count % 2 == 1 ? 'odd' : 'even'; // $notificationHTML .= "
" . $data->created_at->diffForHumans() . "