company->owner()->account; $extension = $this->file->getClientOriginalExtension() ?: $this->file->getExtension(); $mimetype = $this->file->getClientMimeType() ?: $$this->file->getMimeType(); // ZUGFERD - try to parse via Zugferd lib switch (true) { case ($extension == 'pdf' || $mimetype == 'application/pdf'): case ($extension == 'xml' || $mimetype == 'application/xml') && stristr($this->file->get(), "urn:cen.eu:en16931:2017"): case ($extension == 'xml' || $mimetype == 'application/xml') && stristr($this->file->get(), "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0"): case ($extension == 'xml' || $mimetype == 'application/xml') && stristr($this->file->get(), "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_2.1"): case ($extension == 'xml' || $mimetype == 'application/xml') && stristr($this->file->get(), "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_2.0"): try { return (new ZugferdEDocument($this->file, $this->company))->run(); } catch (Exception $e) { nlog("Zugferd Exception: " . $e->getMessage()); } } // MINDEE OCR - try to parse via mindee external service if (config('services.mindee.api_key') && !(Ninja::isHosted() && !($account->isPaid() && $account->plan == 'enterprise'))) switch (true) { case ($extension == 'pdf' || $mimetype == 'application/pdf'): case ($extension == 'heic' || $extension == 'heic' || $extension == 'png' || $extension == 'jpg' || $extension == 'jpeg' || $extension == 'webp' || str_starts_with($mimetype, 'image/')): try { return (new MindeeEDocument($this->file, $this->company))->run(); } catch (Exception $e) { if (!($e->getMessage() == 'Unsupported document type')) nlog("Mindee Exception: " . $e->getMessage()); } } // NO PARSER OR ERROR throw new Exception("File type not supported or issue while parsing", 409); } }