diff --git a/ProcessMaker/Http/Controllers/Api/TemplateController.php b/ProcessMaker/Http/Controllers/Api/TemplateController.php index 7134d136fd..234cc6d924 100644 --- a/ProcessMaker/Http/Controllers/Api/TemplateController.php +++ b/ProcessMaker/Http/Controllers/Api/TemplateController.php @@ -14,9 +14,12 @@ use ProcessMaker\Models\Process; use ProcessMaker\Models\ProcessTemplates; use ProcessMaker\Models\Template; +use ProcessMaker\Traits\ProjectAssetTrait; class TemplateController extends Controller { + use ProjectAssetTrait; + protected array $types = [ 'process' => [Process::class, ProcessTemplate::class, ProcessCategory::class, 'process_category_id', 'process_templates'], ]; @@ -143,6 +146,11 @@ public function create(string $type, Request $request) } else { $response = $this->template->create($type, $request); } + if ($request->has('projects')) { + // Update 'updated_at' field for the project + $projectIds = explode(',', $request->input('projects')); + $this->updateProjectUpdatedAt($projectIds); + } } elseif ($type === 'update-assets') { $request['request'] = json_decode($request['request'], true); $request['existingAssets'] = json_decode($request['existingAssets'], true); diff --git a/ProcessMaker/Traits/ProjectAssetTrait.php b/ProcessMaker/Traits/ProjectAssetTrait.php index 50209f7331..e4c0232c5e 100644 --- a/ProcessMaker/Traits/ProjectAssetTrait.php +++ b/ProcessMaker/Traits/ProjectAssetTrait.php @@ -23,6 +23,7 @@ public function syncProjectAsset($requestOrInteger, $assetModelClass) try { // Sync the project assets with the prepared project IDs $this->projectAssets()->syncWithPivotValues($projectIds, ['asset_type' => $assetModelClass]); + $this->updateProjectUpdatedAt($projectIds); } catch (Exception $e) { throw new ProjectAssetSyncException('Error syncing project assets: ' . $e->getMessage()); } @@ -81,4 +82,25 @@ public function getProjectsAttribute() return json_encode([]); } + + /** + * Update the 'updated_at' field of projects. + * + * @param array|int $projectIds + * @return void + */ + public function updateProjectUpdatedAt($projectIds) + { + if (!class_exists(self::PROJECT_MODEL_CLASS)) { + return; + } + + foreach ((array) $projectIds as $projectId) { + $project = self::PROJECT_MODEL_CLASS::find($projectId); + + if ($project) { + $project->touch(); + } + } + } }