Improved import upload page..

This commit is contained in:
Cüneyt Şentürk 2021-02-11 18:08:06 +03:00
parent 716bc9f422
commit 58daa83030
13 changed files with 198 additions and 85 deletions

View File

@ -82,17 +82,29 @@ abstract class Controller extends BaseController
*
* @return mixed
*/
public function importExcel($class, $request, $url)
public function importExcel($class, $request)
{
try {
Excel::import($class, $request->file('import'));
} catch (SheetNotFoundException | ErrorException | Exception | Throwable $e) {
flash($e->getMessage())->error()->important();
return redirect()->route('import.create', explode('/', $url));
$response = [
'success' => true,
'error' => false,
'data' => null,
'message' => '',
];
} catch (SheetNotFoundException | ErrorException | Exception | Throwable $e) {
$message = $e->getMessage();
$response = [
'success' => false,
'error' => true,
'data' => null,
'message' => $message,
];
}
return true;
return $response;
}
/**

View File

@ -42,13 +42,23 @@ class Transactions extends Controller
*/
public function import(ImportRequest $request)
{
\Excel::import(new Import(), $request->file('import'));
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.transactions', 2)]);
if ($response['success']) {
$response['redirect'] = route('transactions.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.transactions', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['banking', 'transactions']);
return redirect()->route('transactions.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -95,15 +95,23 @@ class Transfers extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'banking/transfers')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.transfers', 2)]);
if ($response['success']) {
$response['redirect'] = route('transfers.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.transfers', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['banking', 'transfers']);
return redirect()->route('transfers.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -111,15 +111,23 @@ class Items extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'common/items')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.items', 2)]);
if ($response['success']) {
$response['redirect'] = route('items.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.items', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['common', 'items']);
return redirect()->route('items.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -128,15 +128,23 @@ class Bills extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/bills')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.bills', 2)]);
if ($response['success']) {
$response['redirect'] = route('bills.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.bills', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['purchases', 'bills']);
return redirect()->route('bills.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -134,15 +134,23 @@ class Payments extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/payments')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.payments', 2)]);
if ($response['success']) {
$response['redirect'] = route('payments.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.payments', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['purchases', 'payments']);
return redirect()->route('payments.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -161,15 +161,23 @@ class Vendors extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/vendors')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.vendors', 2)]);
if ($response['success']) {
$response['redirect'] = route('vendors.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.vendors', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['purchases', 'vendors']);
return redirect()->route('vendors.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -159,15 +159,23 @@ class Customers extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'sales/customers')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.customers', 2)]);
if ($response['success']) {
$response['redirect'] = route('customers.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.customers', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['sales', 'customers']);
return redirect()->route('customers.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -127,15 +127,23 @@ class Invoices extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'sales/invoices')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.invoices', 2)]);
if ($response['success']) {
$response['redirect'] = route('invoices.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.invoices', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['sales', 'invoices']);
return redirect()->route('invoices.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -134,15 +134,23 @@ class Revenues extends Controller
*/
public function import(ImportRequest $request)
{
if (true !== $result = $this->importExcel(new Import, $request, 'sales/revenues')) {
return $result;
}
$response = $this->importExcel(new Import, $request);
$message = trans('messages.success.imported', ['type' => trans_choice('general.revenues', 2)]);
if ($response['success']) {
$response['redirect'] = route('revenues.index');
$message = trans('messages.success.imported', ['type' => trans_choice('general.revenues', 1)]);
flash($message)->success();
} else {
$response['redirect'] = route('import.create', ['sales', 'revenues']);
return redirect()->route('revenues.index');
$message = $response['message'];
flash($message)->error()->important();
}
return response()->json($response);
}
/**

View File

@ -0,0 +1,31 @@
/**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
* building robust, powerful web applications using Vue and Laravel.
*/
require('../../bootstrap');
import Vue from 'vue';
import DashboardPlugin from '../../plugins/dashboard-plugin';
import Global from '../../mixins/global';
import Form from './../../plugins/form';
// plugin setup
Vue.use(DashboardPlugin);
const app = new Vue({
el: '#app',
mixins: [
Global
],
data: function () {
return {
form: new Form('import'),
}
}
});

View File

@ -6,9 +6,13 @@
<div class="card">
@php
$form_open = [
'id' => 'import',
'@submit.prevent' => 'onSubmit',
'@keydown' => 'form.errors.clear($event.target.name)',
'files' => true,
'role' => 'form',
'class' => 'form-loading-button'
'class' => 'form-loading-button',
'novalidate' => true
];
if (!empty($route)) {
@ -26,25 +30,10 @@
{!! trans('import.message', ['link' => url('public/files/import/' . $type . '.xlsx')]) !!}
</div>
</div>
</div>
@stack('import_input_start')
<div class="dropzone dropzone-single" data-toggle="dropzone" data-dropzone-url="#">
<div class="fallback">
<div class="custom-file">
<input type="file" name="import" class="custom-file-input" id="projectCoverUploads">
<label class="custom-file-label" for="projectCoverUploads">{{ trans('general.form.no_file_selected') }}</label>
{{ Form::fileGroup('import', '', 'plus', ['dropzone-class' => 'form-file', 'options' => ['acceptedFiles' => '.xls,.xlsx']], null, 'col-md-12') }}
</div>
</div>
<div class="dz-preview dz-preview-single">
<div class="dz-preview-cover">
<img class="dz-preview-img" src="..." alt="..." data-dz-thumbnail>
</div>
</div>
{!! $errors->first('import', '<p class="help-block">:message</p>') !!}
</div>
@stack('import_input_end')
</div>
<div class="card-footer">
<div class="row save-buttons">
@ -59,10 +48,16 @@
</a>
@endif
{!! Form::button(trans('import.import'), ['type' => 'submit', 'class' => 'btn btn-success']) !!}
{!! Form::button(
'<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('import.import') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success']) !!}
</div>
</div>
</div>
{!! Form::close() !!}
</div>
@endsection
@push('scripts_start')
<script src="{{ asset('public/js/common/imports.js?v=' . version('short')) }}"></script>
@endpush

3
webpack.mix.js vendored
View File

@ -38,10 +38,11 @@ mix
.js('resources/assets/js/views/banking/reconciliations.js', 'public/js/banking')
// Common
.js('resources/assets/js/views/common/items.js', 'public/js/common')
.js('resources/assets/js/views/common/companies.js', 'public/js/common')
.js('resources/assets/js/views/common/dashboards.js', 'public/js/common')
.js('resources/assets/js/views/common/documents.js', 'public/js/common')
.js('resources/assets/js/views/common/imports.js', 'public/js/common')
.js('resources/assets/js/views/common/items.js', 'public/js/common')
.js('resources/assets/js/views/common/reports.js', 'public/js/common')
.js('resources/assets/js/views/common/search.js', 'public/js/common')