File: /var/www/ipsremont-demo/app/Http/Controllers/ReconciliationController.php
<?php
namespace App\Http\Controllers;
use App\Console\Commands\ImportGetInPaymentOrder;
use App\Console\Commands\ImportGetOutPaymentOrder;
use App\Console\Commands\ImportSalesReceipt;
use App\Helpers\UserHelper;
use App\Http\Requests\Reconciliation\ReconciliationRequest;
use App\Models\Permission;
use App\Models\Reconciliation;
use App\Services\Branch\BranchService;
use App\Services\Reconciliation\ReconciliationService;
use App\Services\Service\ServiceService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class ReconciliationController extends Controller
{
protected string $permission = Permission::reconciliation;
public function index(Request $request)
{
$branches = [];
$services = [];
$user = UserHelper::getUser();
if ($user->isManager()) {
if (can(Permission::branchesAll) || count($user->getBranchIds()) > 1) {
$branches = BranchService::getDisplayed();
$services = ServiceService::getByBranchAjax($user->getBranchIds(), null, 'inline');
} else {
$services = ServiceService::getDisplayed()->pluck('name', 'id')->toArray();
}
}
$error = $request->get('error');
$error = empty($error) ? '' : $error;
$model = new Reconciliation();
$validate = new ReconciliationRequest();
return view('reconciliation.index', compact('services', 'branches', 'validate', 'model', 'error'))->with(['sections' => ['service_id', 'branch_id']]);
}
public function formAct(ReconciliationRequest $request)
{
$user = UserHelper::getUser();
if ($user->isService()) {
$service = $user->getService();
} else {
$service = ServiceService::getById($request->service_id);
}
if (!in_array(App::environment(), ['local', 'stage'])) {
$error = (new ImportSalesReceipt(true))->handle();
if (!empty($error) && is_string($error)) {
return redirect(route('reconciliation.index', ['error' => $error]));
}
$error = (new ImportGetOutPaymentOrder(true))->handle();
if (!empty($error) && is_string($error)) {
return redirect(route('reconciliation.index', ['error' => $error]));
}
$error = (new ImportGetInPaymentOrder(true))->handle();
if (!empty($error) && is_string($error)) {
return redirect(route('reconciliation.index', ['error' => $error]));
}
}
$file = ReconciliationService::createReport($request->date_start, $request->date_end, $service);
return response()->download($file);
}
}