Files
freeu-project/app/Http/Controllers/Frontend/RegistrationController.php
Ritikesh yadav c661166e1d first commit
2024-03-28 14:52:40 +05:30

105 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers\Frontend;
use Mail;
use App\Mail\OtpMail;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Validator;
use Carbon\Carbon;
use App\Models\Frontend\User;
use App\Models\Tempuser;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Hash;
class RegistrationController extends Controller
{
// verify otp
public function verify_otp(Request $request)
{
// print_r($request->all());
// die();
$validator = Validator::make($request->all(), [
'user_id' => 'required',
// 'otp' => 'required'
]);
if ($validator->fails()) {
return response()->json(['error' => 'Please enter Otp', 'status' => 204]);
}
$temp_user = Tempuser::where('id', $request->user_id)->first();
// otp verification failed handling
$current_time = Carbon::now('Asia/colombo');
if ($temp_user->otp != $request->otp) {
return response()->json(['error' => 'Incorret OTP', 'status' => 400]);
} elseif ($temp_user->otp == $request->otp && $current_time->isAfter($temp_user->expire_at)) {
return response()->json(['error' => 'Your OTP has been expired', 'status' => 400]);
}
// validating otp
if ($temp_user->otp == $request->otp) {
$user = new User();
$user->name = $temp_user->name;
$user->email = $temp_user->email;
$user->contact_number = $temp_user->contact_number;
$user->password = $temp_user->password;
$user->is_verified = "1";
$user->expire_at = $temp_user->expire_at;
$user->save();
if ($user->id != '') {
$temp_user->delete();
return response()->json(['message' => 'OTP has been sent to your mail and phone', 'status' => 200]);
} else {
return response()->json(['error' => 'registration failed', 'status' => 404]);
}
} else {
return response()->json(['error' => 'Incorrect otp, please try again', 'status' => 204]);
}
}
// resend otp while login
public function request_otp(Request $request)
{
// $validator = Validator::make(
// $request->all(),
// [
// 'user_id' => 'required|exists:temp_users,id',
// ]
// );
// if ($validator->fails()) {
// return response()->json(['error' => $validator->errors()], 204);
// }
if (Session::has('user-registration')) {
$session = Session::get('user-registration');
$otp = rand(1000, 9999);
$session['otp'] = $otp;
$mailData = [
'title' => 'Mail from ItSolutionStuff.com',
'body' => 'This is for testing email using smtp.'
];
Mail::to($session['email'])->send(new OtpMail($mailData, $otp));
Session::put('user-registration', $session);
return response()->json(['message' => 'OTP has been sent to your mail and phone', 'status' => 200]);
} else {
return redirect()->route('register');
}
$user = Tempuser::where('id', $request->user_id)->first();
try {
if ($user) {
$user->expires_at = Carbon::now('Asia/colombo')->addMinutes(2);
$user->update();
return response()->json(['message' => 'OTP has been sent to your mail and phone', 'status' => 200]);
}
} catch (\Exception $e) {
return response()->json(['error' => 'Netwrok Error! Please try again after sometime.', 'status' => 500]);
}
}
}