join('users', 'recipients.user_id', '=', 'users.user_id') ->select( 'prizes.activity_id', 'recipients.user_id', 'users.name as user_name', 'recipients.prize_id', 'prizes.name as prize_name', 'prizes.provider', 'recipients.created_at' ) ->where('prizes.activity_id', $request->activity_id) ->orderBy('recipients.created_at', 'DESC') ->get(); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\StoreRecipientsRequest $request * @return \Illuminate\Http\Response */ public function store(StoreRecipientsRequest $request) { Recipients::insert([ 'prize_id' => $request->prizeId, 'user_id' => $request->userId, 'is_claimed' => false, 'created_at' => now(), 'updated_at' => now(), ]); return 'success'; } public function store_patch(StoreRecipientsRequest $request) { $data = []; foreach ($request->userIdList as $userId) { array_push($data, [ 'prize_id' => $request->prizeId, 'user_id' => $userId, 'is_claimed' => false, 'created_at' => now(), 'updated_at' => now(), ]); } Recipients::insert($data); return 'success'; } /** * Display the specified resource. * * @param \App\Models\Recipients $recipients * @return \Illuminate\Http\Response */ public function show(Request $request, Recipients $recipients) { // } /** * Show the form for editing the specified resource. * * @param \App\Models\Recipients $recipients * @return \Illuminate\Http\Response */ public function edit(Recipients $recipients) { // } /** * Update the specified resource in storage. * * @param \App\Http\Requests\UpdateRecipientsRequest $request * @param \App\Models\Recipients $recipients * @return \Illuminate\Http\Response */ public function update(UpdateRecipientsRequest $request, Recipients $recipients) { Recipients::where('user_id', $request->userId)->update(['prize_id' => $request->prizeId]); return 'success'; } /** * Remove the specified resource from storage. * * @param \App\Models\Recipients $recipients * @return \Illuminate\Http\Response */ public function destroy(Recipients $recipients) { // } public function claim(Request $request) { $prize = ''; $prize_id = 0; $isClaimed = false; $user_id = $request->user_id; $activity_id = $request->activity_id; $user = CheckIn::where('activity_id', '=', $activity_id) ->where('user_id', '=', $user_id)->get()[0]; $department_id = CheckIn::where('user_id', '=', $user_id)->get()[0]->department_id; if ($department_id != '空') { $department_name = Department::where('department_id', '=', $department_id)->get()[0]->department_name; } else { $department_name = '空'; } if (Recipients::where('user_id', '=', $user_id)->exists()) { $recipients = Recipients::where('user_id', '=', $user_id)->get()[0]; $prize_id = $recipients->prize_id; //因為重新匯入後prize_id在prize下面有改動,但是在recipients下面沒有改動,因此會有問題產生 //檢查prize_id是不是在activity_id底下 $aid = Prize::where('id', '=', $prize_id)->get()[0]->activity_id; if ($aid == $activity_id) { $isRecipients = true; $isClaimed = $recipients->is_claimed; $prize = Prize::where('id', '=', $prize_id)->get()[0]->name; } else { $isRecipients = false; } } else { $isRecipients = false; } $response = [ 'user' => $user, 'isRecipients' => $isRecipients, 'isClaimed' => $isClaimed, 'prize' => $prize, 'prize_id' => $prize_id, 'department_name' => $department_name, ]; return response($response, 201); } public function isClaimed(UpdateRecipientsRequest $request) { $recipient = Recipients::where('prize_id', '=', $request->prize_id) ->where('user_id', '=', $request->user_id)->get()[0]; $recipient->is_claimed = true; $recipient->save(); return $recipient; } public function export(Request $request) { $recipients = Recipients::join('prizes', 'recipients.prize_id', '=', 'prizes.id') ->join('check_ins', 'recipients.user_id', '=', 'check_ins.user_id') ->select('prizes.activity_id', 'prizes.id', 'prizes.name as prize', 'check_ins.name', 'prizes.created_at') ->where('prizes.activity_id', '=', $request->activity_id) ->orderBy('prizes.id') ->get(); $filename = "recipients_list_" . date('Y_m_d_H_i_s', time()) . ".csv"; $filepath = "./upload/" . $filename; $handle = fopen($filepath, 'w+'); fputcsv($handle, array('prize', 'name', 'created_at')); foreach ($recipients as $element) { fputcsv($handle, array($element->prize, $element->name, $element->created_at)); } fclose($handle); $headers = array( 'Content-Type' => 'text/csv', ); return response()->download($filepath, $filename, $headers); } public function indexByPrize(Request $request) { // $prize_id = $request->prize_id; $prizeList = DB::select("SELECT [check_ins].[user_id],[name],[is_claimed],[alias] FROM [recipients] LEFT JOIN [check_ins] ON [recipients].[user_id] = [check_ins].[user_id] LEFT JOIN [departments] ON [check_ins].[department_id] = [departments].[department_id] WHERE [prize_id] = ? ORDER BY [check_ins].[department_id],[user_id];", [$prize_id]); $prize = DB::select("SELECT [name] FROM [prizes] WHERE [id] = ?;", [$prize_id]); $response = [ "prize" => $prize, "list" => $prizeList, ]; return response($response, 201); } }