Invoices can be uploaded
This commit is contained in:
52
app/Providers/UploadFileProvider.php
Normal file
52
app/Providers/UploadFileProvider.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\CostUnit;
|
||||
use App\ValueObjects\InvoiceFile;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class UploadFileProvider {
|
||||
private UploadedFile $file;
|
||||
private CostUnit $costUnit;
|
||||
|
||||
public function __construct(UploadedFile $file, CostUnit $costUnit) {
|
||||
$this->file = $file;
|
||||
$this->costUnit = $costUnit;
|
||||
}
|
||||
|
||||
public function saveUploadedFile() : ?InvoiceFile {
|
||||
try {
|
||||
$directory = sprintf(
|
||||
'%1$s/invoices/%2$s',
|
||||
app('tenant')->slug,
|
||||
$this->costUnit->id
|
||||
);
|
||||
|
||||
$filename = $this->normalizeFilename($this->file->getClientOriginalName());
|
||||
|
||||
$path = $this->file->storeAs(
|
||||
$directory,
|
||||
$filename
|
||||
);
|
||||
|
||||
$invoiceFile = new InvoiceFile();
|
||||
$invoiceFile->filename = $filename;
|
||||
$invoiceFile->path = $path;
|
||||
return $invoiceFile;
|
||||
} catch (\Exception $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private function normalizeFilename(string $filename) : string {
|
||||
return strtolower($filename)
|
||||
|> function (string $filename) : string { return str_replace(' ', '_', $filename); }
|
||||
|> function (string $filename) : string { return str_replace('ä', 'ae', $filename); }
|
||||
|> function (string $filename) : string { return str_replace('ö', 'oe', $filename); }
|
||||
|> function (string $filename) : string { return str_replace('ü', 'ue', $filename); }
|
||||
|> function (string $filename) : string { return str_replace('ß', 'ss', $filename); };
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user