@@ -110,17 +110,35 @@ public function store(ImageUploadRequest $request) : RedirectResponse
110110 // This is only necessary on create, not update, since bulk editing is handled
111111 // differently
112112 $ asset_tags = $ request ->input ('asset_tags ' );
113+ $ model = AssetModel::find ($ request ->input ('model_id ' ));
114+ $ serial_errors = [];
115+ $ serials = $ request ->input ('serials ' );
113116
114117 $ settings = Setting::getSettings ();
115118
119+ //Validate required serial based on model setting
120+ for ($ a = 1 , $ aMax = count ($ asset_tags ); $ a <= $ aMax ; $ a ++) {
121+ if ($ model && $ model ->require_serial === 1 && empty ($ serials [$ a ])) {
122+ $ serial_errors ["serials. $ a " ] = trans ('admin/hardware/form.serial_required ' , ['number ' => $ a ]);
123+ }
124+
125+ }
126+
127+ if (!empty ($ serial_errors )) {
128+ return redirect ()->back ()
129+ ->withInput ()
130+ ->withErrors ($ serial_errors );
131+ }
132+
133+ $ asset = null ;
134+ $ companyId = Company::getIdForCurrentUser ($ request ->input ('company_id ' ));
116135 $ successes = [];
117136 $ failures = [];
118- $ serials = $ request ->input ('serials ' );
119- $ asset = null ;
120137
121- for ($ a = 1 ; $ a < = count ($ asset_tags ); $ a ++) {
138+ for ($ a = 1 , $ aMax = count ($ asset_tags ); $ a <= $ aMax ; $ a ++) {
122139 $ asset = new Asset ();
123- $ asset ->model ()->associate (AssetModel::find ($ request ->input ('model_id ' )));
140+
141+ $ asset ->model ()->associate ($ model );
124142 $ asset ->name = $ request ->input ('name ' );
125143
126144 // Check for a corresponding serial
@@ -132,7 +150,7 @@ public function store(ImageUploadRequest $request) : RedirectResponse
132150 $ asset ->asset_tag = $ asset_tags [$ a ];
133151 }
134152
135- $ asset ->company_id = Company:: getIdForCurrentUser ( $ request -> input ( ' company_id ' )) ;
153+ $ asset ->company_id = $ companyId ;
136154 $ asset ->model_id = $ request ->input ('model_id ' );
137155 $ asset ->order_number = $ request ->input ('order_number ' );
138156 $ asset ->notes = $ request ->input ('notes ' );
@@ -172,7 +190,6 @@ public function store(ImageUploadRequest $request) : RedirectResponse
172190
173191 // Update custom fields in the database.
174192 // Validation for these fields is handled through the AssetRequest form request
175- $ model = AssetModel::find ($ request ->get ('model_id ' ));
176193
177194 if (($ model ) && ($ model ->fieldset )) {
178195 foreach ($ model ->fieldset ->fields as $ field ) {
@@ -453,6 +470,13 @@ public function update(ImageUploadRequest $request, Asset $asset) : RedirectResp
453470 ]);
454471
455472
473+ //Validate required serial based on model setting
474+ if ($ model && $ model ->require_serial === 1 && empty ($ serial [1 ])) {
475+ return redirect ()->to (Helper::getRedirectOption ($ request , $ asset ->id , 'Assets ' ))
476+ ->with ('warning ' , trans ('admin/hardware/form.serial_required_post_model_update ' , [
477+ 'asset_model ' => $ model ->name
478+ ]));
479+ }
456480 if ($ asset ->save ()) {
457481 return Helper::getRedirectOption ($ request , $ asset ->id , 'Assets ' )
458482 ->with ('success ' , trans ('admin/hardware/message.update.success ' ));
0 commit comments