UserService.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Services;
  3. use Illuminate\Database\Eloquent\Collection;
  4. use App\Repositories\UserRepositoryInterface;
  5. use App\DTO\UserDTO;
  6. use App\Models\User;
  7. class UserService
  8. {
  9. public function __construct(
  10. protected UserRepositoryInterface $userRepository,
  11. ) {}
  12. public function me(): ?User
  13. {
  14. return $this->userRepository->me();
  15. }
  16. public function all(): ?Collection
  17. {
  18. return $this->userRepository->all();
  19. }
  20. public function find(int $id): ?User
  21. {
  22. return $this->userRepository->find(id: $id);
  23. }
  24. public function store(UserDTO $userDTO): User
  25. {
  26. return $this->userRepository->store(userDTO: $userDTO);
  27. }
  28. public function update(UserDTO $userDTO, int $id): ?User
  29. {
  30. return $this->userRepository->update(id: $id, dto: $userDTO, fieldsToUpdate: request()->keys());
  31. }
  32. public function delete(int $id): bool
  33. {
  34. return $this->userRepository->delete(id: $id);
  35. }
  36. public function findByEmail(string $email): ?User
  37. {
  38. return $this->userRepository->findByEmail(email: $email);
  39. }
  40. public function updateLanguage(UserDTO $dto, int $id): ?User
  41. {
  42. return $this->userRepository->update(id: $id, dto: $dto, fieldsToUpdate: ['language']);
  43. }
  44. }