Import/export expenses #194
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Requests\CreateAircraftRequest;
|
||||
use App\Http\Requests\ImportRequest;
|
||||
use App\Http\Requests\UpdateAircraftRequest;
|
||||
use App\Interfaces\Controller;
|
||||
use App\Models\Aircraft;
|
||||
@@ -177,6 +178,7 @@ class AircraftController extends Controller
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
* @throws \League\Csv\Exception
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
@@ -186,6 +188,8 @@ class AircraftController extends Controller
|
||||
];
|
||||
|
||||
if ($request->isMethod('post')) {
|
||||
ImportRequest::validate($request);
|
||||
|
||||
$path = Storage::putFileAs(
|
||||
'import', $request->file('csv_file'), 'aircraft'
|
||||
);
|
||||
|
||||
@@ -24,9 +24,7 @@ class AirlinesController extends Controller
|
||||
* AirlinesController constructor.
|
||||
* @param AirlineRepository $airlinesRepo
|
||||
*/
|
||||
public function __construct(
|
||||
AirlineRepository $airlinesRepo
|
||||
) {
|
||||
public function __construct(AirlineRepository $airlinesRepo) {
|
||||
$this->airlineRepo = $airlinesRepo;
|
||||
}
|
||||
|
||||
@@ -56,6 +54,7 @@ class AirlinesController extends Controller
|
||||
|
||||
/**
|
||||
* Store a newly created Airlines in storage.
|
||||
* @throws \Prettus\Validator\Exceptions\ValidatorException
|
||||
*/
|
||||
public function store(CreateAirlineRequest $request)
|
||||
{
|
||||
@@ -63,7 +62,6 @@ class AirlinesController extends Controller
|
||||
$airlines = $this->airlineRepo->create($input);
|
||||
|
||||
Flash::success('Airlines saved successfully.');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
@@ -78,7 +76,6 @@ class AirlinesController extends Controller
|
||||
|
||||
if (empty($airlines)) {
|
||||
Flash::error('Airlines not found');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
@@ -98,7 +95,6 @@ class AirlinesController extends Controller
|
||||
|
||||
if (empty($airline)) {
|
||||
Flash::error('Airline not found');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
@@ -121,14 +117,12 @@ class AirlinesController extends Controller
|
||||
|
||||
if (empty($airlines)) {
|
||||
Flash::error('Airlines not found');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
$airlines = $this->airlineRepo->update($request->all(), $id);
|
||||
|
||||
Flash::success('Airlines updated successfully.');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
@@ -143,14 +137,12 @@ class AirlinesController extends Controller
|
||||
|
||||
if (empty($airlines)) {
|
||||
Flash::error('Airlines not found');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
|
||||
$this->airlineRepo->delete($id);
|
||||
|
||||
Flash::success('Airlines deleted successfully.');
|
||||
|
||||
return redirect(route('admin.airlines.index'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Requests\CreateAirportRequest;
|
||||
use App\Http\Requests\ImportRequest;
|
||||
use App\Http\Requests\UpdateAirportRequest;
|
||||
use App\Interfaces\Controller;
|
||||
use App\Models\Airport;
|
||||
@@ -87,7 +88,6 @@ class AirportController extends Controller
|
||||
$this->airportRepo->create($input);
|
||||
|
||||
Flash::success('Airport saved successfully.');
|
||||
|
||||
return redirect(route('admin.airports.index'));
|
||||
}
|
||||
|
||||
@@ -102,7 +102,6 @@ class AirportController extends Controller
|
||||
|
||||
if (empty($airport)) {
|
||||
Flash::error('Airport not found');
|
||||
|
||||
return redirect(route('admin.airports.index'));
|
||||
}
|
||||
|
||||
@@ -122,7 +121,6 @@ class AirportController extends Controller
|
||||
|
||||
if (empty($airport)) {
|
||||
Flash::error('Airport not found');
|
||||
|
||||
return redirect(route('admin.airports.index'));
|
||||
}
|
||||
|
||||
@@ -145,7 +143,6 @@ class AirportController extends Controller
|
||||
|
||||
if (empty($airport)) {
|
||||
Flash::error('Airport not found');
|
||||
|
||||
return redirect(route('admin.airports.index'));
|
||||
}
|
||||
|
||||
@@ -155,7 +152,6 @@ class AirportController extends Controller
|
||||
$this->airportRepo->update($attrs, $id);
|
||||
|
||||
Flash::success('Airport updated successfully.');
|
||||
|
||||
return redirect(route('admin.airports.index'));
|
||||
}
|
||||
|
||||
@@ -203,21 +199,24 @@ class AirportController extends Controller
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
* @throws \League\Csv\Exception
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
$logs = [
|
||||
'success' => [],
|
||||
'failed' => [],
|
||||
'errors' => [],
|
||||
];
|
||||
|
||||
if ($request->isMethod('post')) {
|
||||
ImportRequest::validate($request);
|
||||
|
||||
$path = Storage::putFileAs(
|
||||
'import', $request->file('csv_file'), 'airports'
|
||||
);
|
||||
|
||||
$path = storage_path('app/'.$path);
|
||||
Log::info('Uploaded flights import file to '.$path);
|
||||
Log::info('Uploaded airports import file to '.$path);
|
||||
$logs = $this->importSvc->importAirports($path);
|
||||
}
|
||||
|
||||
@@ -227,13 +226,12 @@ class AirportController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Airport|null $airport
|
||||
* @param Airport $airport
|
||||
* @return mixed
|
||||
*/
|
||||
protected function return_expenses_view(?Airport $airport)
|
||||
protected function return_expenses_view(Airport $airport)
|
||||
{
|
||||
$airport->refresh();
|
||||
|
||||
return view('admin.airports.expenses', [
|
||||
'airport' => $airport,
|
||||
]);
|
||||
|
||||
@@ -2,15 +2,20 @@
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Requests\ImportRequest;
|
||||
use App\Interfaces\Controller;
|
||||
use App\Models\Enums\ExpenseType;
|
||||
use App\Models\Expense;
|
||||
use App\Repositories\AirlineRepository;
|
||||
use App\Repositories\ExpenseRepository;
|
||||
use App\Services\ExportService;
|
||||
use App\Services\ImportService;
|
||||
use Flash;
|
||||
use Illuminate\Http\Request;
|
||||
use Log;
|
||||
use Prettus\Repository\Criteria\RequestCriteria;
|
||||
use Response;
|
||||
use Storage;
|
||||
|
||||
/**
|
||||
* Class ExpenseController
|
||||
@@ -19,19 +24,23 @@ use Response;
|
||||
class ExpenseController extends Controller
|
||||
{
|
||||
private $airlineRepo,
|
||||
$expenseRepo;
|
||||
$expenseRepo,
|
||||
$importSvc;
|
||||
|
||||
/**
|
||||
* expensesController constructor.
|
||||
* @param AirlineRepository $airlineRepo
|
||||
* @param ExpenseRepository $expenseRepo
|
||||
* @param ImportService $importSvc
|
||||
*/
|
||||
public function __construct(
|
||||
AirlineRepository $airlineRepo,
|
||||
ExpenseRepository $expenseRepo
|
||||
ExpenseRepository $expenseRepo,
|
||||
ImportService $importSvc
|
||||
) {
|
||||
$this->airlineRepo = $airlineRepo;
|
||||
$this->expenseRepo = $expenseRepo;
|
||||
$this->importSvc = $importSvc;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,14 +166,62 @@ class ExpenseController extends Controller
|
||||
|
||||
if (empty($expenses)) {
|
||||
Flash::error('Expense not found');
|
||||
|
||||
return redirect(route('admin.expenses.index'));
|
||||
}
|
||||
|
||||
$this->expenseRepo->delete($id);
|
||||
|
||||
Flash::success('Expense deleted successfully.');
|
||||
|
||||
return redirect(route('admin.expenses.index'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the airport exporter
|
||||
* @param Request $request
|
||||
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
|
||||
* @throws \League\Csv\Exception
|
||||
*/
|
||||
public function export(Request $request)
|
||||
{
|
||||
$exporter = app(ExportService::class);
|
||||
$expenses = $this->expenseRepo->all();
|
||||
|
||||
$path = $exporter->exportExpenses($expenses);
|
||||
return response()
|
||||
->download($path, 'expenses.csv', [
|
||||
'content-type' => 'text/csv',
|
||||
])
|
||||
->deleteFileAfterSend(true);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
* @throws \League\Csv\Exception
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
$logs = [
|
||||
'success' => [],
|
||||
'errors' => [],
|
||||
];
|
||||
|
||||
if ($request->isMethod('post')) {
|
||||
ImportRequest::validate($request);
|
||||
|
||||
$path = Storage::putFileAs(
|
||||
'import', $request->file('csv_file'), 'expenses'
|
||||
);
|
||||
|
||||
$path = storage_path('app/'.$path);
|
||||
Log::info('Uploaded expenses import file to '.$path);
|
||||
$logs = $this->importSvc->importExpenses($path);
|
||||
}
|
||||
|
||||
return view('admin.expenses.import', [
|
||||
'logs' => $logs,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Requests\CreateSubfleetRequest;
|
||||
use App\Http\Requests\ImportRequest;
|
||||
use App\Http\Requests\UpdateSubfleetRequest;
|
||||
use App\Interfaces\Controller;
|
||||
use App\Models\Airline;
|
||||
@@ -245,15 +246,18 @@ class SubfleetController extends Controller
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
* @throws \League\Csv\Exception
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
public function import(Request $request)
|
||||
{
|
||||
$logs = [
|
||||
'success' => [],
|
||||
'failed' => [],
|
||||
'errors' => [],
|
||||
];
|
||||
|
||||
if ($request->isMethod('post')) {
|
||||
ImportRequest::validate($request);
|
||||
|
||||
$path = Storage::putFileAs(
|
||||
'import', $request->file('csv_file'), 'subfleets'
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user