This commit is contained in:
denisdulici
2017-11-30 11:47:56 +03:00
parent 5a1dec431a
commit 52e2102c03
34 changed files with 1096 additions and 2 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Common;
use App\Http\Controllers\Controller;
class Import extends Controller
{
/**
* Show the form for creating a new resource.
*
* @param $group
* @param $type
* @return Response
*/
public function create($group, $type)
{
$path = $group . '/' . $type;
return view('common.import.create', compact('group', 'type', 'path'));
}
}

View File

@ -39,7 +39,7 @@ class Controller extends BaseController
}
// Add CRUD permission check
$this->middleware('permission:create-' . $controller)->only(['create', 'store', 'duplicate']);
$this->middleware('permission:create-' . $controller)->only(['create', 'store', 'duplicate', 'import']);
$this->middleware('permission:read-' . $controller)->only(['index', 'show', 'edit']);
$this->middleware('permission:update-' . $controller)->only(['update']);
$this->middleware('permission:delete-' . $controller)->only('destroy');

View File

@ -22,6 +22,7 @@ use App\Models\Setting\Tax;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
use App\Utilities\Modules;
use Date;
@ -284,6 +285,31 @@ class Bills extends Controller
return redirect('expenses/bills/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Bill::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.bills', 2)]);
flash($message)->success();
return redirect('expenses/bills');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -10,7 +10,7 @@ use App\Models\Expense\Vendor;
use App\Models\Setting\Category;
use App\Models\Setting\Currency;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
use App\Utilities\Modules;
class Payments extends Controller
@ -108,6 +108,31 @@ class Payments extends Controller
return redirect('expenses/payments/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Payment::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.payments', 2)]);
flash($message)->success();
return redirect('expenses/payments');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\Expense\Vendor as Request;
use App\Models\Expense\Vendor;
use App\Models\Setting\Currency;
use App\Utilities\ImportFile;
class Vendors extends Controller
{
@ -70,6 +71,31 @@ class Vendors extends Controller
return redirect('expenses/vendors/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Vendor::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.vendors', 2)]);
flash($message)->success();
return redirect('expenses/vendors');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -7,6 +7,7 @@ use App\Http\Requests\Income\Customer as Request;
use App\Models\Auth\User;
use App\Models\Income\Customer;
use App\Models\Setting\Currency;
use App\Utilities\ImportFile;
class Customers extends Controller
{
@ -94,6 +95,31 @@ class Customers extends Controller
return redirect('incomes/customers/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Customer::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.customers', 2)]);
flash($message)->success();
return redirect('incomes/customers');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -26,6 +26,7 @@ use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Incomes;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
use App\Utilities\Modules;
use Date;
use File;
@ -276,6 +277,31 @@ class Invoices extends Controller
return redirect('incomes/invoices/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Invoice::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.invoices', 2)]);
flash($message)->success();
return redirect('incomes/invoices');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -12,6 +12,7 @@ use App\Models\Setting\Currency;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
use App\Utilities\Modules;
class Revenues extends Controller
@ -109,6 +110,31 @@ class Revenues extends Controller
return redirect('incomes/revenues/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Revenue::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.revenues', 2)]);
flash($message)->success();
return redirect('incomes/revenues');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -9,6 +9,7 @@ use App\Models\Setting\Category;
use App\Models\Setting\Currency;
use App\Models\Setting\Tax;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
class Items extends Controller
{
@ -85,6 +86,31 @@ class Items extends Controller
return redirect('items/items/' . $clone->id . '/edit');
}
/**
* Import the specified resource.
*
* @param ImportFile $import
*
* @return Response
*/
public function import(ImportFile $import)
{
$rows = $import->all();
foreach ($rows as $row) {
$data = $row->toArray();
$data['company_id'] = session('company_id');
Item::create($data);
}
$message = trans('messages.success.imported', ['type' => trans_choice('general.items', 2)]);
flash($message)->success();
return redirect('items/items');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -0,0 +1,48 @@
<?php
namespace App\Listeners\Updates;
use App\Events\UpdateFinished;
use App\Models\Auth\Role;
use App\Models\Auth\Permission;
class Version110 extends Listener
{
const ALIAS = 'core';
const VERSION = '1.1.0';
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(UpdateFinished $event)
{
// Check if should listen
if (!$this->check($event)) {
return;
}
// Create permission
$permission = Permission::firstOrCreate([
'name' => 'create-common-import',
'display_name' => 'Create Common Import',
'description' => 'Create Common Import',
]);
// Attach permission to roles
$roles = Role::all();
foreach ($roles as $role) {
$allowed = ['admin', 'manager'];
if (!in_array($role->name, $allowed)) {
continue;
}
$role->attachPermission($permission);
}
}
}

View File

@ -18,6 +18,7 @@ class EventServiceProvider extends ServiceProvider
'App\Listeners\Updates\Version107',
'App\Listeners\Updates\Version108',
'App\Listeners\Updates\Version109',
'App\Listeners\Updates\Version110',
],
'Illuminate\Auth\Events\Login' => [
'App\Listeners\Auth\Login',

View File

@ -0,0 +1,36 @@
<?php
namespace App\Utilities;
use Maatwebsite\Excel\Files\ExcelFile;
use Storage;
class ImportFile extends ExcelFile
{
public function getFile()
{
$request = request();
if (!$request->hasFile('import')) {
flash(trans('messages.error.no_file'))->error();
redirect()->back()->send();
}
$folder = session('company_id') . '/imports';
// Upload file
$path = Storage::path($request->import->store($folder));
return $path;
}
public function getFilters()
{
return [
'chunk'
];
}
}