79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace kernel\app_modules\user_custom_fields\services;
 | |
| 
 | |
| use kernel\app_modules\user_custom_fields\models\forms\CreateUserCustomValueForm;
 | |
| use kernel\app_modules\user_custom_fields\models\UserCustomValues;
 | |
| use kernel\FormModel;
 | |
| 
 | |
| class UserCustomValuesService
 | |
| {
 | |
|     public function create(FormModel $form_model): false|UserCustomValues
 | |
|     {
 | |
|         $model = new UserCustomValues();
 | |
|         $model->user_id = $form_model->getItem('user_id');
 | |
|         $model->custom_field_id = $form_model->getItem('custom_field_id');
 | |
|         $model->value = $form_model->getItem('value');
 | |
| 
 | |
|         if ($model->save()) {
 | |
|             return $model;
 | |
|         }
 | |
| 
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public function update(FormModel $form_model, UserCustomValues $user_custom_value): false|UserCustomValues
 | |
|     {
 | |
|         $user_custom_value->user_id = $form_model->getItem('user_id');
 | |
|         $user_custom_value->custom_field_id = $form_model->getItem('custom_field_id');
 | |
|         $user_custom_value->value = $form_model->getItem('value');
 | |
| 
 | |
|         if ($user_custom_value->save()) {
 | |
|             return $user_custom_value;
 | |
|         }
 | |
| 
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public static function getValuesByUserId(int $user_id): \Illuminate\Database\Eloquent\Collection
 | |
|     {
 | |
|         return UserCustomValues::with(['customField'])->where(['user_id' => $user_id])->get();
 | |
|     }
 | |
| 
 | |
|     public static function getValueByFieldAndUser(int $custom_field_id, int $user_id): UserCustomValues|null
 | |
|     {
 | |
|         return UserCustomValues::where([
 | |
|             'custom_field_id' => $custom_field_id,
 | |
|             'user_id' => $user_id
 | |
|         ])->first();
 | |
|     }
 | |
| 
 | |
|     public static function deleteByUserAndField(int $user_id, int $custom_field_id): bool
 | |
|     {
 | |
|         $record = self::getValueByFieldAndUser($custom_field_id, $user_id);
 | |
| 
 | |
|         if ($record) {
 | |
|             return $record->delete();
 | |
|         }
 | |
| 
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public static function save(int $userId, string $slug, string $value): UserCustomValues
 | |
|     {
 | |
|         $customField = CustomFieldService::getOrCreateBySlug($slug);
 | |
|         $model = UserCustomValues::where('user_id', $userId)->where('custom_field_id', $customField->id)->first();
 | |
|         if (!$model) {
 | |
|             $service = new self();
 | |
|             $form = new CreateUserCustomValueForm();
 | |
|             $form->load([
 | |
|                 'custom_field_id' => $customField->id,
 | |
|                 'user_id' => $userId,
 | |
|                 'value' => $value,
 | |
|             ]);
 | |
|             $model = $service->create($form);
 | |
|         }
 | |
| 
 | |
|         return $model;
 | |
|     }
 | |
| } |