form->fill([ 'date' => null, 'plant_id' => null, 'line_id' => null, 'category' => null, ]); } public function form(Form $form): Form { return $form ->statePath('filters') ->schema([ Section::make('') ->schema([ DateTimePicker::make('date') ->label('Choose Date') ->native(false) ->displayFormat('d-m-Y') ->reactive(), Select::make('plant_id') ->label('Plant') ->relationship('plant', 'name') ->reactive() // ->searchable() ->options(function (callable $get) { $userHas = Filament::auth()->user()->plant_id; return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); }) ->required() ->afterStateUpdated(function ($state, callable $get, $set) { // dd($state); $set('line_id', null); $set('category', null); $this->dispatch('loadData',$state, '', '', '', ''); }), Select::make('line_id') ->label('Line') ->required() ->columnSpan(1) ->options(function (callable $get) { if (!$get('plant_id')) { return []; } return \App\Models\Line::where('plant_id', $get('plant_id')) ->pluck('name', 'id') ->toArray(); }) ->reactive() ->afterStateUpdated(function ($state, callable $get, $set) { $plantId = $get('plant_id'); $lineId = $state; $month = $get('month'); $year = $get('year'); $date = $get('date'); $month = (int) $get('month'); $this->dispatch('loadData',$year, $month, $plantId, $lineId, $date); }), // Select::make('item_id') // ->label('Item Code') // ->placeholder('Select Item Code') // ->options(function (callable $get) { // $plantId = $get('plant_id'); // $lineId = $get('line_id'); // $date = $get('date'); // if (!$plantId || !$lineId || !$date) { // return []; // } // $selectedDate = Carbon::parse($date)->startOfDay(); // $startDate = $selectedDate->copy()->setTime(8, 0, 0); // $endDate = $startDate->copy()->addDay(); // $month = $selectedDate->month; // $year = $selectedDate->year; // $plannedItemIds = ProductionPlan::query() // ->where('plant_id', $plantId) // ->where('line_id', $lineId) // ->whereMonth('production_plans.created_at', $month) // ->whereYear('production_plans.created_at', $year) // ->whereNotNull('item_id') // ->distinct() // ->pluck('item_id'); // $stickerMasterIds = QualityValidation::query() // ->where('plant_id', $plantId) // ->where('line_id', $lineId) // ->where('created_at', '>=', $startDate) // ->where('created_at', '<', $endDate) // ->whereNotNull('sticker_master_id') // ->distinct() // ->pluck('sticker_master_id'); // $producedItemIds = StickerMaster::query() // ->whereIn('id', $stickerMasterIds) // ->whereNotNull('item_id') // ->distinct() // ->pluck('item_id'); // return Item::query() // ->whereIn('id', $producedItemIds) // ->whereNotIn('id', $plannedItemIds) // ->orderBy('code') // ->pluck('code', 'id') // ->toArray(); // }) // ->searchable() // ->reactive() // ->required(), TextInput::make('category') ->label('Category') ->reactive(), ]) ->columns(4) ]); } public function generateNonPlan(){ $plantId = $this->filters['plant_id'] ?? null; $lineId = $this->filters['line_id'] ?? null; $date = $this->filters['date'] ?? null; $category = $this->filters['category'] ?? null; if($category == '' || $category == null){ $this->dispatch('loadData', $date, $plantId, $lineId); } else{ $this->dispatch('loadDataCategory',$date, $plantId, $lineId, $category); } } public function exportNonPlan(){ $plantId = $this->filters['plant_id'] ?? null; $lineId = $this->filters['line_id'] ?? null; $date = $this->filters['date'] ?? null; $selectedDate = Carbon::parse($date); $date = $selectedDate->toDateString(); $month = $selectedDate->month; $year = $selectedDate->year; if (! $plantId) { Notification::make() ->title('Plant') ->body("please select plant to export data..!") ->danger() ->send(); return; } else if (! $lineId) { Notification::make() ->title('Line') ->body("please select line to export data..!") ->danger() ->send(); return; } else if (! $year) { Notification::make() ->title('Year') ->body("please select year to export data..!") ->danger() ->send(); return; } else if (! $month) { Notification::make() ->title('Month') ->body("please select month to export data..!") ->danger() ->send(); return; } $this->dispatch('loadDataExport' ,$plantId, $lineId, $year, $month); } public static function canAccess(): bool { return Auth::check() && Auth::user()->can('view production non planned page'); } }