App\services\ImportService::importJSON PHP Method

importJSON() public method

public importJSON ( $file ) : array
$file
return array
    public function importJSON($file)
    {
        $this->init();
        $file = file_get_contents($file);
        $json = json_decode($file, true);
        $json = $this->removeIdFields($json);
        $this->checkClientCount(count($json['clients']));
        foreach ($json['clients'] as $jsonClient) {
            if (EntityModel::validate($jsonClient, ENTITY_CLIENT) === true) {
                $client = $this->clientRepo->save($jsonClient);
                $this->addSuccess($client);
            } else {
                $this->addFailure(ENTITY_CLIENT, $jsonClient);
                continue;
            }
            foreach ($jsonClient['invoices'] as $jsonInvoice) {
                $jsonInvoice['client_id'] = $client->id;
                if (EntityModel::validate($jsonInvoice, ENTITY_INVOICE) === true) {
                    $invoice = $this->invoiceRepo->save($jsonInvoice);
                    $this->addSuccess($invoice);
                } else {
                    $this->addFailure(ENTITY_INVOICE, $jsonInvoice);
                    continue;
                }
                foreach ($jsonInvoice['payments'] as $jsonPayment) {
                    $jsonPayment['invoice_id'] = $invoice->public_id;
                    if (EntityModel::validate($jsonPayment, ENTITY_PAYMENT) === true) {
                        $jsonPayment['client_id'] = $client->id;
                        $jsonPayment['invoice_id'] = $invoice->id;
                        $payment = $this->paymentRepo->save($jsonPayment);
                        $this->addSuccess($payment);
                    } else {
                        $this->addFailure(ENTITY_PAYMENT, $jsonPayment);
                        continue;
                    }
                }
            }
        }
        return $this->results;
    }