@if (isset($field['subfields']) && is_array($field['subfields']) && count($field['subfields']))
@php
$result = Null;
if(!empty($entry))
{
$result = $entry->results()->where('question_id', $question->id)->first();
}
@endphp
@if($question->is_check == 1)
@php
$isCheckField['type'] = 'check_radio';
$isCheckField['label'] = '';
$isCheckField['options'] = [1 => "មាន", 0 => "មិនមាន"];
$isCheckField['name'] = 'results['.$repeatable_row_key.'][is_check]';
$isCheckField['row-key'] = "row-$repeatable_row_key";
$isCheckFieldView = $crud->getFirstFieldView('check_radio', false);
if(!empty($result) && isset($result->is_check))
{
$isCheckField['value'] = $result->is_check;
}
@endphp
@include($isCheckFieldView, ['field' => $isCheckField])
@endif
@foreach($field['subfields'] as $subfield)
@php
$questionId = $subfield['name'] == 'question_id' ? $question->id : NULL;
@endphp
@if(!empty($question->appendix) && $subfield['type'] == 'upload_multiple')
@php
$subfieldViewAppendix = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false);
if(isset($row)) {
// Cast objects to array (could be a translation object, or a developer provided collection).
if (is_object($row)) {
$row = collect($row)->toArray();
}
if(!is_array($subfield['name'])) {
if(!Str::contains($subfield['name'], '.')) {
// this is a fix for 4.1 repeatable names that when the field was multiple, saved the keys with `[]` in the end. Eg: `tags[]` instead of `tags`
if(isset($row[$subfield['name']]) || isset($row[$subfield['name'].'[]'])) {
//$subfield['value'] = $row[$subfield['name']] ?? $row[$subfield['name'].'[]'];
}
$subfield['name'] = $field['name'].'['.$repeatable_row_key.']['.$subfield['name'].']';
}else{
//$subfield['value'] = \Arr::get($row, $subfield['name']);
$subfield['name'] = $field['name'].'['.$repeatable_row_key.']['.Str::replace('.', '][', $subfield['name']).']';
}
}else{
foreach ($subfield['name'] as $k => $item) {
$subfield['name'][$k] = $field['name'].'['.$repeatable_row_key.']['.$item.']';
// $subfield['value'][$subfield['name'][$k]] = \Arr::get($row, $item);
}
}
} else {
// use an un-matchable field name to avoid field initialization problems
// this would prevent the field from EVER get value in old() and triggering errors.
if(!is_array($subfield['name'])) {
$subfield['name'] = $field['name'].'[-1]['.$subfield['name'].']';
}else{
foreach($subfield['name'] as $k => $subfieldName) {
$subfield['name'][$k] = $field['name'].'[-1]['.$subfieldName.']';
}
}
}
if(!empty($result) && !empty($result->appendix))
{
$subfield['value'] = $result->appendix;
}
$subfield['appendix'] = $question->appendix;
@endphp
@include($subfieldViewAppendix, ['field' => $subfield])
@endif
@if(!empty($questionId))
@php
foreach((array)$subfield['name'] as $subfieldName) {
if($crud->isRequired($field['name'].'.'.$subfieldName)) {
$subfield['showAsterisk'] = $field['showAsterisk'] ?? true;
}
}
if(isset($row)) {
// Cast objects to array (could be a translation object, or a developer provided collection).
if (is_object($row)) {
$row = collect($row)->toArray();
}
if(!is_array($subfield['name'])) {
if(!Str::contains($subfield['name'], '.')) {
// this is a fix for 4.1 repeatable names that when the field was multiple, saved the keys with `[]` in the end. Eg: `tags[]` instead of `tags`
if(isset($row[$subfield['name']]) || isset($row[$subfield['name'].'[]'])) {
$subfield['value'] = $row[$subfield['name']] ?? $row[$subfield['name'].'[]'];
}
$subfield['name'] = $field['name'].'['.$repeatable_row_key.']['.$subfield['name'].']';
$subfield['label'] = $question->title;
}else{
$subfield['value'] = \Arr::get($row, $subfield['name']);
// $subfield['label'] = $question->title;
$subfield['name'] = $field['name'].'['.$repeatable_row_key.']['.Str::replace('.', '][', $subfield['name']).']';
}
}else{
foreach ($subfield['name'] as $k => $item) {
$subfield['name'][$k] = $field['name'].'['.$repeatable_row_key.']['.$item.']';
$subfield['value'][$subfield['name'][$k]] = \Arr::get($row, $item);
}
}
} else {
// use an un-matchable field name to avoid field initialization problems
// this would prevent the field from EVER get value in old() and triggering errors.
if(!is_array($subfield['name'])) {
$subfield['name'] = $field['name'].'[-1]['.$subfield['name'].']';
}else{
foreach($subfield['name'] as $k => $subfieldName) {
$subfield['name'][$k] = $field['name'].'[-1]['.$subfieldName.']';
}
}
}
$subfieldView = $crud->getFirstFieldView('hidden', $subfield['view_namespace'] ?? false);
$subfield['value'] = $questionId;
// dd($subfield);
@endphp
@include($subfieldView, ['field' => $subfield])
@endif
@endforeach
@if($question->type->label() == "Text")
@php
$subfield = [
'type' => 'text'
];
@endphp
@foreach($question->answers as $key => $answer)
@php
$subfield['label'] = $answer->title;
$subfield['name'] = 'results['.$repeatable_row_key.'][extra]['.$answer->id.']';
$fieldView = $crud->getFirstFieldView("text", $subfield['view_namespace'] ?? false);
if(!empty($result) && !empty($result->extra))
{
$subfield['value'] = $result->extra[$answer->id];
}
@endphp
@include("crud::fields.text", ['field' => $subfield])
@endforeach
@endif
@if($question->type->label() == "Checkbox")
@php
$subfield = [
'type' => 'checklist_answer',
'name' => 'results['.$repeatable_row_key.'][extra]',
'model' => "App\Models\Answer",
'options' => (function ($query) use ($question){
return $query->where('question_id', $question->id)->get();
}),
"label" => "",
"number_of_columns" => 1,
'pivot' => false,
"repeatable_row_key" => $repeatable_row_key
];
$subfieldViewAnswer = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false);
if(!empty($result) && !empty($result->extra))
{
$subfield['value'] = $result->extra;
$subfield['additional_value'] = $result->additional;
}
@endphp
@include($subfieldViewAnswer, ['field' => $subfield])
@endif
@if($question->type->label() == "Radio")
@php
$subfield = [
'type' => 'radio',
'name' => 'results['.$repeatable_row_key.'][answer_id]',
'options' => collect($question->answers->pluck('title', 'id'))->toArray(),
"label" => "",
];
$subfieldViewAnswer = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false);
if(!empty($result) && !empty($result->answer_id))
{
$subfield['value'] = $result->answer_id;
}
@endphp
@include($subfieldViewAnswer, ['field' => $subfield])
@endif
@if(empty($question->appendix))
@endif
@if(!empty($result))
@endif
@endif