| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\Recipients;
- use App\Models\Prize;
- use App\Models\CheckIn;
- use App\Models\User;
- use App\Models\Department;
- use App\Http\Requests\StoreRecipientsRequest;
- use App\Http\Requests\UpdateRecipientsRequest;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- class RecipientsController extends Controller
- {
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index()
- {
- return Recipients::all();
- }
- public function index_by_activity(UpdateRecipientsRequest $request)
- {
- return Recipients::join('prizes', 'recipients.prize_id', '=', 'prizes.id')
- ->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);
- }
- }
|