Kaynağa Gözat

db table 確定(controller爆掉)

maa3606 2 yıl önce
ebeveyn
işleme
261a9c0344

+ 86 - 0
app/Http/Controllers/ActivityController.php

@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Activity;
+use App\Http\Requests\StoreActivityRequest;
+use App\Http\Requests\UpdateActivityRequest;
+
+class ActivityController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * 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\StoreActivityRequest  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(StoreActivityRequest $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \App\Http\Requests\UpdateActivityRequest  $request
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Http\Response
+     */
+    public function update(UpdateActivityRequest $request, Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Activity $activity)
+    {
+        //
+    }
+}

+ 11 - 0
app/Http/Controllers/CheckInController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\CheckIn;
+use App\Models\User;
 use App\Http\Requests\StoreCheckInRequest;
 use App\Http\Requests\UpdateCheckInRequest;
 
@@ -23,6 +24,16 @@ class CheckInController extends Controller
         return CheckIn::where('is_check_in', 'true')->get()->random($request->number);
     }
 
+    public function draw_user_with_place(StoreCheckInRequest $request)
+    {
+        return CheckIn::join('users', 'check_ins.user_id', '=', 'users.user_id')
+            -> select('check_ins.user_id', 'name', 'department_id', 'is_check_in', 'check_ins.updated_at')
+            -> where('is_check_in', 'true')
+            -> whereTime('check_ins.updated_at', '<=', '2023-02-06 03:20:00')
+            -> whereNotIn('department_id', ['U30'])
+            -> get();
+    }
+
     /**
      * Show the form for creating a new resource.
      *

+ 30 - 0
app/Http/Requests/StoreActivityRequest.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class StoreActivityRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return false;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, mixed>
+     */
+    public function rules()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 30 - 0
app/Http/Requests/UpdateActivityRequest.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class UpdateActivityRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return false;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, mixed>
+     */
+    public function rules()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 19 - 0
app/Models/Activity.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Activity extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+        'activity_name',
+        'date',
+        'place',
+        'user_id',
+        'deadline',
+    ];
+}

+ 5 - 1
app/Models/CheckIn.php

@@ -11,6 +11,10 @@ class CheckIn extends Model
 
     protected $fillable = [
         'user_id',
-        'is_check_in',
+        'name',
+        'department_id',
+        'region',
+        'is_checked_in',
+        'activity_id',
     ];
 }

+ 94 - 0
app/Policies/ActivityPolicy.php

@@ -0,0 +1,94 @@
+<?php
+
+namespace App\Policies;
+
+use App\Models\Activity;
+use App\Models\User;
+use Illuminate\Auth\Access\HandlesAuthorization;
+
+class ActivityPolicy
+{
+    use HandlesAuthorization;
+
+    /**
+     * Determine whether the user can view any models.
+     *
+     * @param  \App\Models\User  $user
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function viewAny(User $user)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can view the model.
+     *
+     * @param  \App\Models\User  $user
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function view(User $user, Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can create models.
+     *
+     * @param  \App\Models\User  $user
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function create(User $user)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can update the model.
+     *
+     * @param  \App\Models\User  $user
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function update(User $user, Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can delete the model.
+     *
+     * @param  \App\Models\User  $user
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function delete(User $user, Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can restore the model.
+     *
+     * @param  \App\Models\User  $user
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function restore(User $user, Activity $activity)
+    {
+        //
+    }
+
+    /**
+     * Determine whether the user can permanently delete the model.
+     *
+     * @param  \App\Models\User  $user
+     * @param  \App\Models\Activity  $activity
+     * @return \Illuminate\Auth\Access\Response|bool
+     */
+    public function forceDelete(User $user, Activity $activity)
+    {
+        //
+    }
+}

+ 23 - 0
database/factories/ActivityFactory.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Database\Factories;
+
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Activity>
+ */
+class ActivityFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 5 - 1
database/migrations/2023_02_06_030248_create_check_ins_table.php

