company_id) ? Company::getIdForCurrentUser($this->company_id) : $this->company_id; $this->parseLastAuditDate(); $this->merge([ 'asset_tag' => $this->asset_tag ?? Asset::autoincrement_asset(), 'company_id' => $idForCurrentUser, 'assigned_to' => $assigned_to ?? null, ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(): array { $modelRules = (new Asset)->getRules(); $modelRules['purchase_cost'] = $this->removeNumericRulesFromPurchaseCost($modelRules['purchase_cost']); $rules = array_merge( $modelRules, parent::rules(), ); return $rules; } private function parseLastAuditDate(): void { if ($this->input('last_audit_date')) { try { $lastAuditDate = Carbon::parse($this->input('last_audit_date')); $this->merge([ 'last_audit_date' => $lastAuditDate->startOfDay()->format('Y-m-d H:i:s'), ]); } catch (InvalidFormatException $e) { // we don't need to do anything here... // we'll keep the provided date in an // invalid format so validation picks it up later } } } private function removeNumericRulesFromPurchaseCost($purchaseCost) { // If rule is in "|" format then turn it into an array if (is_string($purchaseCost)) { $purchaseCost = explode('|', $purchaseCost); } return array_filter($purchaseCost, function ($rule) { return $rule !== 'numeric' && $rule !== 'gte:0'; }); } }