ReviewImprovementService.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Services;
  3. use App\Models\ReviewImprovement;
  4. use Exception;
  5. class ReviewImprovementService
  6. {
  7. public function getByReviewId(int $reviewId)
  8. {
  9. return ReviewImprovement::with(['improvementType'])
  10. ->where('review_id', $reviewId)
  11. ->orderBy('created_at', 'desc')
  12. ->get();
  13. }
  14. public function create(array $data): ReviewImprovement
  15. {
  16. $existing = ReviewImprovement::where('review_id', $data['review_id'])
  17. ->where('improvement_type_id', $data['improvement_type_id'])
  18. ->first();
  19. if ($existing) {
  20. if ($existing->trashed()) {
  21. $existing->restore();
  22. return $existing->fresh(['improvementType']);
  23. } else {
  24. throw new Exception(__('validation.review_improvement.already_exists'));
  25. }
  26. }
  27. $item = ReviewImprovement::create($data);
  28. $item->load(['improvementType']);
  29. return $item;
  30. }
  31. public function delete(int $id): bool
  32. {
  33. $item = ReviewImprovement::findOrFail($id);
  34. return $item->delete();
  35. }
  36. }