mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
export and import
This commit is contained in:
@@ -25,3 +25,6 @@ docker-compose.yml
|
|||||||
package-lock.json
|
package-lock.json
|
||||||
public/*
|
public/*
|
||||||
/public/*
|
/public/*
|
||||||
|
/storage/app/public
|
||||||
|
public
|
||||||
|
/storage/framework/laravel-excel
|
||||||
|
|||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Classes\General;
|
||||||
|
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
class ExcelHandel
|
||||||
|
{
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function generateFolder($path = '')
|
||||||
|
{
|
||||||
|
$folder = \Storage::disk('public')->makeDirectory($path);
|
||||||
|
return $folder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function insertExcel($path = '', $base64Set = [])
|
||||||
|
{
|
||||||
|
$file_info = [];
|
||||||
|
$folder_path = ExcelHandel::generateFolder('excels/' . $path);
|
||||||
|
|
||||||
|
foreach ($base64Set as $key => $row) {
|
||||||
|
|
||||||
|
$exceldata = $row;
|
||||||
|
$filename = (string) Str::uuid();
|
||||||
|
|
||||||
|
$f = finfo_open();
|
||||||
|
$mime_type = finfo_file($f, $exceldata, FILEINFO_MIME_TYPE);
|
||||||
|
|
||||||
|
$extension = 'xls';
|
||||||
|
|
||||||
|
switch ($mime_type) {
|
||||||
|
case 'application/vnd.ms-excel':
|
||||||
|
$extension = 'xls';
|
||||||
|
break;
|
||||||
|
case 'application/zip':
|
||||||
|
$extension = 'xlsx';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($extension)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$exceldata = explode('base64,', $exceldata);
|
||||||
|
$exceldata = base64_decode($exceldata[1]);
|
||||||
|
|
||||||
|
$filename_with_ext = $filename . '.' . $extension;
|
||||||
|
|
||||||
|
$file = ExcelHandel::generateExcel($path, $exceldata, $filename, $extension);
|
||||||
|
|
||||||
|
$file_info[] = [
|
||||||
|
'path' => $path,
|
||||||
|
'filename' => $filename_with_ext,
|
||||||
|
'mime_type' => $mime_type,
|
||||||
|
'extension' => $extension,
|
||||||
|
'file_info' => empty($file) ? [] : $file,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $file_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function generateExcel($path = '', $exceldata = '', $filename = '', $extension = '')
|
||||||
|
{
|
||||||
|
$file_info = [];
|
||||||
|
$file = \Storage::disk('public')->put('excels/' . $path . '/' . $filename . '.' . $extension, $exceldata);
|
||||||
|
$file_info['original']['file'] = storage_path('app/public/excels/' . $path . '/' . $filename . '.' . $extension);
|
||||||
|
|
||||||
|
return $file_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function removeExcel($excel_info = [])
|
||||||
|
{
|
||||||
|
$excel_info = json_decode(json_encode($excel_info), true);
|
||||||
|
foreach ($excel_info as $key => $row) {
|
||||||
|
if (!empty($row['path'])) {
|
||||||
|
\File::delete([$row['file_info']['original']['file']]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Exports\Services;
|
||||||
|
|
||||||
|
use App\Classes\ValueObjects\Constants\BusinessType;
|
||||||
|
use App\Classes\ValueObjects\Constants\CompanyType;
|
||||||
|
use App\Models\Company;
|
||||||
|
use Maatwebsite\Excel\Concerns\Exportable;
|
||||||
|
use Maatwebsite\Excel\Concerns\FromQuery;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadingRow;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
|
||||||
|
class ExportsNullDebtors implements FromQuery, WithHeadingRow, WithMapping
|
||||||
|
{
|
||||||
|
|
||||||
|
use Exportable;
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Code',
|
||||||
|
'CompanyName',
|
||||||
|
'Desc2',
|
||||||
|
'AreaCode',
|
||||||
|
'SalesAgent',
|
||||||
|
'DebtorType',
|
||||||
|
'DisplayTerm',
|
||||||
|
'AgingOn',
|
||||||
|
'StatementType',
|
||||||
|
'CurrencyCode',
|
||||||
|
'RegisterNo',
|
||||||
|
'Address1',
|
||||||
|
'Address2',
|
||||||
|
'Address3',
|
||||||
|
'Address4',
|
||||||
|
'PostCode',
|
||||||
|
'DeliverAddr1',
|
||||||
|
'DeliverAddr2',
|
||||||
|
'DeliverAddr3',
|
||||||
|
'DeliverAddr4',
|
||||||
|
'DeliverPostCode',
|
||||||
|
'Attention',
|
||||||
|
'Phone1',
|
||||||
|
'Phone2',
|
||||||
|
'Fax1',
|
||||||
|
'Fax2',
|
||||||
|
'ExemptNo',
|
||||||
|
'ExpiryDate',
|
||||||
|
'PriceCategory',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Illuminate\Support\Collection|mixed
|
||||||
|
*/
|
||||||
|
public function query()
|
||||||
|
{
|
||||||
|
return Company::where('debtor', '=', null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Company $company
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function map($company): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$company->reference, //Code
|
||||||
|
$company->name, //CompanyName
|
||||||
|
'', //Desc2
|
||||||
|
'', //AreaCode
|
||||||
|
'', //SalesAgent
|
||||||
|
'', //DebtorType
|
||||||
|
'', //DisplayTerm
|
||||||
|
'', //AgingOn
|
||||||
|
'', //StatementType
|
||||||
|
'MYR', //CurrencyCode
|
||||||
|
$company->reference, //RegisterNo
|
||||||
|
'', //Address1
|
||||||
|
'', //Address2
|
||||||
|
'', //Address3
|
||||||
|
'', //Address4
|
||||||
|
'', //PostCode
|
||||||
|
'', //DeliverAddr1
|
||||||
|
'', //DeliverAddr2
|
||||||
|
'', //DeliverAddr3
|
||||||
|
'', //DeliverAddr4
|
||||||
|
'', //DeliverPostCode
|
||||||
|
'', //Attention
|
||||||
|
'', //Phone1
|
||||||
|
'', //Phone2
|
||||||
|
'', //Fax1
|
||||||
|
'', //Fax2
|
||||||
|
'', //ExemptNo
|
||||||
|
'', //ExpiryDate
|
||||||
|
'', //PriceCategory
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Imports\Services;
|
||||||
|
|
||||||
|
use App\Models\Company;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\ToModel;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadingRow;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithBatchInserts;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithValidation;
|
||||||
|
|
||||||
|
class ImportsDebtor implements ToModel, WithHeadingRow, WithBatchInserts, WithValidation
|
||||||
|
{
|
||||||
|
public function __construct() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function model($row = [])
|
||||||
|
{
|
||||||
|
$reference = str_replace('/CIEF', '', $row['2nd_description']);
|
||||||
|
|
||||||
|
$debtor = $row['code'];
|
||||||
|
$company = Company::where('reference', $reference)->first();
|
||||||
|
|
||||||
|
if ($company) {
|
||||||
|
$company->debtor = $debtor;
|
||||||
|
$company->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function batchSize(): int
|
||||||
|
{
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Exports;
|
|||||||
|
|
||||||
use App\Classes\Modules\Exports\Services\ExportsCustomers;
|
use App\Classes\Modules\Exports\Services\ExportsCustomers;
|
||||||
use App\Classes\Modules\Exports\Services\ExportsTransactions;
|
use App\Classes\Modules\Exports\Services\ExportsTransactions;
|
||||||
|
use App\Classes\Modules\Exports\Services\ExportsNullDebtors;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@@ -24,4 +25,10 @@ class ExportCustomersToExcelController
|
|||||||
$request->headers->set('Authorization', 'Bearer '.$token);
|
$request->headers->set('Authorization', 'Bearer '.$token);
|
||||||
return $exportsTransactions->download('transactions.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
|
return $exportsTransactions->download('transactions.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function nullDebtor(ExportsNullDebtors $exportsNullDebtors, Request $request){
|
||||||
|
$token = Auth::fromUser(User::find(1));
|
||||||
|
$request->headers->set('Authorization', 'Bearer '.$token);
|
||||||
|
return $exportsNullDebtors->download('nullDebtor.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Imports;
|
||||||
|
|
||||||
|
use App\Classes\Modules\Imports\Services\ImportsDebtor;
|
||||||
|
use App\Classes\General\ExcelHandel;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
|
class ImportUpdateDebtorController
|
||||||
|
{
|
||||||
|
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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -168,6 +168,9 @@ Route::get('billplz/bills/{bill_no}', function($bill_no){
|
|||||||
|
|
||||||
Route::get('/export/customers/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export');
|
Route::get('/export/customers/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export');
|
||||||
Route::get('/export/transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@transactions');
|
Route::get('/export/transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@transactions');
|
||||||
|
Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@nullDebtor');
|
||||||
|
|
||||||
|
Route::get('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import');
|
||||||
|
|
||||||
Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) {
|
Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) {
|
||||||
return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
|
return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
*
|
|
||||||
!.gitignore
|
|
||||||
Reference in New Issue
Block a user