/**
  *  Function to store custom field
  *
  * @access	public
  * @param   \Illuminate\Http\Request                    $request
  * @param   \Syscover\Pulsar\Models\CustomFieldGroup    $customFieldGroup
  * @param   string                                      $resource
  * @param   integer                                     $objectId
  * @param   string                                      $lang
  * @return  void
  */
 public static function storeCustomFieldResults($request, $customFieldGroup, $resource, $objectId, $lang)
 {
     $customFieldGroup = CustomFieldGroup::find($customFieldGroup);
     $customFields = CustomField::getRecords(['lang_026' => $lang, 'group_id_026' => $customFieldGroup->id_025]);
     $dataTypes = collect(config('pulsar.dataTypes'))->keyBy('id');
     $customFieldResults = [];
     foreach ($customFields as $customField) {
         // if we return an array but the data to be saved is not an array, we will keep as many records containing the array elements
         if (is_array($request->input($customField->name_026 . '_custom')) && $dataTypes[$customField->data_type_id_026]->type != 'array') {
             foreach ($request->input($customField->name_026 . '_custom') as $value) {
                 $customFieldResult = ['object_id_028' => $objectId, 'lang_id_028' => $lang, 'resource_id_028' => $resource, 'field_id_028' => $customField->id_026, 'data_type_type_028' => $dataTypes[$customField->data_type_id_026]->type, 'value_028' => $value];
                 $customFieldResults[] = $customFieldResult;
             }
         } else {
             $customFieldResult = ['object_id_028' => $objectId, 'lang_id_028' => $lang, 'resource_id_028' => $resource, 'field_id_028' => $customField->id_026, 'data_type_type_028' => $dataTypes[$customField->data_type_id_026]->type];
             // if we return an array and the data to be saved is an array, the array will keep like string expression.
             // using insert not access to mutators on Syscover\Pulsar\Models\CustomFieldResult to change the value type of a string to array automatically
             // we have to do manually casting
             if (is_array($request->input($customField->name_026 . '_custom')) && $dataTypes[$customField->data_type_id_026]->type == 'array') {
                 $customFieldResult['value_028'] = implode(',', $request->input($customField->name_026 . '_custom'));
             } else {
                 // get value and record in your field data type, add suffix '_custom' to avoid conflict with other field names
                 if ($dataTypes[$customField->data_type_id_026]->type == 'boolean') {
                     $customFieldResult['value_028'] = $request->has($customField->name_026 . '_custom');
                 } else {
                     $customFieldResult['value_028'] = $request->input($customField->name_026 . '_custom');
                 }
             }
             $customFieldResults[] = $customFieldResult;
         }
     }
     if (count($customFieldResults) > 0) {
         CustomFieldResult::insert($customFieldResults);
     }
 }