CourseTransformer.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Repositories\Transformers\Course;
  3. use App\Repositories\Enums\Course\CourseRecEnum;
  4. use App\Repositories\Enums\Course\CourseTypeEnum;
  5. use App\Repositories\Enums\ModelStatusEnum;
  6. use App\Repositories\Models\Course\Chapter;
  7. use App\Repositories\Models\Course\Collect;
  8. use Carbon\Carbon;
  9. use League\Fractal\TransformerAbstract;
  10. use App\Repositories\Models\Course\Course;
  11. /**
  12. * Class CourseTransformer.
  13. *
  14. * @package namespace App\Repositories\Transformers;
  15. */
  16. class CourseTransformer extends TransformerAbstract
  17. {
  18. /**
  19. * Transform the Course entity.
  20. *
  21. * @param \App\Repositories\Models\Course\Course $model
  22. *
  23. * @return array
  24. */
  25. public function transform(Course $model)
  26. {
  27. if (isApiModule()) {
  28. return $this->apiTransform($model);
  29. }
  30. if (request()->has('id')) {
  31. return [
  32. 'id' => (int)$model->id,
  33. 'title' => $model->title,
  34. 'subscribe' => $model->subscribe,
  35. 'category' => $model->category,
  36. 'type' => $model->type,
  37. 'type_text' => CourseTypeEnum::getDescription($model->type),
  38. 'labels' => $model->labels,
  39. 'slug' => $model->slug,
  40. 'thumb_resource' => $model->thumb_resource,
  41. 'short_description' => $model->short_description,
  42. 'description' => $model->description,
  43. 'published_at' => $model->published_at,
  44. 'user_count' => $model->user_count,
  45. 'settings' => $model->settings,
  46. 'video_nums' => $model->video_nums,
  47. 'is_rec' => $model->is_rec,
  48. 'status' => $model->status,
  49. 'is_rec_text' => CourseRecEnum::getDescription($model->is_rec),
  50. 'teacher' => $model->teacher,
  51. 'directories' => Chapter::byCourseIdGetDirectory($model->id),
  52. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  53. ];
  54. }
  55. return [
  56. 'id' => (int)$model->id,
  57. 'title' => $model->title,
  58. 'category' => $model->category,
  59. 'type' => $model->type,
  60. 'type_text' => CourseTypeEnum::getDescription($model->type),
  61. 'labels' => $model->labels,
  62. 'slug' => $model->slug,
  63. 'thumb' => $model->thumb,
  64. 'thumb_resource' => $model->thumb_resource,
  65. 'short_description' => $model->short_description,
  66. 'description' => $model->description,
  67. 'published_at' => $model->published_at,
  68. 'is_rec' => $model->is_rec,
  69. 'is_rec_text' => CourseRecEnum::getDescription($model->is_rec),
  70. 'user_count' => $model->user_count,
  71. 'settings' => $model->settings,
  72. 'sort' => $model->sort,
  73. 'video_nums' => $model->video_nums,
  74. 'teacher' => $model->teacher,
  75. 'status' => $model->status,
  76. 'status_test' => ModelStatusEnum::getDescription($model->status),
  77. 'created_at' => $model->created_at->format(Carbon::DEFAULT_TO_STRING_FORMAT),
  78. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  79. ];
  80. }
  81. public function apiTransform(Course $model)
  82. {
  83. if (request()->has('id')) {
  84. return [
  85. 'id' => (int)$model->id,
  86. 'title' => $model->title,
  87. 'subscribe' => $model->subscribe,
  88. 'category' => $model->category,
  89. 'type' => $model->type,
  90. 'type_text' => CourseTypeEnum::getDescription($model->type),
  91. 'labels' => $model->labels,
  92. 'slug' => $model->slug,
  93. 'thumb_resource' => $model->thumb_resource,
  94. 'short_description' => $model->short_description,
  95. 'description' => $model->description,
  96. 'published_at' => $model->published_at,
  97. 'user_count' => $model->user_count,
  98. 'settings' => $model->settings,
  99. 'video_nums' => $model->video_nums,
  100. 'teacher' => $model->teacher,
  101. 'is_collection_status' => Collect::isCollect($model->id),
  102. 'directories' => Chapter::byCourseIdGetDirectory($model->id),
  103. 'is_rec' => $model->is_rec,
  104. 'is_rec_text' => CourseRecEnum::getDescription($model->is_rec),
  105. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  106. ];
  107. }
  108. return [
  109. 'id' => (int)$model->id,
  110. 'title' => $model->title,
  111. 'category' => $model->category,
  112. 'type' => $model->type,
  113. 'type_text' => CourseTypeEnum::getDescription($model->type),
  114. 'labels' => $model->labels,
  115. 'slug' => $model->slug,
  116. 'thumb_resource' => $model->thumb_resource,
  117. 'short_description' => $model->short_description,
  118. // 'description' => $model->description,
  119. 'published_at' => $model->published_at,
  120. // 'is_rec' => $model->is_rec,
  121. 'user_count' => $model->user_count,
  122. 'subscribe' => $model->subscribe,
  123. // 'settings' => $model->settings,
  124. 'video_nums' => $model->video_nums,
  125. 'is_rec' => $model->is_rec,
  126. 'is_rec_text' => CourseRecEnum::getDescription($model->is_rec),
  127. 'teacher' => $model->teacher,
  128. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  129. ];
  130. }
  131. }