48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Imports;
|
|
|
|
use App\Models\SoalPilgan;
|
|
use Illuminate\Validation\Rule;
|
|
use Maatwebsite\Excel\Concerns\ToModel;
|
|
use Maatwebsite\Excel\Concerns\Importable;
|
|
use Maatwebsite\Excel\Concerns\WithHeadingRow;
|
|
use Maatwebsite\Excel\Concerns\WithValidation;
|
|
|
|
class SoalPilganImport implements ToModel, WithHeadingRow, WithValidation
|
|
{
|
|
use Importable;
|
|
|
|
protected $ujian_id;
|
|
|
|
public function __construct($ujian_id)
|
|
{
|
|
$this->ujian_id = $ujian_id;
|
|
}
|
|
|
|
public function model(array $row)
|
|
{
|
|
return new SoalPilgan([
|
|
'ujian_id' => $this->ujian_id,
|
|
'pertanyaan' => $row['pertanyaan'],
|
|
'opsi_a' => $row['opsi_a'],
|
|
'opsi_b' => $row['opsi_b'],
|
|
'opsi_c' => $row['opsi_c'],
|
|
'opsi_d' => $row['opsi_d'],
|
|
'jawaban_benar' => $row['jawaban_benar'],
|
|
]);
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'*.pertanyaan' => 'required|string',
|
|
'*.opsi_a' => 'required|string',
|
|
'*.opsi_b' => 'required|string',
|
|
'*.opsi_c' => 'required|string',
|
|
'*.opsi_d' => 'required|string',
|
|
'*.jawaban_benar' => ['required', Rule::in(['a', 'b', 'c', 'd'])],
|
|
];
|
|
}
|
|
}
|