160 lines
7.5 KiB
PHP
160 lines
7.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Prize;
|
|
use App\Models\PrizeUser;
|
|
use DateTime;
|
|
use Auth;
|
|
use File;
|
|
|
|
class PrizeController extends Controller
|
|
{
|
|
public function index() {
|
|
$title = "Danh sách giải thưởng";
|
|
$route_name_update = 'admin/prize/update';
|
|
$data = Prize::leftJoin('prize_users as user', 'prizes.id', '=', 'user.prize_id')
|
|
->groupBy('prizes.id', 'prizes.prize_name', 'prizes.prize_image', 'prizes.prize_content', 'prizes.prize_status',
|
|
'prizes.prize_number', 'prizes.prize_order')
|
|
->selectRaw('prizes.id, prizes.prize_name, prizes.prize_image, prizes.prize_content, prizes.prize_status,
|
|
prizes.prize_number, prizes.prize_order, count(user.id) as prize_count')
|
|
->orderBy('prize_status', 'desc')->orderBy('prize_order', 'asc')->orderBy('prize_name')->get();
|
|
return view('backend.prize.index')->with('title', $title)
|
|
->with('route_name_update', $route_name_update)
|
|
->with('data', $data);
|
|
}
|
|
|
|
public function getPrize(Request $request) {
|
|
$title = 'Cập nhật giải thưởng';
|
|
if ($request->id == 0) {
|
|
$title = 'Thêm mới giải thưởng';
|
|
}
|
|
$data = Prize::find($request->id);
|
|
|
|
return view('backend.prize.detail')
|
|
->with('data', $data)
|
|
->with('title', $title);
|
|
}
|
|
|
|
public function updatePrize (Request $request) {
|
|
$request->validate([
|
|
'prize_name'=>'required|max:255',
|
|
'prize_image'=>'mimes:jpg,png,jpeg,webp,jfif|max:2048|nullable',
|
|
'prize_status' => 'required|numeric',
|
|
'prize_number' => 'nullable|numeric',
|
|
'prize_order' => 'required|numeric'
|
|
], [
|
|
'prize_name.required' => 'Nhập tên giải thưởng',
|
|
'prize_name.max' => 'Tên giải thưởng không được quá 255 kí tự',
|
|
'prize_image.mimes' => 'Định dạng file không đúng',
|
|
'prize_image.max' => 'File upload quá lớn',
|
|
'prize_status.required' => 'Vui lòng chọn trạng thái',
|
|
'prize_status.numeric' => 'Trạng thái không đúng định dạng',
|
|
'prize_number.numeric' => 'Số lượng giải phải là kiểu số',
|
|
'prize_order.required' => 'Nhập số thứ tự giải',
|
|
'prize_order.numeric' => 'Số thứ tự giải phải là số'
|
|
]);
|
|
|
|
if ($request->id == 0){
|
|
// thêm mới
|
|
$request_data = $request->except(['id', 'prize_image']);
|
|
$request_data['user_id'] = Auth::user()->id;
|
|
$prize_obj = Prize::create($request_data);
|
|
$id = $prize_obj->id;
|
|
|
|
$this->updatePrizeImage($request, $prize_obj);
|
|
|
|
return redirect()->route('admin/prize/update', array('id' => $id))->with('success', 'Thêm mới thành công');
|
|
} else {
|
|
// cap nhat
|
|
$id = $request->id;
|
|
$prize_obj = Prize::find($id);
|
|
$prize_obj->prize_name = $request->prize_name;
|
|
$prize_obj->prize_content = $request->prize_content;
|
|
$prize_obj->prize_status = $request->prize_status;
|
|
$prize_obj->prize_number = $request->prize_number;
|
|
$prize_obj->prize_order = $request->prize_order;
|
|
$prize_obj->save();
|
|
|
|
$this->updatePrizeImage($request, $prize_obj);
|
|
|
|
return redirect()->back()->with('success', 'Cập nhật thành công');
|
|
}
|
|
|
|
}
|
|
|
|
public function updatePrizeImage ($request, $prize_obj) {
|
|
if($request->prize_image) {
|
|
$imageName = time(). '_' . Auth::user()->id . '.'.$request->prize_image->extension();
|
|
$request->prize_image->move(public_path('images/prize'), $imageName);
|
|
$previous_img_path = $prize_obj->prize_image;
|
|
$prize_obj->prize_image = 'prize/' . $imageName;
|
|
$prize_obj->save();
|
|
if($previous_img_path != '' && File::exists(public_path('images') . '/' . $previous_img_path)) {
|
|
File::delete(public_path('images') . '/' . $previous_img_path);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function deletePrize ($id) {
|
|
$prize_obj = Prize::find($id);
|
|
$previous_image_path = $prize_obj->prize_image;
|
|
if ($prize_obj->delete()) {
|
|
if($previous_image_path != '' && File::exists(public_path('images') . '/' . $previous_image_path)) {
|
|
File::delete(public_path('images') . '/' . $previous_image_path);
|
|
}
|
|
} else {
|
|
return redirect()->back()->with('error', 'Xóa giải thưởng thất bại');
|
|
}
|
|
return redirect()->back()->with('success', 'Xóa giải thưởng thành công');
|
|
}
|
|
|
|
public function prizeuser (Request $request) {
|
|
$title = "Danh sách người trúng giải";
|
|
$data_obj = PrizeUser::leftJoin('prizes as prize', 'prize_users.prize_id', '=', 'prize.id')
|
|
->leftJoin('users as user', 'prize_users.user_id', '=', 'user.id')
|
|
->select('user.id', 'user.name', 'user.phone', 'user.user_email', 'user.birth_year', 'user.job', 'user.address', 'user.known_sis', 'prize.prize_name', 'prize_users.created_at');
|
|
$fromdate = $request->tungay ?? date('d/m/Y', strtotime('-30 days'));
|
|
$todate = $request->denngay ?? date('d/m/Y');
|
|
|
|
if ($fromdate != '') {
|
|
$fromdate_arr = explode('/', $fromdate);
|
|
$from_date = DateTime::createFromFormat('Y-m-d', $fromdate_arr[2] . '-' . $fromdate_arr[1] . '-' . $fromdate_arr[0])->format('Y-m-d');
|
|
$data_obj = $data_obj->where('prize_users.created_at', '>=', $from_date);
|
|
}
|
|
|
|
if ($todate != '') {
|
|
$todate_arr = explode('/', $todate);
|
|
$to_date = DateTime::createFromFormat('Y-m-d', $todate_arr[2] . '-' . $todate_arr[1] . '-' . $todate_arr[0])->format('Y-m-d');
|
|
$data_obj = $data_obj->where('prize_users.created_at', '<=', $to_date . ' 23:59:00');
|
|
}
|
|
$data = $data_obj->orderBy('created_at', 'desc')->get();
|
|
return view('backend.prizeuser.index')
|
|
->with('title', $title)->with('data', $data)
|
|
->with('fromdate', $fromdate)->with('todate', $todate);
|
|
}
|
|
|
|
public function exportPrizeUser (Request $request) {
|
|
$data_obj = PrizeUser::leftJoin('prizes as prize', 'prize_users.prize_id', '=', 'prize.id')
|
|
->leftJoin('users as user', 'prize_users.user_id', '=', 'user.id')
|
|
->select('user.id', 'user.name', 'user.phone', 'user.user_email', 'user.birth_year', 'user.job', 'user.address', 'user.known_sis', 'prize.prize_name', 'prize_users.created_at');
|
|
$fromdate = $request->tungay;
|
|
$todate = $request->denngay;
|
|
|
|
if ($fromdate != '') {
|
|
$fromdate_arr = explode('/', $fromdate);
|
|
$from_date = DateTime::createFromFormat('Y-m-d', $fromdate_arr[2] . '-' . $fromdate_arr[1] . '-' . $fromdate_arr[0])->format('Y-m-d');
|
|
$data_obj = $data_obj->where('prize_users.created_at', '>=', $from_date);
|
|
}
|
|
|
|
if ($todate != '') {
|
|
$todate_arr = explode('/', $todate);
|
|
$to_date = DateTime::createFromFormat('Y-m-d', $todate_arr[2] . '-' . $todate_arr[1] . '-' . $todate_arr[0])->format('Y-m-d');
|
|
$data_obj = $data_obj->where('prize_users.created_at', '<=', $to_date);
|
|
}
|
|
$data = $data_obj->orderBy('created_at', 'desc')->get();
|
|
return view('backend.prizeuser.excel')->with('data', $data);
|
|
}
|
|
}
|