File: //home/armgroup/libs/resources/views/livewire/admin/discount/create.blade.php
<div>
<form role="form" wire:submit.prevent="store">
<div class="card-body">
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="title">عنوان *</label>
<input class="form-control @error('title') is-invalid @enderror" id="title"
wire:model.defer="title" type="text" required>
@error('title')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="code">کد (حداقل ۵ و حداکثر ۲۰ کاراکتر) *</label>
<input class="form-control @error('code') is-invalid @enderror" id="code"
wire:model.defer="code" type="text" required dir="ltr">
@error('code')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="type">نوع *</label>
<select class="form-control @error('type') is-invalid @enderror" id="type" required wire:model.defer="type">
@foreach(\App\Enums\DiscountType::getInstances() as $enum)
<option value="{{ $enum->value }}">{{ $enum->description }}</option>
@endforeach
</select>
@error('type')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="amount">مقدار *</label>
<input class="form-control @error('amount') is-invalid @enderror" id="amount"
wire:model.defer="amount" type="number" required dir="ltr" min="1">
@error('amount')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="usage">دفعات استفاده (برای عدم محدودیت خالی باشد)</label>
<input class="form-control @error('usage') is-invalid @enderror" id="usage"
wire:model.defer="usage" type="number" dir="ltr" min="1" max="100">
@error('usage')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="minimum_order_price">حداقل خرید</label>
<input class="form-control @error('minimum_order_price') is-invalid @enderror" id="minimum_order_price"
wire:model.defer="minimum_order_price" type="number" dir="ltr" min="1">
@error('minimum_order_price')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group mb-0" wire:ignore>
<label for="start_date">تاریخ شروع *</label>
<input class="form-control" id="start_date" type="text" autocomplete="off">
<input id="start_date_alt" type="hidden">
</div>
@error('start_date')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="col-6">
<div class="form-group mb-0" wire:ignore>
<label for="end_date">تاریخ پایان *</label>
<input class="form-control" id="end_date" type="text" autocomplete="off">
<input id="end_date_alt" type="hidden">
</div>
@error('end_date')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mt-3">
<div class="col-12">
<div class="form-group">
<label for="discountable_type">نوع تخفیف *</label>
<select class="form-control @error('discountable_type') is-invalid @enderror" id="discountable_type" required wire:model="discountable_type">
@foreach(\App\Enums\DiscountableType::getInstances() as $enum)
<option value="{{ $enum->value }}">{{ $enum->description }}</option>
@endforeach
</select>
@error('discountable_type')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="item_id">آیتمها (برای انتخاب تمام آیتمها هیچ موردی را انتخاب نکنید)</label>
<select class="form-control @error('item_id') is-invalid @enderror" id="item_id" multiple>
@foreach($items as $item)
<option value="{{ $item->id }}">{{ $item->name }}</option>
@endforeach
</select>
@error('item_id')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<hr>
<h5 class="text-center text-info" style="text-decoration: underline">
<span class="fa fa-users"></span> انتخاب کاربران
</h5>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="role_id">نقش کاربری</label>
<select class="form-control @error('role_id') is-invalid @enderror" id="role_id" multiple>
<option value="customer">بدون نقش (مشتری)</option>
@foreach($roles as $role)
<option value="{{ $role->id }}">{{ $role->name }}</option>
@endforeach
</select>
@error('role_id.*')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="min_wallet">حداقل موجودی کیفپول</label>
<input type="number" min="0" dir="ltr" class="form-control @error('min_wallet') is-invalid @enderror" id="min_wallet" wire:model.defer="min_wallet">
@error('min_wallet')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="max_wallet">حداکثر موجودی کیفپول</label>
<input type="number" min="0" dir="ltr" class="form-control @error('max_wallet') is-invalid @enderror" id="max_wallet" wire:model.defer="max_wallet">
@error('max_wallet')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="min_point">حداقل امتیاز</label>
<input type="number" min="0" dir="ltr" class="form-control @error('min_point') is-invalid @enderror" id="min_point" wire:model.defer="min_point">
@error('min_point')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group">
<label for="max_point">حداکثر امتیاز</label>
<input type="number" min="0" dir="ltr" class="form-control @error('max_point') is-invalid @enderror" id="max_point" wire:model.defer="max_point">
@error('max_point')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<button class="btn btn-info btn-block"
type="button"
wire:click.prevent="filterUsers">
<span class="fa fa-filter"></span> فیلتر کاربران
</button>
</div>
</div>
<div class="row mt-3">
<div class="col-12">
<div class="form-group">
<label for="user_id">لیست کاربران (برای انتخاب تمام کاربران هیچ کاربری را انتخاب نکنید)</label>
<select class="form-control @error('user_id') is-invalid @enderror" id="user_id" multiple>
@foreach($users as $user)
<option value="{{ $user->id }}">
{{ $user->name }}
({{ optional($user->roles->first())->name ?: 'بدون نقش' }})
(کیفپول: {{ to_persian_numbers(number_format($user->credit)) }})
(امتیاز: {{ to_persian_numbers($user->point) }})
</option>
@endforeach
</select>
@error('user_id')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="notification_type">نوع اطلاعرسانی *</label>
<select class="form-control @error('notification_type') is-invalid @enderror" id="notification_type" required wire:model.defer="notification_type">
@foreach(\App\Enums\NotificationType::getInstances() as $enum)
<option value="{{ $enum->value }}">{{ $enum->description }}</option>
@endforeach
</select>
@error('notification_type')
<span class="text-danger" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary">ذخیره</button>
<a href="{{ route('admin.discounts.index') }}" class="btn btn-danger float-left">لغو</a>
</div>
</form>
</div>
@push('scripts')
<style>
.select2-results__option {
direction: rtl !important;
}
</style>
<script>
$('#start_date').MdPersianDateTimePicker({
targetTextSelector: '#start_date',
targetDateSelector: '#start_date_alt',
enableTimePicker: true,
dateFormat: 'yyyy/MM/dd HH:mm:ss'
});
$('#start_date').on('hidden.bs.popover', function () {
@this.set('start_date', $('#start_date_alt').val());
});
$('#end_date').MdPersianDateTimePicker({
targetTextSelector: '#end_date',
targetDateSelector: '#end_date_alt',
enableTimePicker: true,
dateFormat: 'yyyy/MM/dd HH:mm:ss'
});
$('#end_date').on('hidden.bs.popover', function () {
@this.set('end_date', $('#end_date_alt').val());
});
</script>
<script>
$(document).ready(function () {
addSelect2('user_id');
addSelect2('item_id');
addSelect2('role_id');
});
window.addEventListener('add-select2-event', function () {
addSelect2('user_id');
addSelect2('item_id');
addSelect2('role_id');
});
</script>
<script>
function addSelect2(id) {
$(`#${id}`).select2();
$(`#${id}`).on('change', function (e) {
@this.set(`${id}`, $(`#${id}`).select2("val"));
});
}
</script>
@endpush