UserRepository.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\User;
  4. use Illuminate\Database\Eloquent\Collection;
  5. use App\DataTransferObjects\UserDto;
  6. use App\DataTransferObjects\UserLanguageDto;
  7. use App\Enums\UserTypeSource;
  8. use Illuminate\Support\Facades\Auth;
  9. class UserRepository implements UserRepositoryInterface
  10. {
  11. public function me(): ?User
  12. {
  13. return Auth::user();
  14. }
  15. public function all(): ?Collection
  16. {
  17. return User::all();
  18. }
  19. public function store(UserDto $userDto): User
  20. {
  21. return User::create([
  22. 'name' => $userDto->name,
  23. 'email' => $userDto->email,
  24. 'password' => bcrypt($userDto->password),
  25. 'type' => $userDto->type ?? UserTypeSource::RegularUser,
  26. ]);
  27. }
  28. public function update(UserDto $userDto, int $id): ?User
  29. {
  30. $user = User::findOrFail($id);
  31. $user->update([
  32. 'name' => $userDto->name,
  33. 'email' => $userDto->email,
  34. 'password' => bcrypt($userDto->password),
  35. 'type' => $userDto->type ?? UserTypeSource::RegularUser,
  36. ]);
  37. return $user;
  38. }
  39. public function delete(int $id): bool
  40. {
  41. return User::destroy($id) > 0;
  42. }
  43. public function find(int $id): ?User
  44. {
  45. return User::findOrFail($id);
  46. }
  47. public function findByEmail(string $email): ?User
  48. {
  49. return User::where('email', $email)->first();
  50. }
  51. public function updateLanguage(UserLanguageDto $languageDto, int $id): ?User
  52. {
  53. $user = User::findOrFail($id);
  54. $user->update([
  55. 'language' => $languageDto->language,
  56. ]);
  57. return $user;
  58. }
  59. }