<?
php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use App\UserData;
use App\UserBankDetail;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use Validator;
use Alert;
use App\Bonus;
use App\BonusHistory;
use App\TransactionHistory;
class UserController extends Controller
{
public $successStatus = 200;
public function login(Request $request){
echo $request->referral_code;
/* Log::info($request);
if(Auth::attempt(['mobile' => request('mobile'), 'password' =>
request('password')])){
return view('home');
}
else{
return Redirect::back ();
}*/
}
public function index(Request $request){
$referral_code = $request->query('referral');
return view('auth.register', compact('referral_code'));
}
public function registerStep1(Request $request)
{
//dd($request);
$validator = Validator::make($request->all(), [
'name' => 'required',
'mobile' => 'required|unique:users',
'reffered_by' => '',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$otp = rand(100000, 999999);
$key =
"3lhYftCFLD8mrPd5X0jnTWo2iZJe9gAMKSOcN7zpIxUVvuQwksGldcfYJDXNpQk6LmwqBPW3AbtxKM1g";
$route = "dlt";
$sender_id = "VTPLAY";
$message = "173069";
$language = "english";
$flash = "0";
$numbers = $request->mobile;
$message = urlencode($message);
//dd($message);
$data = "authorization=".$key."&route=".$route."&sender_id=".
$sender_id."&message=".$message."&variables_values=".$otp."&language=".
$language."&flash=".$flash."&numbers=".$numbers;
//echo 'https://www.fast2sms.com/dev/bulkV2?'.$data;exit;
$ch = curl_init('https://www.fast2sms.com/dev/bulkV2?'.$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
//dd($response);
curl_close($ch);
session([
'temp_user' => [
'name' => $request->name,
'mobile' => $request->mobile,
'reffered_by' => $request->reffered_by,
'otp' => $otp,
'otp_expires_at' => now()->addMinutes(5),
]
]);
return redirect()->route('register.step2');
}
public function showStep2Form()
{
return view('auth.verify_otp');
}
public function showStep3Form()
{
return view('auth.step_three');
}
public function registerStep2(Request $request)
{
$validator = Validator::make($request->all(), [
'otp' => 'required|digits:6',
]);
//dd(session('temp_user'));
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$sessionData = session('temp_user');
//dd( $sessionData);
//dd($sessionData);
if (!$sessionData) {
return redirect()->back()->withErrors(['otp' => 'Session expired'])-
>withInput();
}
if ($request->otp != $sessionData['otp'] || now()-
>greaterThan($sessionData['otp_expires_at'])) {
return redirect()->back()->withErrors(['otp' => 'Invalid or expired OTP'])-
>withInput();
}
//session()->forget('temp_user');
return redirect()->route('register.step3');
}
public function registerStep3(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => 'required|string|max:255|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$sessionData = session('temp_user');
//dd( $sessionData['reffered_by']);
if (!$sessionData) {
return redirect()->back()->withErrors(['error' => 'Session expired'])-
>withInput();
}
$uservplayid = substr(str_shuffle("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0,
5) . rand(111, 999);
$userreferralcode = substr(str_shuffle("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
0, 5) . rand(111, 999);
//dd($uservplayid);
$user = User::create([
'name' => $sessionData['name'],
'mobile' => $sessionData['mobile'],
'reffered_by' => $sessionData['reffered_by'],
'username' => $request->username,
'email' => $request->email,
'password' => bcrypt($request->password),
'user_type' => 2,
'vplay_id' => $request->username,
'referral_code' => $userreferralcode,
]);
$signup_bonus = Bonus::first();
if ($signup_bonus) {
$user->wallet = $signup_bonus->amount;
$user->save();
$bonus = new BonusHistory();
$bonus->user_id = $user->id;
$bonus->amount = $signup_bonus->amount;
$bonus->bonus_type = 'SignUp';
$bonus->save();
$order_id = 'order_' . rand(1111111111, 9999999999);
$trans_hist = new TransactionHistory();
$trans_hist->user_id = $user->id;
$trans_hist->payment_id = 0;
$trans_hist->order_id = $order_id;
$trans_hist->day = date('d');
$trans_hist->month = date('M');
$trans_hist->year = date('Y');
$trans_hist->paying_time = date('h:i A');
$trans_hist->amount = $signup_bonus->amount;
$trans_hist->add_or_withdraw = 'add';
$trans_hist->closing_balance = $signup_bonus->amount;
$trans_hist->remark = 'Signup Bonus';
$trans_hist->save();
}
$user_data = new UserData();
$user_data->user_id = $user->id;
$user_data-> vplay_id = $uservplayid;
$user_data->save();
$user_bank = new UserBankDetail();
$user_bank->user_id = $user->id;
$user_bank->save();
Auth::login($user);
session()->forget(['temp_user']);
return redirect('/user/dashboard');
}
public function loginWithOtp(Request $request ){
$loginField = $request->input('login_field');
$password = $request->input('password');
// Check if login field is email or mobile
$fieldType = filter_var($loginField, FILTER_VALIDATE_EMAIL) ? 'email' :
'mobile';
// Check if user is blocked
$user = User::where($fieldType, $loginField)->where('is_blocked', 1)->first();
if ($user) {
Alert::error('', 'Your Account is blocked');
return redirect()->back();
}
// Attempt to log in the user
if (Auth::attempt([$fieldType => $loginField, 'password' => $password])) {
$user = Auth::user();
if ($user->user_type == 1) {
return redirect('/admin/dashboard');
} elseif ($user->user_type == 2) {
return redirect('/user/dashboard');
} else {
return redirect('/employee/dashboard');
}
} else {
Alert::error('', 'Invalid Credentials');
return redirect()->back();
}
}
public function loginWithOtpForm(){
return view('auth/OtpLogin');
}
public function loginWithOtpForm1(){
return redirect("/referral");
}
public function rules(){
return view('user.rules');
}
public function info_conditions(){
return view('user.info_conditions');
}
}