Browse Source

get message notification setting

moell 11 months ago
parent
commit
ec82ce6b3b

+ 39 - 0
app/Http/Controllers/API/ConfigController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Config\AllowSettingConfig;
 use App\Models\Config;
+use App\Models\Enums\ObjectAction;
 use Illuminate\Http\Request;
 
 class ConfigController extends Controller
@@ -49,4 +50,42 @@ class ConfigController extends Controller
 
         return $this->noContent();
     }
+
+    public function messageNotificationSetting()
+    {
+        $relations = ObjectAction::messageNotificationItems();
+
+        $items = [];
+        foreach ($relations as $group => $relation) {
+            $item = [
+                'group_key' => $group,
+                'group_name' => __("action-labels.object_type." . $group),
+                'email' => [],
+                'browser' => [],
+            ];
+
+            foreach ($relation as $action) {
+                $actionItem = [
+                    'key' => $action->value,
+                    'name' => __("action-labels.label." . $action->value),
+                ];
+
+                $item['email'] = [
+                    ...$actionItem,
+                    'checked' => true,
+                ];
+
+                $item['browser'] = [
+                    ...$actionItem,
+                    'checked' => true,
+                ];
+            }
+
+            $items[] = $item;
+        }
+
+        return $this->success([
+            'data' => $items
+        ]);
+    }
 }

+ 1 - 1
app/Http/Controllers/API/RequirementController.php

@@ -99,7 +99,7 @@ class RequirementController extends Controller
         $requirement->save();
 
         ActionRepository::createRequirement(
-            $requirement, ObjectAction::STARTED,objectChanges: $changes
+            $requirement, ObjectAction::EDITED,objectChanges: $changes
         );
         return $this->noContent();
     }

+ 21 - 0
app/Models/Enums/ObjectAction.php

@@ -75,4 +75,25 @@ enum ObjectAction: string
     case BATCH_CREATE_TASK = "batchCreateTask";
 
     case DELETE_CHILDREN_TASK = "deleteChildrenTask";
+
+    public static function messageNotificationItems()
+    {
+        return [
+            ActionObjectType::REQUIREMENT->value => [
+                self::CREATED,
+                self::EDITED,
+                self::STARTED,
+                self::CHANGED,
+                self::CLOSED,
+            ],
+            ActionObjectType::TASK->value => [
+                ObjectAction::STARTED,
+                ObjectAction::PAUSED,
+                ObjectAction::CLOSED,
+                ObjectAction::DONE,
+                ObjectAction::CANCELED,
+                ObjectAction::EDITED,
+            ]
+        ];
+    }
 }

+ 1 - 0
lang/en/action-labels.php

@@ -4,6 +4,7 @@ use \App\Models\Enums\ActionObjectType;
 
 return[
     'object_type'=>[
+        ActionObjectType::REQUIREMENT->value => "Requirement",
         ActionObjectType::PROJECT->value => "Project",
         ActionObjectType::PLAN->value => "Plan",
         ActionObjectType::TASK->value =>"Task",

+ 7 - 3
routes/api.php

@@ -21,6 +21,13 @@ Route::middleware(['auth:sanctum'])->group(function () {
     Route::post("/logout", [API\AuthController::class, "logout"]);
     Route::get("user/info", [API\UserController::class, 'info'])->name("user.info");
 
+    Route::middleware(['permission'])->group(function () {
+        Route::get("config", [API\ConfigController::class, "index"])->name("config.index");
+        Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
+        Route::get("config/message-notification-setting", [API\ConfigController::class, "messageNotificationSetting"])
+            ->name("config.message-notification-setting");
+    });
+
     Route::middleware(['permission'])->group(function() {
         Route::apiResources([
             'asset-group' => API\AssetGroupController::class,
@@ -110,9 +117,6 @@ Route::middleware(['auth:sanctum'])->group(function () {
 
         Route::post("requirement/batch", [API\RequirementController::class, "batchStore"])->name("requirement.batchStore");
 
-        Route::get("config", [API\ConfigController::class, "index"])->name("config.index");
-        Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
-
         Route::get("plan-by-assets", [API\PlanController::class, "byAssets"])->name("plan.by-assets");
         Route::get("requirement-by-assets", [API\RequirementController::class, "byAssets"])->name("requirement.by-assets");