|
3 | 3 | namespace Matteoc99\LaravelPreference\Factory;
|
4 | 4 |
|
5 | 5 | use Illuminate\Database\Eloquent\Builder;
|
| 6 | +use Matteoc99\LaravelPreference\Casts\EnumCaster; |
| 7 | +use Matteoc99\LaravelPreference\Casts\RuleCaster; |
| 8 | +use Matteoc99\LaravelPreference\Casts\ValueCaster; |
6 | 9 | use Matteoc99\LaravelPreference\Contracts\CastableEnum;
|
7 | 10 | use Matteoc99\LaravelPreference\Contracts\HasValidation;
|
8 | 11 | use Matteoc99\LaravelPreference\Enums\Cast;
|
@@ -101,20 +104,33 @@ public static function initBulk(array $preferences)
|
101 | 104 | );
|
102 | 105 | }
|
103 | 106 |
|
| 107 | + if (!empty($preferenceData['default_value']) && !empty($preferenceData['rule']) && !$preferenceData['rule']->passes('', $preferenceData['default_value'])) { |
| 108 | + throw new \InvalidArgumentException( |
| 109 | + sprintf("index: #%s default_value fails the validation rule", $key) |
| 110 | + ); |
| 111 | + } |
| 112 | + |
| 113 | + //cast values for DB |
| 114 | + |
| 115 | + if(array_key_exists('rule',$preferenceData)){ |
| 116 | + $ruleCaster = new RuleCaster(); |
| 117 | + $preferenceData['rule'] = $ruleCaster->set(null,'',$preferenceData['rule'],[]); |
| 118 | + } |
| 119 | + if(array_key_exists('default_value',$preferenceData)){ |
| 120 | + $valueCaster = new ValueCaster($preferenceData['cast']); |
| 121 | + $preferenceData['default_value'] = $valueCaster->set(null,'',$preferenceData['default_value'],[]); |
| 122 | + } |
| 123 | + |
| 124 | + $enumCaster = new EnumCaster(); |
| 125 | + $preferenceData['cast'] = $enumCaster->set(null,'',$preferenceData['cast'],[]); |
| 126 | + |
104 | 127 | // Ensure Defaults
|
105 | 128 | $preferenceData = array_merge([
|
106 | 129 | 'group' => 'general',
|
107 | 130 | 'default_value' => null,
|
108 | 131 | 'description' => '',
|
109 | 132 | 'rule' => null,
|
110 | 133 | ], $preferenceData);
|
111 |
| - |
112 |
| - if ($preferenceData['default_value'] && $preferenceData['rule'] && !$preferenceData['rule']->passes('', $preferenceData['default_value'])) { |
113 |
| - throw new \InvalidArgumentException( |
114 |
| - sprintf("index: #%s default_value fails the validation rule", $key) |
115 |
| - ); |
116 |
| - } |
117 |
| - |
118 | 134 | }
|
119 | 135 |
|
120 | 136 | Preference::upsert($preferences, ['name', 'group']);
|
|
0 commit comments