diff --git a/app/Http/Controllers/Admin/DeveloperController.php b/app/Http/Controllers/Admin/DeveloperController.php index 155a9fa0f..805449e63 100644 --- a/app/Http/Controllers/Admin/DeveloperController.php +++ b/app/Http/Controllers/Admin/DeveloperController.php @@ -6,8 +6,10 @@ use App\Http\Permissions\Permission; use App\Models\Enums\AttributeTable; use App\Models\Member; +use App\Models\StaffMember; use App\Rules\Valid; use App\Utils\Date\DateHelper; +use App\Utils\Nullable; use Illuminate\Http\JsonResponse; use Illuminate\Http\Response; use Illuminate\Support\Facades\Artisan; @@ -65,4 +67,23 @@ public function overwriteMetadata(): JsonResponse $updated = DB::table($model->value)->where('id', $id)->update($updateData); return new JsonResponse(data: ['data' => (bool)$updated], status: 200); } + + public function patchStaff(): JsonResponse + { + $data = $this->validate([ + 'id' => Valid::uuid(), + 'facility_id' => Valid::uuid([Rule::exists('facilities', 'id')]), + 'deactivated_at' => Valid::datetime(nullable: true), + ]); + + $id = Member::query()->where('user_id', $data['id']) + ->where('facility_id', $data['facility_id'])->firstOrFail() + ->offsetGet('staff_member_id'); + + $updated = StaffMember::query()->where('id', $id)->update([ + 'deactivated_at' => Nullable::call($data['deactivated_at'], DateHelper::zuluToDbString(...)) + ]); + + return new JsonResponse(data: ['data' => (bool)$updated], status: 200); + } } diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index 5cd1fb125..26d2e87e8 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -18,7 +18,7 @@ #[OA\Info(version: ApiController::VERSION, title: 'Memo API')] abstract class ApiController extends Controller { - protected const string VERSION = '0.14.0'; + protected const string VERSION = '0.14.1'; private readonly array $requestIn; public function __construct(private readonly Request $request) diff --git a/app/Utils/Nullable.php b/app/Utils/Nullable.php new file mode 100644 index 000000000..9fdf660f0 --- /dev/null +++ b/app/Utils/Nullable.php @@ -0,0 +1,21 @@ +equals($other)); + } +} diff --git a/database/migrations/2024_10_08_222858_change_documents_links_to_text.php b/database/migrations/2024_10_08_222858_change_documents_links_to_text.php new file mode 100644 index 000000000..75ef6037c --- /dev/null +++ b/database/migrations/2024_10_08_222858_change_documents_links_to_text.php @@ -0,0 +1,22 @@ +where('id', 'e1c14100-070d-4213-8927-6b7aed9617a4') + ->update(['type' => 'text']); + } + + public function down(): void + { + } +}; diff --git a/routes/api.php b/routes/api.php index 1bda35618..8c2d76033 100644 --- a/routes/api.php +++ b/routes/api.php @@ -53,6 +53,7 @@ Route::prefix('/developer')->group(function () { Route::get('/migrate/{hash?}', [DeveloperController::class, 'migrate']); Route::post('/overwrite-metadata', [DeveloperController::class, 'overwriteMetadata']); + Route::post('/patch-staff', [DeveloperController::class, 'patchStaff']); }); Route::prefix('/user')->group(function () { Route::get('/list', [AdminUserController::class, 'list']);