@@ -16,7 +16,11 @@ return new class extends Migration
         Schema::create('check_ins', function (Blueprint $table) {
             $table->id();
             $table->string('user_id');
-            $table->boolean('is_check_in');
+            $table->string('name');
+            $table->string('department_id');
+            $table->string('region');
+            $table->boolean('is_checked_in');
+            $table->string('activity_id');
             $table->timestamps();
         });
     }

+ 36 - 0
database/migrations/2023_02_08_065236_create_activities_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('activities', function (Blueprint $table) {
+            $table->id();
+            $table->string('activity_name');
+            $table->dateTime('date');
+            $table->string('place');
+            $table->string('user_id');
+            $table->dateTime('deadline');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('activities');
+    }
+};

+ 31 - 0
database/seeders/ActivitySeeder.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+use App\Models\Activity;
+
+class ActivitySeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        Activity::truncate();
+        Activity::insert([
+            [
+                'activity_name' => '2023春酒',
+                'date' => '2023-03-17 17:00:00',
+                'place' => '亞新飯店',
+                'user_id' => '3444',
+                'deadline' => '2023-03-17 19:00:00',
+                'created_at' => now(),
+                'updated_at' => now(),
+            ],
+        ]);
+    }
+}

+ 15 - 2
database/seeders/CheckInSeeder.php

@@ -21,13 +21,26 @@ class CheckInSeeder extends Seeder
         $countries = json_decode($json);
 
         foreach ($countries as $key => $value) {
+            switch ($value->department_id) { 
+                case 'b00':
+                    $region = '南區';
+                    break; 
+                case 'b01':
+                    $region = '南區';
+                    break;
+                default:
+                    $region = '北區';
+            }
             CheckIn::create([
                 'user_id' => $value->user_id,
-                'is_check_in' => false,
+                'name' => $value->name,
+                'department_id' => $value->department_id,
+                'region' => $region,
+                'is_checked_in' => false,
+                'activity_id' => 1,
                 'created_at' => now(),
                 'updated_at' => now(),
             ]);
-        
         }
     }
 }

+ 15 - 8
resources/js/src/views/Draw.vue

@@ -67,14 +67,15 @@ export default {
       userList: [],
       prizeList: [],
       recipientsList: [],
+
       fields: ['獎項', '數量'],
-      prize: '',
-      prizeId: '',
-      placeSelected: ['北區', '中區', '南區', '來賓'],
       placeOption: ['北區', '中區', '南區', '來賓'],
-      selectMulti: '',
-      drawNumber: 1,
+      placeSelected: ['北區', '中區', '南區', '來賓'],
       drawMax: 1,
+      drawNumber: 1,
+
+      prize: '',
+      prizeId: '',
       drawUsers: [],
     }
   },
@@ -129,9 +130,7 @@ export default {
             if (p.data) {
               useJwt.postData('/api/recipients/store', { prizeId: this.prizeId, userId: element.user_id }).then(r => {
                 console.log(r.data);
-                useJwt.postData('/api/recipients/index').then(rl => {
-                  this.recipientsList = rl.data;
-                });
+                this.updateDataset();
               });
             } else {
               console.log(p.data);
@@ -140,6 +139,14 @@ export default {
         });
       });
     },
+    updateDataset() {
+      useJwt.postData('/api/prize/index').then(res => {
+        this.prizeList = res.data;
+      });
+      useJwt.postData('/api/recipients/index').then(res => {
+        this.recipientsList = res.data;
+      });
+    },
   },
 }
 </script>

+ 2 - 1
routes/api.php

@@ -90,7 +90,8 @@ Route::middleware(['auth:sanctum', 'abilities:Admin'])->group(function () {
     Route::post('/check_in/update', [CheckInController::class, 'update']);
     Route::post('/check_in/check_out', [CheckInController::class, 'check_out']);
     Route::post('/check_in/draw', [CheckInController::class, 'draw_user_when_check_in']);
-
+    Route::post('/check_in/drawP', [CheckInController::class, 'draw_user_with_place']);
+    
     // Prize
     Route::post('/prize/draw', [PrizeController::class, 'draw']);