@@ -96,9 +96,8 @@ public function create(): Preference
9696
9797 public function updateOrCreate (): Preference
9898 {
99- if (isset ($ this ->preference ->default_value )) {
100- ValidationHelper::validatePreference ($ this ->preference );
101- }
99+ ValidationHelper::validatePreference ($ this ->preference );
100+
102101
103102 $ this ->preference = Preference::updateOrCreate (
104103 $ this ->preference ->toArrayOnly (['name ' , 'group ' ]),
@@ -116,45 +115,15 @@ public static function initBulk(array $preferences, bool $nullable = false): voi
116115 throw new InvalidArgumentException ("no preferences provided " );
117116 }
118117
119- foreach ($ preferences as $ key => &$ preferenceData ) {
118+ foreach ($ preferences as $ index => &$ preferenceData ) {
120119 if (empty ($ preferenceData ['cast ' ])) {
121120 $ preferenceData ['cast ' ] = Cast::STRING ;
122121 }
123122 if (!array_key_exists ('nullable ' , $ preferenceData )) {
124123 $ preferenceData ['nullable ' ] = $ nullable ;
125124 }
126125
127- if (empty ($ preferenceData ['name ' ]) || !($ preferenceData ['name ' ] instanceof PreferenceGroup)) {
128- throw new InvalidArgumentException (
129- sprintf ("index: #%s name is required and needs to be a PreferenceGroup " , $ key )
130- );
131- }
132- if (empty ($ preferenceData ['cast ' ]) || !($ preferenceData ['cast ' ] instanceof CastableEnum)) {
133- throw new InvalidArgumentException (
134- sprintf ("index: #%s cast is required and needs to implement 'CastableEnum' " , $ key )
135- );
136- }
137- if (!empty ($ preferenceData ['rule ' ]) && !$ preferenceData ['rule ' ] instanceof ValidationRule) {
138- throw new InvalidArgumentException (
139- sprintf ("index: #%s validation rule musst implement ValidationRule " , $ key )
140- );
141- }
142-
143- if (!empty ($ preferenceData ['default_value ' ])) {
144- ValidationHelper::validateValue (
145- $ preferenceData ['default_value ' ],
146- $ preferenceData ['cast ' ] ?? null ,
147- $ preferenceData ['rule ' ] ?? null ,
148- $ preferenceData ['nullable ' ],
149- );
150- }
151-
152-
153- if (array_key_exists ('group ' , $ preferenceData )) {
154- throw new InvalidArgumentException (
155- sprintf ("index: #%s group has been deprecated " , $ key )
156- );
157- }
126+ ValidationHelper::validatePreferenceData ($ preferenceData , $ index );
158127
159128 SerializeHelper::conformNameAndGroup ($ preferenceData ['name ' ], $ preferenceData ['group ' ]);
160129
@@ -166,14 +135,14 @@ public static function initBulk(array $preferences, bool $nullable = false): voi
166135 $ preferenceData ['default_value ' ] = $ valueCaster ->set (null , '' , $ preferenceData ['default_value ' ], []);
167136 }
168137
169-
170138 $ preferenceData ['cast ' ] = serialize ($ preferenceData ['cast ' ]);
171139
172140 // Ensure Defaults
173141 $ preferenceData = array_merge ([
174142 'group ' => 'general ' ,
175143 'default_value ' => null ,
176144 'description ' => '' ,
145+ 'policy ' => null ,
177146 'rule ' => null ,
178147 'nullable ' => false ,
179148 ], $ preferenceData );
@@ -189,10 +158,10 @@ public static function deleteBulk(array $preferences): int
189158 }
190159 $ query = Preference::query ();
191160
192- foreach ($ preferences as $ key => $ preferenceData ) {
193- if (empty ($ preferenceData ['name ' ])) {
161+ foreach ($ preferences as $ index => $ preferenceData ) {
162+ if (empty ($ preferenceData ['name ' ]) || !( $ preferenceData [ ' name ' ] instanceof PreferenceGroup) ) {
194163 throw new InvalidArgumentException (
195- sprintf ("index: #%s name is required " , $ key )
164+ sprintf ("index: #%s name is required and must implement PreferenceGroup " , $ index )
196165 );
197166 }
198167
0 commit comments