input = $input; } public function passes($attribute, $value) { return $this->checkInvoicesAreHomogenous(); } private function checkInvoicesAreHomogenous() { if(!array_key_exists('client_id', $this->input)){ $this->error_msg = "Client id is required"; return false; } $unique_array = []; foreach($this->input['invoices'] as $invoice) { $unique_array[] = $invoice['invoice_id']; $inv = Invoice::whereId($invoice['invoice_id'])->first(); if(!$inv){ $this->error_msg = "Invoice not found "; return false; } if($inv->client_id != $this->input['client_id']){ $this->error_msg = "Selected invoices are not from a single client"; return false; } } if(!(array_unique($unique_array) == $unique_array)) { $this->error_msg = "Duplicate invoices submitted."; return false; } return true; } /** * @return string */ public function message() { return $this->error_msg; } }