Improved import upload page..
This commit is contained in:
parent
716bc9f422
commit
58daa83030
@ -82,17 +82,29 @@ abstract class Controller extends BaseController
|
|||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function importExcel($class, $request, $url)
|
public function importExcel($class, $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Excel::import($class, $request->file('import'));
|
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)
|
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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'banking/transfers')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'common/items')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/bills')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/payments')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'purchases/vendors')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'sales/customers')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'sales/invoices')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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)
|
public function import(ImportRequest $request)
|
||||||
{
|
{
|
||||||
if (true !== $result = $this->importExcel(new Import, $request, 'sales/revenues')) {
|
$response = $this->importExcel(new Import, $request);
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
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">
|
<div class="card">
|
||||||
@php
|
@php
|
||||||
$form_open = [
|
$form_open = [
|
||||||
|
'id' => 'import',
|
||||||
|
'@submit.prevent' => 'onSubmit',
|
||||||
|
'@keydown' => 'form.errors.clear($event.target.name)',
|
||||||
'files' => true,
|
'files' => true,
|
||||||
'role' => 'form',
|
'role' => 'form',
|
||||||
'class' => 'form-loading-button'
|
'class' => 'form-loading-button',
|
||||||
|
'novalidate' => true
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!empty($route)) {
|
if (!empty($route)) {
|
||||||
@ -26,25 +30,10 @@
|
|||||||
{!! trans('import.message', ['link' => url('public/files/import/' . $type . '.xlsx')]) !!}
|
{!! trans('import.message', ['link' => url('public/files/import/' . $type . '.xlsx')]) !!}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
@stack('import_input_start')
|
{{ Form::fileGroup('import', '', 'plus', ['dropzone-class' => 'form-file', 'options' => ['acceptedFiles' => '.xls,.xlsx']], null, 'col-md-12') }}
|
||||||
<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>
|
|
||||||
</div>
|
</div>
|
||||||
</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="card-footer">
|
||||||
<div class="row save-buttons">
|
<div class="row save-buttons">
|
||||||
@ -59,10 +48,16 @@
|
|||||||
</a>
|
</a>
|
||||||
@endif
|
@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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{!! Form::close() !!}
|
{!! Form::close() !!}
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@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')
|
.js('resources/assets/js/views/banking/reconciliations.js', 'public/js/banking')
|
||||||
|
|
||||||
// Common
|
// 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/companies.js', 'public/js/common')
|
||||||
.js('resources/assets/js/views/common/dashboards.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/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/reports.js', 'public/js/common')
|
||||||
.js('resources/assets/js/views/common/search.js', 'public/js/common')
|
.js('resources/assets/js/views/common/search.js', 'public/js/common')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user