230 lines
9.5 KiB
PHP
230 lines
9.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\PrizeUser;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Prize;
|
|
use App\Models\User;
|
|
use App\Models\Parameter;
|
|
use Auth;
|
|
use Validator;
|
|
use Redirect;
|
|
class IndexController extends Controller
|
|
{
|
|
|
|
public function game() {
|
|
$prize_obj = Prize::leftJoin('prize_users as prizeuser', 'prizes.id', '=', 'prizeuser.prize_id')
|
|
->where('prize_status', 1)
|
|
->selectRaw('prizes.id, prize_name, prize_order, prize_number, count(prizeuser.id) as count_user, prize_image')
|
|
->groupBy('prizes.id', 'prize_name', 'prize_order', 'prize_number', 'prize_image')
|
|
->orderBy('prize_order', 'asc')->get();
|
|
$prize_arr = [];
|
|
$user_id = '';
|
|
if (Auth::check()) {
|
|
$user_id = Auth::user()->id;
|
|
}
|
|
$lasted_prize = PrizeUser::where('user_id', $user_id)->latest()->first();
|
|
$lasted_prize_id = '';
|
|
$lasted_prize_name = '';
|
|
if ($lasted_prize != null) {
|
|
$lasted_prize_id = $lasted_prize->prize_id;
|
|
}
|
|
foreach ($prize_obj as $prize_item) {
|
|
if ($prize_item->count_user < $prize_item->prize_number) {
|
|
$prize_arr[] = Array(
|
|
'id' => $prize_item->id,
|
|
'image' => 'public/images/' . $prize_item->prize_image,
|
|
'label' => "Giải " . $prize_item->prize_order,
|
|
'detail' => $prize_item->prize_name
|
|
);
|
|
}
|
|
if ($lasted_prize_id == $prize_item->id) {
|
|
$lasted_prize_name = $prize_item->prize_name;
|
|
}
|
|
}
|
|
$is_login = Auth::check();
|
|
$spined = 0;
|
|
if ($is_login) {
|
|
$spined = Auth::user()->spined;
|
|
}
|
|
// lay tham so he thong
|
|
$parameter_data = [];
|
|
$parameter_obj = Parameter::whereRaw('parameter_key in ("logo_image", "banner_image")')->get();
|
|
foreach ($parameter_obj as $parameter_item) {
|
|
$parameter_data[$parameter_item->parameter_key] = $parameter_item->parameter_value;
|
|
}
|
|
return view('frontend.index')->with('game_data', $prize_arr)
|
|
->with('is_login', $is_login)->with('spined', $spined)
|
|
->with('lasted_prize_name', $lasted_prize_name)
|
|
->with('parameter_data', $parameter_data);
|
|
}
|
|
|
|
public function login () {
|
|
if (Auth::check()) {
|
|
// lấy thông tin của lịch sử nhận giải
|
|
$history_data = PrizeUser::leftJoin('prizes as prize', 'prize_users.prize_id', '=', 'prize.id')
|
|
->where('prize_users.user_id', Auth::user()->id)
|
|
->select('prize.prize_name', 'prize_users.created_at')
|
|
->orderBy('created_at', 'desc')->get();
|
|
// nếu đã đăng nhập thì về trang chi tiết tài khoản
|
|
return view('frontend.customer.account')->with('history_data', $history_data);
|
|
} else {
|
|
return view('frontend.customer.account');
|
|
}
|
|
}
|
|
|
|
public function updatePrizeUser (Request $request) {
|
|
if (!Auth::check()) {
|
|
return '<div class="alert alert-danger text-center">Lỗi: Chưa đăng nhập.</div>';
|
|
}
|
|
$request_data = [
|
|
'user_id' => Auth::user()->id,
|
|
'prize_id' => $request->prize_id
|
|
];
|
|
PrizeUser::create($request_data);
|
|
$user_obj = User::find(Auth::user()->id);
|
|
$user_obj->spined = 1;
|
|
$user_obj->save();
|
|
$prize_obj = Prize::find($request->prize_id);
|
|
return view('frontend.game.luckywheel_prize')->with('prize_obj', $prize_obj)->render();
|
|
}
|
|
|
|
public function updateAccount (Request $request) {
|
|
$user_id = '';
|
|
if (!Auth::check()) {
|
|
return redirect()->back()->with('error', 'Có lỗi xảy ra, vui lòng đăng nhập lại');
|
|
}
|
|
$validator = Validator::make($request->all(), [
|
|
'name' => 'required|max:255',
|
|
'phone' => [
|
|
'required',
|
|
'regex:/^0[0-9]{9}$/',
|
|
],
|
|
'user_email' => 'nullable|email|max:255',
|
|
'birth_year' => 'nullable|integer|min:1900|max:' . date('Y'),
|
|
'address' => 'required|max:255',
|
|
'known_sis' => 'required|in:0,1',
|
|
'job' => 'required|max:255',
|
|
'password' => 'nullable|max:10'
|
|
], [
|
|
'name.required' => 'Nhập tên hiển thị',
|
|
'name.max' => 'Tên hiển thị quá dài',
|
|
'phone.required' => 'Nhập số điện thoại',
|
|
'phone.regex' => 'Số điện thoại không đúng định dạng',
|
|
'user_email.email' => 'Email không đúng định dạng',
|
|
'user_email.max' => 'Email quá dài',
|
|
'birth_year.integer' => 'Năm sinh phải là số',
|
|
'birth_year.min' => 'Năm sinh không hợp lệ',
|
|
'birth_year.max' => 'Năm sinh không hợp lệ',
|
|
'job.required' => 'Nhập nghề nghiệp',
|
|
'job.max' => 'Nghề nghiệp quá dài',
|
|
'password.max' => 'Độ dài tối đa 10'
|
|
]);
|
|
if ($validator->fails()) {
|
|
return Redirect::back()->withErrors($validator)->withInput();
|
|
}
|
|
$user_obj = User::find(Auth::user()->id);
|
|
$user_obj->name = mb_strtoupper($request->name, 'UTF-8');
|
|
$user_obj->phone = $request->phone;
|
|
$user_obj->user_email = $request->user_email;
|
|
$user_obj->birth_year = $request->birth_year;
|
|
$user_obj->address = $request->address;
|
|
$user_obj->known_sis = $request->known_sis;
|
|
$user_obj->job = $request->job;
|
|
if ($request->password != '') {
|
|
$user_obj->password = bcrypt($request->password);
|
|
}
|
|
$user_obj->save();
|
|
|
|
return redirect('game')->with('success', 'Cập nhật tài khoản thành công');
|
|
}
|
|
|
|
public function createAccount (Request $request) {
|
|
$validator = Validator::make($request->all(), [
|
|
'name' => 'required|max:255',
|
|
'phone' => [
|
|
'required',
|
|
'regex:/^0[0-9]{9}$/',
|
|
],
|
|
'user_email' => 'nullable|email|max:255',
|
|
'birth_year' => 'nullable|integer|min:1900|max:' . date('Y'),
|
|
'address' => 'required|max:255',
|
|
'known_sis' => 'required|in:0,1',
|
|
'job' => 'required|max:255',
|
|
'password' => 'nullable|max:10'
|
|
], [
|
|
'name.required' => 'Nhập tên hiển thị',
|
|
'name.max' => 'Tên hiển thị quá dài',
|
|
'phone.required' => 'Nhập số điện thoại',
|
|
'phone.regex' => 'Số điện thoại không đúng định dạng',
|
|
'user_email.email' => 'Email không đúng định dạng',
|
|
'user_email.max' => 'Email quá dài',
|
|
'birth_year.integer' => 'Năm sinh phải là số',
|
|
'birth_year.min' => 'Năm sinh không hợp lệ',
|
|
'birth_year.max' => 'Năm sinh không hợp lệ',
|
|
'address.required' => 'Nhập nơi sinh sống',
|
|
'address.max' => 'Nơi sinh sống quá dài',
|
|
'known_sis.required' => 'Chọn Có/Không cho câu hỏi về SIS',
|
|
'known_sis.in' => 'Giá trị không hợp lệ cho câu hỏi về SIS',
|
|
'job.required' => 'Nhập nghề nghiệp',
|
|
'job.max' => 'Nghề nghiệp quá dài',
|
|
'password.max' => 'Độ dài tối đa 10'
|
|
]);
|
|
if ($validator->fails()) {
|
|
return Redirect::back()->withErrors($validator)->withInput();
|
|
}
|
|
$phone = trim($request->phone);
|
|
$generatedEmail = $phone . '@phone.local';
|
|
$user_exist = User::where('phone', $phone)->first();
|
|
if ($user_exist != null) {
|
|
$user_exist->name = mb_strtoupper($request->name, 'UTF-8');
|
|
$user_exist->phone = $phone;
|
|
$user_exist->user_email = $request->user_email;
|
|
$user_exist->birth_year = $request->birth_year;
|
|
$user_exist->address = $request->address;
|
|
$user_exist->known_sis = $request->known_sis;
|
|
$user_exist->job = $request->job;
|
|
$user_exist->save();
|
|
Auth::loginUsingId($user_exist->id);
|
|
session()->regenerate();
|
|
return redirect('game')->with('success', 'Đăng nhập thành công');
|
|
}
|
|
$request_data = [
|
|
'name' => mb_strtoupper($request->name, 'UTF-8'),
|
|
'phone' => $phone,
|
|
'user_email' => $request->user_email,
|
|
'birth_year' => $request->birth_year,
|
|
'address' => $request->address,
|
|
'known_sis' => $request->known_sis,
|
|
'job' => $request->job,
|
|
'email' => $generatedEmail,
|
|
'password' => bcrypt('dq123'),
|
|
'status' => 1
|
|
];
|
|
$user_obj = User::create($request_data);
|
|
Auth::loginUsingId($user_obj->id);
|
|
session()->regenerate();
|
|
|
|
return redirect('game')->with('success', 'Đăng nhập thành công');
|
|
}
|
|
|
|
public function logout () {
|
|
Auth::logout();
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function register () {
|
|
if (Auth::check()) {
|
|
// nếu đã đăng nhập thì về trang chi tiết tài khoản
|
|
return view('frontend.customer.account');
|
|
} else {
|
|
return view('frontend.customer.register');
|
|
}
|
|
}
|
|
|
|
public function getGameRule () {
|
|
$data = Parameter::where('parameter_key', 'game_rule')->first();
|
|
return view('frontend.game.rule_popup')->with('data', $data)->render();
|
|
}
|
|
} |