12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace App\Repositories\Transformers\Exam;
- use App\Repositories\Enums\ModelStatusEnum;
- use App\Repositories\Models\Exam\Paper;
- use App\Repositories\Models\Exam\Record;
- use League\Fractal\TransformerAbstract;
- class PaperTransformer extends TransformerAbstract
- {
- /**
- * Prepare data to present.
- *
- * @param Paper $paper
- * @return array
- */
- public function transform(Paper $paper)
- {
- $is_record_status = 0;
- $is_exam_status = 0;
- $admin = login_admin();
- if ($admin && !$admin->hasRole('admin')) {
- $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;
- } else {
- $is_exam_status = Record::query()->where('paper_id', $paper->id)->where('status', ModelStatusEnum::OK)->count();
- }
- if (request()->has('id')) {
- return [
- 'id' => $paper->id,
- 'name' => $paper->name,
- 'start_time' => $paper->start_time,
- 'end_time' => $paper->end_time,
- 'body' => $paper->body,
- 'status' => $paper->status,
- 'admin' => $paper->admin,
- 'banks' => $paper->banks,
- 'is_record_status' => $is_record_status,
- 'is_exam_status' => $is_exam_status,
- 'models' => $paper->models,
- 'created_at' => $paper->created_at ? $paper->created_at->format('Y-m-d H:i:s') : null,
- 'updated_at' => $paper->updated_at ? $paper->updated_at->format('Y-m-d H:i:s') : null,
- ];
- }
- return [
- 'id' => $paper->id,
- 'name' => $paper->name,
- 'start_time' => $paper->start_time,
- 'body' => $paper->body,
- 'end_time' => $paper->end_time,
- 'status' => $paper->status,
- 'admin' => $paper->admin,
- 'is_record_status' => $is_record_status,
- 'is_exam_status' => $is_exam_status,
- 'banks' => $paper->banks,
- 'models' => $paper->models,
- 'created_at' => $paper->created_at ? $paper->created_at->format('Y-m-d H:i:s') : null,
- 'updated_at' => $paper->updated_at ? $paper->updated_at->format('Y-m-d H:i:s') : null,
- ];
- }
- }
|