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;
 | 
						|
    }
 | 
						|
} |