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; } }