CompanyInterViewController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace App\Admin\Controllers\Company;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\CompanyInterView;
  5. use Encore\Admin\Controllers\HasResourceActions;
  6. use Encore\Admin\Form;
  7. use Encore\Admin\Grid;
  8. use Encore\Admin\Layout\Content;
  9. use Encore\Admin\Show;
  10. use function foo\func;
  11. class CompanyInterViewController extends Controller
  12. {
  13. use HasResourceActions;
  14. /**
  15. * Index interface.
  16. *
  17. * @param Content $content
  18. * @return Content
  19. */
  20. public function index(Content $content)
  21. {
  22. return $content
  23. ->header('面试邀请')
  24. ->description('列表')
  25. ->body($this->grid());
  26. }
  27. /**
  28. * Show interface.
  29. *
  30. * @param mixed $id
  31. * @param Content $content
  32. * @return Content
  33. */
  34. public function show($id, Content $content)
  35. {
  36. return $content
  37. ->header('面试邀请')
  38. ->description('面试邀请')
  39. ->body($this->detail($id));
  40. }
  41. /**
  42. * Edit interface.
  43. *
  44. * @param mixed $id
  45. * @param Content $content
  46. * @return Content
  47. */
  48. public function edit($id, Content $content)
  49. {
  50. return $content
  51. ->header('Edit')
  52. ->description('description')
  53. ->body($this->form()->edit($id));
  54. }
  55. /**
  56. * Create interface.
  57. *
  58. * @param Content $content
  59. * @return Content
  60. */
  61. public function create(Content $content)
  62. {
  63. return $content
  64. ->header('Create')
  65. ->description('description')
  66. ->body($this->form());
  67. }
  68. /**
  69. * Make a grid builder.
  70. *
  71. * @return Grid
  72. */
  73. protected function grid()
  74. {
  75. $grid = new Grid(new CompanyInterView);
  76. $grid->model()->whereHas('resumes');
  77. $grid->id('ID');
  78. $grid->column('resumes.fullname', '姓名');
  79. $grid->column('resumes.birthdate', '年龄')->display(function ($birthdate) {
  80. return date('Y')-$birthdate;
  81. });
  82. $grid->column('resumes.sex_cn', '性别');
  83. $grid->column('resumes.education_cn', '学历');
  84. $grid->column('resumes.experience_cn', '工作经验');
  85. $grid->column('resumes.wage_cn', '期望薪资');
  86. $grid->column('interview_time', '面试时间')->display(function ($interview_time) {
  87. return date('Y-m-d H:i:s', $interview_time);
  88. });
  89. $grid->filter(function ($filter) {
  90. $filter->column(1/2, function ($filter) {
  91. $filter->equal('company_id', '企业ID');
  92. $filter->like('company_name', '企业名称');
  93. $filter->between('created_at', '添加时间')->datetime();
  94. });
  95. $filter->column(1/2, function ($filter) {
  96. $filter->equal('jobs_id', '职位ID');
  97. $filter->like('jobs_name', '职位名称');
  98. });
  99. });
  100. return $grid;
  101. }
  102. /**
  103. * Make a show builder.
  104. *
  105. * @param mixed $id
  106. * @return Show
  107. */
  108. protected function detail($id)
  109. {
  110. $show = new Show(CompanyInterView::findOrFail($id));
  111. $show->resumes('姓名')->as(function ($resumes) {
  112. return $resumes->fullname;
  113. });
  114. $show->resumes()->birthdate('年龄')->as(function ($resumes) {
  115. return $resumes->birthdate;
  116. });
  117. $show->resumes()->sex_cn('性别')->as(function ($resumes) {
  118. return $resumes->sex_cn;
  119. });
  120. $show->resumes()->fullname('学历')->as(function ($resumes) {
  121. return $resumes->education_cn;
  122. });
  123. $show->resumes()->fullname('工作经验')->as(function ($resumes) {
  124. return $resumes->experience_cn;
  125. });
  126. $show->resumes()->wage_cn('期望薪资')->as(function ($resumes) {
  127. return $resumes->wage_cn;
  128. });
  129. $show->interview_time('面试时间')->as(function ($interview_time) {
  130. return date('Y-m-d H:i:s', $interview_time);
  131. });
  132. return $show;
  133. }
  134. /**
  135. * Make a form builder.
  136. *
  137. * @return Form
  138. */
  139. protected function form()
  140. {
  141. $form = new Form(new CompanyInterView);
  142. $form->display('ID');
  143. $form->display('Created at');
  144. $form->display('Updated at');
  145. return $form;
  146. }
  147. }