UserRepository.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. class UserRepository implements UserRepositoryInterface
  9. {
  10. public function all(): ?Collection
  11. {
  12. return User::all();
  13. }
  14. public function store(UserDto $userDto): User
  15. {
  16. return User::create([
  17. 'name' => $userDto->name,
  18. 'email' => $userDto->email,
  19. 'password' => bcrypt($userDto->password),
  20. 'type' => $userDto->type ?? UserTypeSource::RegularUser,
  21. ]);
  22. }
  23. public function update(UserDto $userDto, int $id): ?User
  24. {
  25. $user = User::findOrFail($id);
  26. $user->update([
  27. 'name' => $userDto->name,
  28. 'email' => $userDto->email,
  29. 'password' => bcrypt($userDto->password),
  30. 'type' => $userDto->type ?? UserTypeSource::RegularUser,
  31. ]);
  32. return $user;
  33. }
  34. public function delete(int $id): bool
  35. {
  36. return User::destroy($id) > 0;
  37. }
  38. public function find(int $id): ?User
  39. {
  40. return User::findOrFail($id);
  41. }
  42. public function findByEmail(string $email): ?User
  43. {
  44. return User::where('email', $email)->first();
  45. }
  46. public function updateLanguage(UserLanguageDto $languageDto, int $id): ?User
  47. {
  48. $user = User::findOrFail($id);
  49. $user->update([
  50. 'language' => $languageDto->language,
  51. ]);
  52. return $user;
  53. }
  54. }