AdditionalUsernameController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\DeletedUsername;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Requests\StoreAdditionalUsernameRequest;
  6. use App\Http\Requests\UpdateAdditionalUsernameRequest;
  7. use App\Http\Resources\AdditionalUsernameResource;
  8. class AdditionalUsernameController extends Controller
  9. {
  10. public function index()
  11. {
  12. return AdditionalUsernameResource::collection(user()->additionalUsernames()->with(['aliases', 'defaultRecipient'])->latest()->get());
  13. }
  14. public function show($id)
  15. {
  16. $username = user()->additionalUsernames()->findOrFail($id);
  17. return new AdditionalUsernameResource($username->load(['aliases', 'defaultRecipient']));
  18. }
  19. public function store(StoreAdditionalUsernameRequest $request)
  20. {
  21. if (user()->hasReachedAdditionalUsernameLimit()) {
  22. return response('', 403);
  23. }
  24. $username = user()->additionalUsernames()->create(['username' => $request->username]);
  25. user()->increment('username_count');
  26. return new AdditionalUsernameResource($username->refresh()->load(['aliases', 'defaultRecipient']));
  27. }
  28. public function update(UpdateAdditionalUsernameRequest $request, $id)
  29. {
  30. $username = user()->additionalUsernames()->findOrFail($id);
  31. $username->update(['description' => $request->description]);
  32. return new AdditionalUsernameResource($username->refresh()->load(['aliases', 'defaultRecipient']));
  33. }
  34. public function destroy($id)
  35. {
  36. $username = user()->additionalUsernames()->findOrFail($id);
  37. DeletedUsername::create(['username' => $username->username]);
  38. $username->delete();
  39. return response('', 204);
  40. }
  41. }