diff --git a/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php b/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php index ed289eac..736853fc 100644 --- a/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php +++ b/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php @@ -28,7 +28,7 @@ class FileObject implements DataTransferObject */ public function getData() { - return $this->getExtension() === 'pdf' ? $this->data : (new imageManager())->make($this->data); + return in_array($this->getExtension(), ['pdf', 'excel']) ? $this->data : (new imageManager())->make($this->data); } /** @@ -66,7 +66,7 @@ class FileObject implements DataTransferObject */ public function getDecodedData(): string { - return $this->getExtension() === 'pdf' ? + return in_array($this->getExtension(), ['pdf', 'excel']) ? base64_decode((explode('base64,', $this->getData()))[1]): $this->getData()->encode('data-url')->encoded; } diff --git a/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php b/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php index a7a5c8b6..8741b823 100644 --- a/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php +++ b/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php @@ -36,7 +36,7 @@ class ConvertsBase64ToFile foreach ($files as $file) { $object = new FileObject($file); - $object->getExtension() === 'pdf' ? $this->generatePDF($object) : $this->generateImage($object); + in_array($object->getExtension(), ['pdf', 'excel']) ? $this->generatePDF($object) : $this->generateImage($object); } diff --git a/app/Classes/ValueObjects/Constants/FileType.php b/app/Classes/ValueObjects/Constants/FileType.php index 8564643c..3ff989ca 100644 --- a/app/Classes/ValueObjects/Constants/FileType.php +++ b/app/Classes/ValueObjects/Constants/FileType.php @@ -14,11 +14,14 @@ class FileType public const PDF = 'application/pdf'; + public const EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + public const EXTENSION = [ 'image/gif' => 'gif', 'image/png' => 'png', 'image/jpeg' => 'jpeg', 'application/pdf' => 'pdf', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'excel', ]; } \ No newline at end of file diff --git a/app/Http/Controllers/Imports/ImportUpdateDebtorController.php b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php index 83d1effd..31f8c348 100644 --- a/app/Http/Controllers/Imports/ImportUpdateDebtorController.php +++ b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php @@ -2,9 +2,11 @@ namespace App\Http\Controllers\Imports; +use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Imports\Services\ImportsDebtor; use App\Classes\General\ExcelHandel; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -12,14 +14,16 @@ use Maatwebsite\Excel\Facades\Excel; class ImportUpdateDebtorController { + /** + * @param Request $request + * @return \Maatwebsite\Excel\Excel + * @throws \App\Classes\Exceptions\MalformedRequestException + */ public function import(Request $request) { $token = Auth::fromUser(User::find(1)); $request->headers->set('Authorization', 'Bearer '.$token); - $excel_file = $request->input('excel_file'); - - $excel_file = ExcelHandel::insertExcel('debtor', $excel_file); - - return $import = Excel::import(new ImportsDebtor(), $excel_file[0]['file_info']['original']['file']); + $object = new DocumentObject('', $request->input('files'), '', ApprovalStatus::APPROVED, 'imports'); + return $import = Excel::import(new ImportsDebtor(), $object->getFiles()[0]); } } \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue new file mode 100644 index 00000000..946bafe1 --- /dev/null +++ b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue @@ -0,0 +1,65 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/general/forms/FileUploadComponent.vue b/resources/assets/vue/components/general/forms/FileUploadComponent.vue index 3028586d..a7eceffd 100644 --- a/resources/assets/vue/components/general/forms/FileUploadComponent.vue +++ b/resources/assets/vue/components/general/forms/FileUploadComponent.vue @@ -81,7 +81,7 @@ url: '#', autoQueue: false, processQueue: false, - acceptedFiles: 'image/*, application/pdf', + acceptedFiles: 'image/*, application/*', uploadMultiple: true, clickable: '.select-btn', previewTemplate: '
' diff --git a/resources/views/pages/dashboards/admin.blade.php b/resources/views/pages/dashboards/admin.blade.php index d998c745..2719cfec 100644 --- a/resources/views/pages/dashboards/admin.blade.php +++ b/resources/views/pages/dashboards/admin.blade.php @@ -303,6 +303,11 @@ +
+
+ +
+
diff --git a/routes/api.php b/routes/api.php index 10c0fb80..6c17a107 100644 --- a/routes/api.php +++ b/routes/api.php @@ -28,6 +28,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::group(['middleware' => 'valid.token'], function () { Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file'); + Route::post('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import')->name('debtor.import'); require __DIR__ . '/company.php'; diff --git a/routes/web.php b/routes/web.php index 656c1447..571ce9fe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -147,8 +147,6 @@ Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\Expo Route::get('/export/payment-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@paymentTransactions'); Route::get('/export/wallet-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@walletTransactions'); -Route::get('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import'); - Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) { return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']); })->name('products.random');