|
|
@@ -29,8 +29,8 @@ use App\Services\FileService;
|
|
|
use App\Services\NotificationService;
|
|
|
use Illuminate\Http\RedirectResponse;
|
|
|
use Illuminate\Http\Request;
|
|
|
-use Illuminate\Support\Str;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
+use Illuminate\Support\Str;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
|
use Throwable;
|
|
|
@@ -640,14 +640,56 @@ class OrderController extends Controller
|
|
|
|
|
|
public function export(Request $request)
|
|
|
{
|
|
|
+ $request->validate([
|
|
|
+ 'withFilter' => 'nullable',
|
|
|
+ 'filters' => 'nullable|array',
|
|
|
+ 's' => 'nullable|string',
|
|
|
+ ]);
|
|
|
|
|
|
- $schedules = Order::query()
|
|
|
- ->get();
|
|
|
+ $orders = Order::query();
|
|
|
|
|
|
- ExportOrdersJob::dispatch($schedules, $request->user()->id);
|
|
|
- return redirect()->route('order.index')
|
|
|
- ->with(['success' => 'Задача выгрузки создана!']);
|
|
|
+ if ($request->boolean('withFilter')) {
|
|
|
+ $filterRequest = new Request(array_filter([
|
|
|
+ 'filters' => $request->input('filters', []),
|
|
|
+ 's' => $request->input('s'),
|
|
|
+ 'sortBy' => $request->input('sortBy'),
|
|
|
+ 'order' => $request->input('order'),
|
|
|
+ ], static fn ($value) => $value !== null));
|
|
|
+
|
|
|
+ $model = new OrderView;
|
|
|
+ $this->createFilters($model, 'user_name', 'district_name', 'area_name', 'object_type_name', 'brigadier_name', 'order_status_name', 'ready_to_mount');
|
|
|
+ $this->createDateFilters($model, 'installation_date', 'ready_date');
|
|
|
+ $this->data['ranges'] = [];
|
|
|
+
|
|
|
+ $q = $model::query();
|
|
|
+ $this->acceptFilters($q, $filterRequest);
|
|
|
+ $this->acceptSearch($q, $filterRequest);
|
|
|
+ $this->setSortAndOrderBy($model, $filterRequest);
|
|
|
+
|
|
|
+ if (hasRole('brigadier')) {
|
|
|
+ $q->where('brigadier_id', auth()->id());
|
|
|
+ }
|
|
|
|
|
|
+ if (hasRole(Role::WAREHOUSE_HEAD)) {
|
|
|
+ $q->whereNotNull('brigadier_id');
|
|
|
+ $q->whereNotNull('installation_date');
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->applyStableSorting($q);
|
|
|
+ $orderIds = $q->pluck('id');
|
|
|
+
|
|
|
+ $orders = Order::query()
|
|
|
+ ->whereIn('id', $orderIds)
|
|
|
+ ->get()
|
|
|
+ ->sortBy(static fn (Order $order) => $orderIds->search($order->id))
|
|
|
+ ->values();
|
|
|
+ } else {
|
|
|
+ $orders = $orders->get();
|
|
|
+ }
|
|
|
+
|
|
|
+ ExportOrdersJob::dispatch($orders, $request->user()->id);
|
|
|
+ return redirect()->route('order.index', session('gp_orders'))
|
|
|
+ ->with(['success' => 'Задача выгрузки создана!']);
|
|
|
}
|
|
|
public function exportOne(Order $order, Request $request)
|
|
|
{
|