VideoTransformer.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Repositories\Transformers\Course;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Course\Attach;
  5. use Carbon\Carbon;
  6. use League\Fractal\TransformerAbstract;
  7. use App\Repositories\Models\Course\Video;
  8. /**
  9. * Class CourseVideoTransformer.
  10. *
  11. * @package namespace App\Repositories\Transformers;
  12. */
  13. class VideoTransformer extends TransformerAbstract
  14. {
  15. /**
  16. * Transform the CourseVideo entity.
  17. *
  18. * @param \App\Repositories\Models\Course\Video $model
  19. *
  20. * @return array
  21. */
  22. public function transform(Video $model)
  23. {
  24. if (isApi()) {
  25. return [
  26. 'id' => (int)$model->id,
  27. 'title' => $model->title,
  28. 'slug' => $model->slug,
  29. 'url' => $model->url,
  30. 'url_resource' => $model->url_resource ?? '',
  31. 'view_num' => $model->view_num,
  32. 'description' => $model->description,
  33. 'published_at' => $model->published_at,
  34. 'chapter_name' => $model->course_chapter,
  35. 'duration' => $model->duration,
  36. 'settings' => $model->settings,
  37. 'subtitle_zh_path_resource' => $model->subtitle_zh_path_resource ?? '',
  38. 'ban_drag' => $model->ban_drag,
  39. 'attaches' => Attach::byVideoIdGetLists($model->id),
  40. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  41. ];
  42. }
  43. return [
  44. 'id' => (int)$model->id,
  45. 'title' => $model->title,
  46. 'slug' => $model->slug,
  47. 'url' => $model->url,
  48. 'url_resource' => $model->url_resource ?? '',
  49. 'view_num' => $model->view_num,
  50. 'description' => $model->description,
  51. 'published_at' => $model->published_at,
  52. 'course_chapter_id' => $model->course_chapter_id,
  53. 'course_chapter_name' => $model->course_chapter ? $model->course_chapter->title : '',
  54. 'duration' => $model->duration,
  55. 'comment_status' => $model->comment_status,
  56. 'subtitle_zh_path' => $model->subtitle_zh_path,
  57. 'subtitle_zh_path_resource' => $model->subtitle_zh_path_resource ?? '',
  58. 'subtitle_en_path' => $model->subtitle_en_path,
  59. 'subtitle_en_path_resource' => $model->subtitle_en_path_resource ?? '',
  60. 'ban_drag' => $model->ban_drag,
  61. 'sort' => $model->sort,
  62. 'status' => $model->status,
  63. 'status_test' => ModelStatusEnum::getDescription($model->status),
  64. 'created_at' => $model->created_at->format(Carbon::DEFAULT_TO_STRING_FORMAT),
  65. 'updated_at' => $model->updated_at->format(Carbon::DEFAULT_TO_STRING_FORMAT)
  66. ];
  67. }
  68. }