From d9a9bd1c0d08d944c2c82ec8a2184d4188aeab87 Mon Sep 17 00:00:00 2001 From: lukasfehling <6AQmxBp2VWLzo3.LXH*ApJbbje8GYaqq> Date: Tue, 15 Nov 2022 18:17:51 +0100 Subject: [PATCH] Added a api endpoint for sending email notifications to users with their assigned assets --- app/Http/Controllers/Api/UsersController.php | 32 ++++++++++++++++++++ routes/api.php | 7 +++++ 2 files changed, 39 insertions(+) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index eded29f82f..4a243c7cb1 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -15,6 +15,7 @@ use App\Models\Asset; use App\Models\Company; use App\Models\License; use App\Models\User; +use App\Notifications\CurrentInventory; use Auth; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; @@ -490,6 +491,37 @@ class UsersController extends Controller return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request); } + /** + * Notify a specific user via email with all of his assigned assets. + * + * @author [Lukas Fehling] [] + * @since [v6.0.13] + * @param Request $request + * @param $id + * @return string JSON + */ + public function emailAssetList(Request $request, $id) + { + $user = User::findOrFail($id); + + if (empty($user->email)) { + return response()->json( + [ + 'status' => 'error', + 'message' => 'This user has no email set.', + 'payload' => null, + ], 404); + } + + $user->notify((new CurrentInventory($user))); + + return response()->json( + [ + 'status' => 'success', + 'message' => 'The user was notified about his current inventory.', + 'payload' => null, + ], 200); + } /** * Return JSON containing a list of consumables assigned to a user. diff --git a/routes/api.php b/routes/api.php index d27f146013..d9db5b78ee 100644 --- a/routes/api.php +++ b/routes/api.php @@ -976,6 +976,13 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi ] )->name('api.users.assetlist'); + Route::post('{user}/email', + [ + Api\UsersController::class, + 'emailAssetList' + ] + )->name('api.users.email_assets'); + Route::get('{user}/accessories', [ Api\UsersController::class,