PaperTransformer.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Repositories\Transformers\Exam;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Exam\Paper;
  5. use App\Repositories\Models\Exam\Record;
  6. use League\Fractal\TransformerAbstract;
  7. class PaperTransformer extends TransformerAbstract
  8. {
  9. /**
  10. * Prepare data to present.
  11. *
  12. * @param Paper $paper
  13. * @return array
  14. */
  15. public function transform(Paper $paper)
  16. {
  17. $is_record_status = 0;
  18. $is_exam_status = 0;
  19. $admin = login_admin();
  20. if ($admin && !$admin->hasRole('admin')) {
  21. $is_record_status = Record::query()->where('paper_id', $paper->id)->where('admin_id', login_admin_id())->where('status', ModelStatusEnum::OK)->orderByDesc('id')->value('id') ?? 0;
  22. } else {
  23. $is_exam_status = Record::query()->where('paper_id', $paper->id)->where('status', ModelStatusEnum::OK)->count();
  24. }
  25. if (request()->has('id')) {
  26. return [
  27. 'id' => $paper->id,
  28. 'name' => $paper->name,
  29. 'start_time' => $paper->start_time,
  30. 'end_time' => $paper->end_time,
  31. 'body' => $paper->body,
  32. 'status' => $paper->status,
  33. 'admin' => $paper->admin,
  34. 'banks' => $paper->banks,
  35. 'is_record_status' => $is_record_status,
  36. 'is_exam_status' => $is_exam_status,
  37. 'models' => $paper->models,
  38. 'created_at' => $paper->created_at ? $paper->created_at->format('Y-m-d H:i:s') : null,
  39. 'updated_at' => $paper->updated_at ? $paper->updated_at->format('Y-m-d H:i:s') : null,
  40. ];
  41. }
  42. return [
  43. 'id' => $paper->id,
  44. 'name' => $paper->name,
  45. 'start_time' => $paper->start_time,
  46. 'body' => $paper->body,
  47. 'end_time' => $paper->end_time,
  48. 'status' => $paper->status,
  49. 'admin' => $paper->admin,
  50. 'is_record_status' => $is_record_status,
  51. 'is_exam_status' => $is_exam_status,
  52. 'banks' => $paper->banks,
  53. 'models' => $paper->models,
  54. 'created_at' => $paper->created_at ? $paper->created_at->format('Y-m-d H:i:s') : null,
  55. 'updated_at' => $paper->updated_at ? $paper->updated_at->format('Y-m-d H:i:s') : null,
  56. ];
  57. }
  58. }