Improved import upload page..
This commit is contained in:
parent
716bc9f422
commit
58daa83030
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
31
resources/assets/js/views/common/imports.js
vendored
Normal file
31
resources/assets/js/views/common/imports.js
vendored
Normal 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'),
|
||||
}
|
||||
}
|
||||
});
|
@ -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
3
webpack.mix.js
vendored
@ -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')
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user