private function validateFeatures($data)
{
$features = ProductDetail::all()->toArray();
$features_rules = [];
$message_rules = [];
foreach ($features as $row) {
if ($row['status'] == 'active' && $row['validationRulesArray']) {
if ($row['max_num_values'] * 1 == 1) {
$features_rules['feature_' . $row['indexByName']] = $row['validationRulesArray'][$row['indexByName'] . '_1'] ? $row['validationRulesArray'][$row['indexByName'] . '_1'] : '';
$message_rules = array_merge($message_rules, $this->validationMessagesFeatures($row['validationRulesArray'][$row['indexByName'] . '_1'], 'feature_' . $row['indexByName'], $row['upperName']));
} else {
for ($i = 1; $i <= $row['max_num_values'] * 1; $i++) {
$features_rules['feature_' . $row['indexByName'] . '_' . $i] = $row['validationRulesArray'][$row['indexByName'] . '_' . $i] ? $row['validationRulesArray'][$row['indexByName'] . '_' . $i] : '';
$message_rules = array_merge($message_rules, $this->validationMessagesFeatures($row['validationRulesArray'][$row['indexByName'] . '_' . $i], 'feature_' . $row['indexByName'] . '_' . $i, $row['upperName']));
}
}
}
}
// dd($data, $features_rules,$message_rules);
$v = Validator::make($data, $features_rules, $message_rules);
if ($v->fails()) {
$array = [];
$errors = $v->errors()->toArray();
foreach ($errors as $error) {
foreach ($error as $row) {
$array[] = $row;
}
}
return array_unique($array);
}
$array = [];
foreach ($features as $row) {
$values = [];
if ($row['max_num_values'] * 1 !== 1) {
for ($i = 1; $i <= $row['max_num_values'] * 1; $i++) {
if (!$data['feature_' . $row['indexByName'] . '_' . $i]) {
continue;
}
if ($row['help_message'] != '' && strpos('video image document', $row['input_type']) === false) {
$message = '';
if (isset($row['helpMessageArray']['general'])) {
$message = $row['helpMessageArray']['general'];
} elseif (isset($row['helpMessageArray']['specific'])) {
$message = $row['helpMessageArray']['specific'][$row['indexByName'] . '_' . $i];
} elseif (isset($row['helpMessageArray']['general_selection'])) {
$message = $data['help_msg_' . $row['indexByName']];
} elseif (isset($row['helpMessageArray']['specific_selection'])) {
$message = $data['help_msg_' . $row['indexByName'] . '_' . $i];
}
$values[] = [$data['feature_' . $row['indexByName'] . '_' . $i], $message];
} else {
$values[] = $data['feature_' . $row['indexByName'] . '_' . $i];
}
}
} else {
if (isset($data['feature_' . $row['indexByName']]) && !$data['feature_' . $row['indexByName']]) {
continue;
}
if ($row['help_message'] != '' && strpos('video image document', $row['input_type']) === false) {
$message = '';
if (isset($row['helpMessageArray']['general'])) {
$message = $row['helpMessageArray']['general'];
} elseif (isset($row['helpMessageArray']['general_selection'])) {
$message = $data['help_msg_' . $row['indexByName']];
}
$values = [$data['feature_' . $row['indexByName']], $message];
} else {
$values = isset($data['feature_' . $row['indexByName']]) ? $data['feature_' . $row['indexByName']] : '';
}
}
if ($values) {
$array[$row['indexByName']] = $values;
}
}
return json_encode($array);
}