StudentContractService.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Services;
  3. use App\Models\StudentContract;
  4. use Carbon\Carbon;
  5. use Illuminate\Database\Eloquent\Collection;
  6. class StudentContractService
  7. {
  8. public function getAll(int $unitId, ?int $studentId = null): Collection
  9. {
  10. return StudentContract::where('unit_id', $unitId)
  11. ->when($studentId, fn ($q) => $q->where('student_id', $studentId))
  12. ->orderBy('created_at', 'desc')
  13. ->get();
  14. }
  15. public function findById(int $id): ?StudentContract
  16. {
  17. return StudentContract::find($id);
  18. }
  19. public function create(array $data): StudentContract
  20. {
  21. if (!empty($data['due_date'])) {
  22. $data['recurring_day'] = Carbon::parse($data['due_date'])->day;
  23. }
  24. return StudentContract::create($data);
  25. }
  26. public function update(int $id, array $data): ?StudentContract
  27. {
  28. $model = $this->findById($id);
  29. if (!$model) {
  30. return null;
  31. }
  32. if (!empty($data['due_date'])) {
  33. $data['recurring_day'] = Carbon::parse($data['due_date'])->day;
  34. }
  35. $model->update($data);
  36. return $model->fresh();
  37. }
  38. public function delete(int $id): bool
  39. {
  40. $model = $this->findById($id);
  41. if (!$model) {
  42. return false;
  43. }
  44. return $model->delete();
  45. }
  46. }