app\helpers\featuresHelper::validateFeatures PHP Method

validateFeatures() public method

validate product feature, as specified in the table of product details.
public validateFeatures ( [array] $data ) : [string | array]
$data [array]
return [string | array]
    public function validateFeatures($data)
    {
        $features_rules = [];
        $message_rules = [];
        foreach ($this->features as $row) {
            if ($row['status'] == 'active') {
                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 ($this->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 (!$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 = $data['feature_' . $row['indexByName']];
                }
            }
            if ($values) {
                $array[$row['indexByName']] = $values;
            }
        }
        return json_encode($array);
    }