SentResource.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Http\Resources;
  3. use App\Http\Api\MdRender;
  4. use Illuminate\Http\Resources\Json\JsonResource;
  5. use App\Http\Api\StudioApi;
  6. use App\Http\Api\UserApi;
  7. use App\Http\Api\ChannelApi;
  8. use App\Http\Api\SuggestionApi;
  9. class SentResource extends JsonResource
  10. {
  11. /**
  12. * Transform the resource into an array.
  13. *
  14. * @param \Illuminate\Http\Request $request
  15. * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
  16. */
  17. public function toArray($request)
  18. {
  19. $channel = ChannelApi::getById($this->channel_uid);
  20. if($request->get('mode','read')==="read"){
  21. $mode = 'read';
  22. }else{
  23. $mode = 'edit';
  24. }
  25. $data = [
  26. "id" => $this->uid,
  27. "content"=>$this->content,
  28. "content_type"=>$this->content_type,
  29. "html"=> "",
  30. "book"=> $this->book_id,
  31. "paragraph"=> $this->paragraph,
  32. "word_start"=> $this->word_start,
  33. "word_end"=> $this->word_end,
  34. "editor"=> UserApi::getByUuid($this->editor_uid),
  35. "channel"=> $channel,
  36. "studio" => StudioApi::getById($channel["studio_id"]),
  37. "updated_at"=> $this->updated_at,
  38. ];
  39. if($request->has('channels')){
  40. $channels = explode(',',$request->get('channels'));
  41. }else{
  42. $channels = [$this->channel_uid];
  43. }
  44. if($request->get('html',true)){
  45. $data['html'] = MdRender::render($this->content,
  46. $channels,
  47. null,
  48. $mode,
  49. $channel['type'],
  50. $this->content_type);
  51. }
  52. if($request->get('mode')==="edit" || $request->get('mode')==="wbw"){
  53. $data['suggestionCount'] = SuggestionApi::getCountBySent($this->book_id,
  54. $this->paragraph,
  55. $this->word_start,
  56. $this->word_end,
  57. $this->channel_uid
  58. );
  59. }
  60. if(isset($this->acceptor_uid) && !empty($this->acceptor_uid)){
  61. $data["acceptor"]=UserApi::getByUuid($this->acceptor_uid);
  62. $data["pr_edit_at"]=$this->pr_edit_at;
  63. }
  64. return $data;
  65. }
  66. }