Import/export expenses #194

This commit is contained in:
Nabeel Shahzad
2018-03-22 17:17:37 -05:00
parent 4e3a9fd9ea
commit a44204b185
32 changed files with 613 additions and 139 deletions

View File

@@ -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'
);

View File

@@ -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'));
}
}

View File

@@ -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,
]);

View File

@@ -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,
]);
}
}

View File

@@ -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'
);