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.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.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); } }