|
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