Преглед изворни кода

需求的修改,软删除,关闭功能

kely пре 1 година
родитељ
комит
ac6f59e346

+ 23 - 2
app/Http/Controllers/API/RequirementController.php

@@ -3,14 +3,17 @@
 namespace App\Http\Controllers\API;
 
 use App\Http\Controllers\Controller;
+use App\Http\Requests\API\Requirement\ClosedRequest;
 use App\Http\Requests\API\Requirement\CreateOrUpdateRequest;
 use App\Http\Requests\API\Requirement\LinkPlanRequest;
 use App\Http\Resources\API\AssetRequirementResource;
 use App\Http\Resources\API\RequirementResource;
+use App\Models\Enums\RequirementStatus;
 use App\Models\Plan;
 use App\Models\Requirement;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Validation\Rules\Enum;
 
 class RequirementController extends Controller
 {
@@ -66,9 +69,13 @@ class RequirementController extends Controller
     /**
      * Update the specified resource in storage.
      */
-    public function update(Request $request, string $id)
+    public function update(CreateOrUpdateRequest $request, string $id)
     {
         //
+        $requiremen = Requirement::findOrFail($id);
+        $requiremen->fill($request->all());
+        $requiremen->save();
+        return $this->noContent();
     }
 
     /**
@@ -76,7 +83,21 @@ class RequirementController extends Controller
      */
     public function destroy(string $id)
     {
-        //
+        $requiremen = Requirement::findOrFail($id);
+
+        $requiremen->delete();
+
+        return $this->noContent();
+    }
+
+    public function close(ClosedRequest $request,string $id){
+        $requiremen = Requirement::findOrFail($id);
+        $requiremen->update([
+            ...$request->all(),
+            'status' =>RequirementStatus::CLOSED->value,
+        ]);
+
+         return $this->noContent();
     }
 
     public function linkPlan(LinkPlanRequest $request, string $planId)

+ 35 - 0
app/Http/Requests/API/Requirement/ClosedRequest.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/2/26
+ * Time: 下午 04:21
+ */
+
+namespace App\Http\Requests\API\Requirement;
+
+
+use App\Http\Requests\RuleHelper;
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Rules\Enum;
+use App\Models\Enums\RequirementReasonStatus;
+
+class ClosedRequest extends FormRequest
+{
+    use RuleHelper;
+
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    public function rules(): array
+    {
+        return [
+            'close_reason' =>  ['required',new Enum(RequirementReasonStatus::class)]
+        ];
+    }
+}

+ 24 - 0
app/Models/Enums/RequirementReasonStatus.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/2/26
+ * Time: 下午 04:03
+ */
+namespace App\Models\Enums;
+
+enum RequirementReasonStatus: string
+{
+case ALREADYDONE = 'Already Done';
+
+case DUPLICATE = 'Duplicate';
+
+case POSTPONED= 'Postponed';
+
+case WONTDO= "Wont'Do";
+
+case CANCELLED= 'Cancelled';
+
+case ASDESIGNED= 'As Designed';
+
+}

+ 4 - 0
app/Models/Requirement.php

@@ -5,10 +5,12 @@ namespace App\Models;
 use App\Models\Scopes\CompanyScope;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
 
 class Requirement extends Model
 {
     use HasFactory;
+    use SoftDeletes;
 
     protected $fillable = [
         'title',
@@ -21,6 +23,8 @@ class Requirement extends Model
         'acceptance',
         'mailto',
         'company_id',
+        'comment',
+        'close_reason'
     ];
 
     protected $casts = [

+ 32 - 0
database/migrations/2024_02_26_041201_add_comment_andclose_reason_to_requirements.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            $table->text("comment")->nullable();
+            $table->string('close_reason')->nullable();
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            //
+            $table->dropColumn('comment');
+            $table->dropColumn('close_reason');
+        });
+    }
+};

+ 1 - 1
routes/api.php

@@ -35,7 +35,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
             'naming-rule' => API\NameRuleController::class,
             'task' => API\TaskController::class,
         ]);
-
+        Route::patch("requirement/{requirement_id}/close",[API\RequirementController::class, 'close'])->name('requirement.close');
         Route::get("requirement/{asset_id}/asset", [API\RequirementController::class, "byAsset"])->name("requirement.byAsset");
         Route::patch("requirement/{plan_id}/plan", [API\RequirementController::class, "linkPlan"])->name("requirement.linkPlan");