* Add checkbox to clear previous data when importing #490
This commit is contained in:
parent
99118daad9
commit
be6c164f03
@ -3,11 +3,12 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Http\Requests\CreateAircraftRequest;
|
use App\Http\Requests\CreateAircraftRequest;
|
||||||
use App\Http\Requests\ImportRequest;
|
|
||||||
use App\Http\Requests\UpdateAircraftRequest;
|
use App\Http\Requests\UpdateAircraftRequest;
|
||||||
use App\Models\Aircraft;
|
use App\Models\Aircraft;
|
||||||
use App\Models\Enums\AircraftStatus;
|
use App\Models\Enums\AircraftStatus;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use App\Models\Subfleet;
|
use App\Models\Subfleet;
|
||||||
use App\Repositories\AircraftRepository;
|
use App\Repositories\AircraftRepository;
|
||||||
@ -15,15 +16,12 @@ use App\Repositories\AirportRepository;
|
|||||||
use App\Services\ExportService;
|
use App\Services\ExportService;
|
||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
|
|
||||||
/**
|
|
||||||
* Class AircraftController
|
|
||||||
*/
|
|
||||||
class AircraftController extends Controller
|
class AircraftController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $aircraftRepo;
|
private $aircraftRepo;
|
||||||
private $airportRepo;
|
private $airportRepo;
|
||||||
private $importSvc;
|
private $importSvc;
|
||||||
@ -218,8 +216,6 @@ class AircraftController extends Controller
|
|||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
*
|
*
|
||||||
* @throws \Illuminate\Validation\ValidationException
|
|
||||||
*
|
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function import(Request $request)
|
public function import(Request $request)
|
||||||
@ -230,16 +226,7 @@ class AircraftController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
ImportRequest::validate($request);
|
$logs = $this->importFile($request, ImportExportType::AIRCRAFT);
|
||||||
$path = Storage::putFileAs(
|
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_aircraft.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded aircraft import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importAircraft($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.aircraft.import', [
|
return view('admin.aircraft.import', [
|
||||||
|
@ -3,10 +3,11 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Http\Requests\CreateAirportRequest;
|
use App\Http\Requests\CreateAirportRequest;
|
||||||
use App\Http\Requests\ImportRequest;
|
|
||||||
use App\Http\Requests\UpdateAirportRequest;
|
use App\Http\Requests\UpdateAirportRequest;
|
||||||
use App\Models\Airport;
|
use App\Models\Airport;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use App\Repositories\AirportRepository;
|
use App\Repositories\AirportRepository;
|
||||||
use App\Repositories\Criteria\WhereCriteria;
|
use App\Repositories\Criteria\WhereCriteria;
|
||||||
@ -14,12 +15,12 @@ use App\Services\ExportService;
|
|||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use App\Support\Timezonelist;
|
use App\Support\Timezonelist;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
|
|
||||||
class AirportController extends Controller
|
class AirportController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $airportRepo;
|
private $airportRepo;
|
||||||
private $importSvc;
|
private $importSvc;
|
||||||
|
|
||||||
@ -223,16 +224,7 @@ class AirportController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
ImportRequest::validate($request);
|
$logs = $this->importFile($request, ImportExportType::AIRPORT);
|
||||||
$path = Storage::putFileAs(
|
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_airports.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded airport import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importAirports($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.airports.import', [
|
return view('admin.airports.import', [
|
||||||
|
@ -3,21 +3,22 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
use App\Http\Requests\ImportRequest;
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Models\Enums\ExpenseType;
|
use App\Models\Enums\ExpenseType;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use App\Repositories\AirlineRepository;
|
use App\Repositories\AirlineRepository;
|
||||||
use App\Repositories\ExpenseRepository;
|
use App\Repositories\ExpenseRepository;
|
||||||
use App\Services\ExportService;
|
use App\Services\ExportService;
|
||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
use Prettus\Repository\Criteria\RequestCriteria;
|
use Prettus\Repository\Criteria\RequestCriteria;
|
||||||
|
|
||||||
class ExpenseController extends Controller
|
class ExpenseController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $airlineRepo;
|
private $airlineRepo;
|
||||||
private $expenseRepo;
|
private $expenseRepo;
|
||||||
private $importSvc;
|
private $importSvc;
|
||||||
@ -223,16 +224,7 @@ class ExpenseController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
ImportRequest::validate($request);
|
$logs = $this->importFile($request, ImportExportType::EXPENSES);
|
||||||
$path = Storage::putFileAs(
|
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_expenses.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded expenses import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importExpenses($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.expenses.import', [
|
return view('admin.expenses.import', [
|
||||||
|
@ -3,20 +3,21 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Http\Requests\CreateFareRequest;
|
use App\Http\Requests\CreateFareRequest;
|
||||||
use App\Http\Requests\ImportRequest;
|
|
||||||
use App\Http\Requests\UpdateFareRequest;
|
use App\Http\Requests\UpdateFareRequest;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Repositories\FareRepository;
|
use App\Repositories\FareRepository;
|
||||||
use App\Services\ExportService;
|
use App\Services\ExportService;
|
||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
use Prettus\Repository\Criteria\RequestCriteria;
|
use Prettus\Repository\Criteria\RequestCriteria;
|
||||||
|
|
||||||
class FareController extends Controller
|
class FareController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $fareRepo;
|
private $fareRepo;
|
||||||
private $importSvc;
|
private $importSvc;
|
||||||
|
|
||||||
@ -196,16 +197,7 @@ class FareController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
ImportRequest::validate($request);
|
$logs = $this->importFile($request, ImportExportType::FARES);
|
||||||
$path = Storage::putFileAs(
|
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_fares.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded fares import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importFares($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.fares.import', [
|
return view('admin.fares.import', [
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Http\Requests\CreateFlightRequest;
|
use App\Http\Requests\CreateFlightRequest;
|
||||||
use App\Http\Requests\UpdateFlightRequest;
|
use App\Http\Requests\UpdateFlightRequest;
|
||||||
use App\Models\Enums\FlightType;
|
use App\Models\Enums\FlightType;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Models\Flight;
|
use App\Models\Flight;
|
||||||
use App\Models\FlightField;
|
use App\Models\FlightField;
|
||||||
use App\Models\FlightFieldValue;
|
use App\Models\FlightFieldValue;
|
||||||
@ -23,14 +25,12 @@ use App\Services\ImportService;
|
|||||||
use App\Support\Units\Time;
|
use App\Support\Units\Time;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
|
|
||||||
/**
|
|
||||||
* Class FlightController
|
|
||||||
*/
|
|
||||||
class FlightController extends Controller
|
class FlightController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $airlineRepo;
|
private $airlineRepo;
|
||||||
private $airportRepo;
|
private $airportRepo;
|
||||||
private $fareRepo;
|
private $fareRepo;
|
||||||
@ -325,15 +325,7 @@ class FlightController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
$path = Storage::putFileAs(
|
$logs = $this->importFile($request, ImportExportType::FLIGHTS);
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_flights.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded flights import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importFlights($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.flights.import', [
|
return view('admin.flights.import', [
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Http\Controllers\Admin\Traits\Importable;
|
||||||
use App\Http\Requests\CreateSubfleetRequest;
|
use App\Http\Requests\CreateSubfleetRequest;
|
||||||
use App\Http\Requests\ImportRequest;
|
|
||||||
use App\Http\Requests\UpdateSubfleetRequest;
|
use App\Http\Requests\UpdateSubfleetRequest;
|
||||||
use App\Models\Airline;
|
use App\Models\Airline;
|
||||||
use App\Models\Enums\FuelType;
|
use App\Models\Enums\FuelType;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use App\Models\Subfleet;
|
use App\Models\Subfleet;
|
||||||
use App\Repositories\AircraftRepository;
|
use App\Repositories\AircraftRepository;
|
||||||
@ -19,13 +20,13 @@ use App\Services\FareService;
|
|||||||
use App\Services\FleetService;
|
use App\Services\FleetService;
|
||||||
use App\Services\ImportService;
|
use App\Services\ImportService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Laracasts\Flash\Flash;
|
use Laracasts\Flash\Flash;
|
||||||
use Prettus\Repository\Criteria\RequestCriteria;
|
use Prettus\Repository\Criteria\RequestCriteria;
|
||||||
|
|
||||||
class SubfleetController extends Controller
|
class SubfleetController extends Controller
|
||||||
{
|
{
|
||||||
|
use Importable;
|
||||||
|
|
||||||
private $aircraftRepo;
|
private $aircraftRepo;
|
||||||
private $fareRepo;
|
private $fareRepo;
|
||||||
private $fareSvc;
|
private $fareSvc;
|
||||||
@ -293,17 +294,7 @@ class SubfleetController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($request->isMethod('post')) {
|
if ($request->isMethod('post')) {
|
||||||
ImportRequest::validate($request);
|
$logs = $this->importFile($request, ImportExportType::SUBFLEETS);
|
||||||
|
|
||||||
$path = Storage::putFileAs(
|
|
||||||
'import',
|
|
||||||
$request->file('csv_file'),
|
|
||||||
'import_subfleets.csv'
|
|
||||||
);
|
|
||||||
|
|
||||||
$path = storage_path('app/'.$path);
|
|
||||||
Log::info('Uploaded subfleets import file to '.$path);
|
|
||||||
$logs = $this->importSvc->importSubfleets($path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('admin.subfleets.import', [
|
return view('admin.subfleets.import', [
|
||||||
|
59
app/Http/Controllers/Admin/Traits/Importable.php
Normal file
59
app/Http/Controllers/Admin/Traits/Importable.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin\Traits;
|
||||||
|
|
||||||
|
use App\Http\Requests\ImportRequest;
|
||||||
|
use App\Models\Enums\ImportExportType;
|
||||||
|
use App\Services\ImportService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use InvalidArgumentException;
|
||||||
|
|
||||||
|
trait Importable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Import a file, passing in the import/export type
|
||||||
|
*
|
||||||
|
* @param Request $request Request object
|
||||||
|
* @param int $importType Refer to \App\Models\Enums\ImportExportType
|
||||||
|
*
|
||||||
|
* @throws \Illuminate\Validation\ValidationException
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function importFile(Request $request, int $importType)
|
||||||
|
{
|
||||||
|
ImportRequest::validate($request);
|
||||||
|
$path = Storage::putFileAs(
|
||||||
|
'import',
|
||||||
|
$request->file('csv_file'),
|
||||||
|
'import_'.ImportExportType::label($importType).'.csv'
|
||||||
|
);
|
||||||
|
|
||||||
|
/** @var ImportService */
|
||||||
|
$importSvc = app(ImportService::class);
|
||||||
|
|
||||||
|
$path = storage_path('app/'.$path);
|
||||||
|
Log::info('Uploaded airport import file to '.$path);
|
||||||
|
|
||||||
|
$delete_previous = get_truth_state($request->get('delete'));
|
||||||
|
|
||||||
|
switch ($importType) {
|
||||||
|
case ImportExportType::AIRCRAFT:
|
||||||
|
return $importSvc->importAircraft($path, $delete_previous);
|
||||||
|
case ImportExportType::AIRPORT:
|
||||||
|
return $importSvc->importAirports($path, $delete_previous);
|
||||||
|
case ImportExportType::EXPENSES:
|
||||||
|
return $importSvc->importExpenses($path, $delete_previous);
|
||||||
|
case ImportExportType::FARES:
|
||||||
|
return $importSvc->importFares($path, $delete_previous);
|
||||||
|
case ImportExportType::FLIGHTS:
|
||||||
|
return $importSvc->importFlights($path, $delete_previous);
|
||||||
|
case ImportExportType::SUBFLEETS:
|
||||||
|
return $importSvc->importSubfleets($path, $delete_previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new InvalidArgumentException('Unknown import type!');
|
||||||
|
}
|
||||||
|
}
|
26
app/Models/Enums/ImportExportType.php
Normal file
26
app/Models/Enums/ImportExportType.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Enums;
|
||||||
|
|
||||||
|
use App\Contracts\Enum;
|
||||||
|
|
||||||
|
class ImportExportType extends Enum
|
||||||
|
{
|
||||||
|
public const AIRLINE = 1;
|
||||||
|
public const AIRCRAFT = 2;
|
||||||
|
public const AIRPORT = 3;
|
||||||
|
public const EXPENSES = 4;
|
||||||
|
public const FARES = 5;
|
||||||
|
public const FLIGHTS = 6;
|
||||||
|
public const SUBFLEETS = 7;
|
||||||
|
|
||||||
|
public static $labels = [
|
||||||
|
self::AIRLINE => 'airline',
|
||||||
|
self::AIRCRAFT => 'aircraft',
|
||||||
|
self::AIRPORT => 'airport',
|
||||||
|
self::EXPENSES => 'expense',
|
||||||
|
self::FARES => 'fare',
|
||||||
|
self::FLIGHTS => 'flight',
|
||||||
|
self::SUBFLEETS => 'subfleet',
|
||||||
|
];
|
||||||
|
}
|
@ -7,6 +7,13 @@
|
|||||||
{{ Form::label('csv_file', 'Choose a CSV file to import') }}
|
{{ Form::label('csv_file', 'Choose a CSV file to import') }}
|
||||||
{{ Form::file('csv_file', ['accept' => '.csv']) }}
|
{{ Form::file('csv_file', ['accept' => '.csv']) }}
|
||||||
<p class="text-danger">{{ $errors->first('csv_file') }}</p>
|
<p class="text-danger">{{ $errors->first('csv_file') }}</p>
|
||||||
|
<div class="checkbox">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
{{ Form::label('delete', 'Delete existing data:') }}
|
||||||
|
{{ Form::hidden('delete', 0, false) }}
|
||||||
|
{{ Form::checkbox('delete') }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-12">
|
<div class="form-group col-md-12">
|
||||||
|
Loading…
Reference in New Issue
Block a user