OwlCyberSecurity - MANAGER
Edit File: LogisticResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\LogisticResource\Pages; use App\Filament\Resources\LogisticResource\RelationManagers; use App\Models\Logistic; use Filament\Forms; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Actions\Action; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Enums\FiltersLayout; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; class LogisticResource extends Resource { protected static ?string $model = Logistic::class; protected static ?string $navigationIcon = 'heroicon-o-document-magnifying-glass'; protected static ?string $modelLabel = ' جامع'; protected static ?string $pluralModelLabel = 'ویرایش جامع'; protected static ?string $slug = 'logistic-edit'; protected static ?string $navigationGroup = 'جستجو'; protected static ?int $navigationSort = 3; public static function form(Form $form): Form { return $form ->schema([ TextInput::make('orderId')->label('شماره سفارش')->required(), TextInput::make('tracknumber')->label('شماره ترک')->required(), TextInput::make('dubaitracknumber')->label('شماره ترک دوبی')->required(), TextInput::make('officenumber')->label('شماره دفتری')->required(), ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('invoice.user.name')->label('نام کاربر'), TextColumn::make('invoice.user.cell_number')->label('شماره کاربر'), //TextColumn::make('invoice.isonesteppayment')->label('پرداخت')->formatStateUsing(fn(string $state): string => $state ? 'پرداخت تک مرحله ای' : 'پرداخت دو مرحله ای'), TextColumn::make('invoiceItem.name')->label('نام کالا')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('invoice.code')->label('کد رهگیری')->copyable(), // TextColumn::make('link_view_factor')->label('نمایش فاکتور ') // ->url(fn(Logistic $item) => config('app.url') . "/admin/invoice-search/view-factor/" . "{$item->invoice_id}") // ->getStateUsing('نمایش فاکتور') // ->openUrlInNewTab() // ->icon('heroicon-o-link') // ->color('primary'), TextColumn::make('carrier.name')->label('حامل'), TextColumn::make('exchange.name')->label('ارز'), TextColumn::make('orderId')->label('شماره سفارش'), TextColumn::make('tracknumber')->label('ترک نامبر'), TextColumn::make('buyingdate')->label('تاریخ خرید'), TextColumn::make('estimateddatetobase')->label('تاریخ تخمینی به بیس'), TextColumn::make('deliverydate')->label('تاریخ رسیدن به بیس'), TextColumn::make('dubaiestimatedarivedate')->label('تاریخ تخمینی به دوبی'), TextColumn::make('datearrivetodubai')->label('تاریخ رسیدن به دوبی'), TextColumn::make('officenumber')->label('شماره دفتری'), TextColumn::make('base.title')->label('بیس'), TextColumn::make('dubaitracknumber')->label('شماره ترک دوبی'), TextColumn::make('iscancel')->label('کنسل شده')->formatStateUsing(fn(string|null $state): string => $state ? 'بله' : 'خیر'), TextColumn::make('issensitive')->label('صنعتی')->formatStateUsing(fn(string|null $state): string => $state ? 'بله' : 'خیر'), TextColumn::make('price')->label('قیمت'), TextColumn::make('finalweight')->label('وزن'), TextColumn::make('SentToCustomerBy')->label('ارسال توسط'), TextColumn::make('SendToCustomerTrackCode')->label('کد رهگیری ارسال'), TextColumn::make('invoice.DeliveredToCustomer')->label('تاریخ ارسال به مشتری'), TextColumn::make('arrivedintehran')->label('تاریخ رسیدن به تهران'), // TextColumn::make('agent.name')->label('کارشناس'), TextColumn::make('buyingdate')->label('تاریخ خرید'), TextColumn::make('invoiceItem.prefactorcomment')->label('توضیحات کارشناس')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('invoiceItem.description')->label('توضیحات مشتری')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('path.name')->label('مسیر'), TextColumn::make('account_discount')->label('تخفیف'), TextColumn::make('sendPackNumber')->label('شماره پک'), TextColumn::make('invoice.cancel_description')->label('دلیل کنسلی')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('invoiceItem.link')->label('لینک')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('sheet.name')->label('عنوان شیت'), TextColumn::make('singleItemfullprice')->label(' مبلغ نهایی هر آیتم'), ]) ->filters([ Filter::make('estimateddatetobase')->form([ DatePicker::make('estimateddatetobase')->label('تاریخ تخمینی به بیس')->displayFormat('Y-m-d') ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['estimateddatetobase'], fn(Builder $query, $data): Builder => $query->whereDate('estimateddatetobase', $data) )), Filter::make('deliverydate')->form([ DatePicker::make('deliverydate')->label('تاریخ رسیدن به بیس')->displayFormat('Y-m-d') ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['deliverydate'], fn(Builder $query, $data): Builder => $query->whereDate('deliverydate', $data) )), Filter::make('dubaiestimatedarivedate')->form([ DatePicker::make('dubaiestimatedarivedate')->label('تاریخ تخمینی به دوبی')->displayFormat('Y-m-d') ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['dubaiestimatedarivedate'], fn(Builder $query, $data): Builder => $query->whereDate('dubaiestimatedarivedate', $data) )), Filter::make('datearrivetodubai')->form([ DatePicker::make('datearrivetodubai')->label('تاریخ رسیدن به دوبی')->displayFormat('Y-m-d') ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['datearrivetodubai'], fn(Builder $query, $data): Builder => $query->whereDate('datearrivetodubai', $data) )), Filter::make('code')->form([ TextInput::make('code')->label('کد رهگیری'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['code'], fn(Builder $query, $data): Builder => $query->whereHas( 'invoice', fn($q) => $q->where('invoices.code', 'like', '%' . $data . '%')), )), Filter::make('orderId')->form([ TextInput::make('orderId')->label('شماره سفارش'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['orderId'], fn(Builder $query, $data): Builder => $query->where('orderId', 'like', '%' . $data . '%') )), Filter::make('name')->form([ TextInput::make('name')->label('نام کالا'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['name'], fn(Builder $query, $data): Builder => $query->whereHas( 'invoiceItem', fn($q) => $q->where('invoice_items.name', 'like', '%' . $data . '%')), )), Filter::make('tracknumber')->form([ TextInput::make('tracknumber')->label('ترک نامبر'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['tracknumber'], fn(Builder $query, $data): Builder => $query->where('tracknumber', $data) )), Filter::make('officenumber')->form([ TextInput::make('officenumber')->label('شماره دفتری'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['officenumber'], fn(Builder $query, $data): Builder => $query->where('officenumber', $data) )), Filter::make('dubaitracknumber')->form([ TextInput::make('dubaitracknumber')->label('شماره ترک دوبی'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['dubaitracknumber'], fn(Builder $query, $data): Builder => $query->where('dubaitracknumber', 'like', '%' . $data . '%') )), Filter::make('sheet_name')->form([ TextInput::make('sheet_name')->label('عنوان شیت'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['sheet_name'], fn(Builder $query, $data): Builder => $query->whereHas( 'sheet', fn($q) => $q->where('sheets.name', 'like', '%' . $data . '%')), )), SelectFilter::make('base_id')->label('بیس')->relationship('base', 'title'), SelectFilter::make('carrier_id')->relationship('carrier', 'name')->label('حامل'), SelectFilter::make('exchange_id')->relationship('exchange', 'name')->label('ارز'), SelectFilter::make('iscancel')->label('کنسل شده')->options(['1' => 'بله', '0' => 'خیر']), Filter::make('buyingdate_from')->form([ DatePicker::make('bdate_from')->label('خرید از تاریخ')->displayFormat('Y-m-d'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['bdate_from'], fn(Builder $query, $date): Builder => $query->whereDate('buyingdate', '>=', $date), )), Filter::make('buyingdate_until')->form([ DatePicker::make('bdate_until')->label('خرید تا تاریخ')->displayFormat('Y-m-d'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['bdate_until'], fn(Builder $query, $date): Builder => $query->whereDate('buyingdate', '<=', $date), )), Filter::make('uname')->form([ TextInput::make('name')->label('نام مشتری'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['name'], fn(Builder $query, $data): Builder => $query->whereHas( 'invoice.user', fn($q) => $q->where('users.name', 'like', '%' . $data . '%')), )), Filter::make('issensitive')->label('صنعتی')->toggle()->query(fn (Builder $query): Builder => $query->where('issensitive', true)), ], layout: FiltersLayout::AboveContentCollapsible) ->filtersFormColumns(4) ->actions([ Action::make('final-factor')->label('مشاهده فاکتور')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn(Logistic $item) => config('app.url') . "/admin/invoice-search/view-factor/" . "{$item->invoice_id}") ->openUrlInNewTab() ->icon('heroicon-o-link') ->color('primary'), Action::make('invoiceDescription')->label('توضیحات')->icon('heroicon-o-chat-bubble-bottom-center-text')->color('grey') ->mountUsing(function (Form $form, Logistic $record) { $form->fill([ 'invoiceDescriptionLevelBuyInvoice' => $record->invoiceDescriptionLevelBuyInvoice()->first()?->description, 'invoiceDescriptionLevelSetTrackNumber' => $record->invoiceDescriptionLevelSetTrackNumber()->first()?->description, 'invoiceDescriptionLevelSetOfficeNumber' => $record->invoiceDescriptionLevelSetOfficeNumber()->first()?->description, 'invoiceDescriptionLevelSetDubaiTrackNumber' => $record->invoiceDescriptionLevelSetDubaiTrackNumber()->first()?->description, 'invoiceDescriptionLevelIsInDubai' => $record->invoiceDescriptionLevelIsInDubai()->first()?->description, 'invoiceDescriptionLevelSendToTehran' => $record->invoiceDescriptionLevelSendToTehran()->first()?->description, 'invoiceDescriptionLevelIsInTehran' => $record->invoiceDescriptionLevelIsInTehran()->first()?->description, ]); }) ->form([ Textarea::make('invoiceDescriptionLevelBuyInvoice')->label('توضیحات مرحله خرید')->disabled(), Textarea::make('invoiceDescriptionLevelSetTrackNumber')->label('توضیحات ثبت ترک نامبر')->disabled(), Textarea::make('invoiceDescriptionLevelSetOfficeNumber')->label('توضیحات ثبت شماره دفتری')->disabled(), Textarea::make('invoiceDescriptionLevelSetDubaiTrackNumber')->label('توضیحات ثبت ترک دبی')->disabled(), Textarea::make('invoiceDescriptionLevelIsInDubai')->label('توضیحات درون دبی')->disabled(), Textarea::make('invoiceDescriptionLevelSendToTehran')->label('توضیحات ارسال به تهران')->disabled(), Textarea::make('invoiceDescriptionLevelIsInTehran')->label('توضیحات درون تهران')->disabled(), ]) ->modalCancelAction(false) ->modalSubmitAction(false) ->action(function (array $data) { }), Tables\Actions\EditAction::make(), ]) ->bulkActions([]) ->defaultSort('id', 'desc'); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListLogistics::route('/'), 'edit' => Pages\EditLogistic::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('logistic-edit::view'); } }