feat: add legal opinions admin management

This commit is contained in:
2026-05-08 18:15:21 +03:30
parent 357859608f
commit ae522c5640
16 changed files with 649 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
@include('admin.layouts.errors')
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<h4 class="card-title">افزودن دسته‌بندی نظریه حقوقی</h4>
<div>
<form action="{{ route('legal-opinion-category.store') }}" method="post">
@csrf
<div class="mb-4">
<label for="name">نام دسته‌بندی</label>
<input class="form-control" name="name" type="text" placeholder="نام دسته‌بندی" required>
</div>
<button class="btn btn-primary" type="submit">ذخیره</button>
<a href="{{ route('legal-opinion-category.index') }}" class="btn btn-secondary">بازگشت</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,44 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
@include('admin.partial.list-filter', ['filterRoute' => 'legal-opinion-category.index'])
<div id="datatable_wrapper" class="dataTables_wrapper dt-bootstrap4 no-footer">
<div class="row">
<div class="col-sm-12">
<table id="datatable" class="table table-bordered dt-responsive nowrap dataTable no-footer dtr-inline" style="border-collapse: collapse; border-spacing: 0px; width: 100%;" role="grid" aria-describedby="datatable_info">
<thead>
<tr role="row">
<th>نام دسته‌بندی</th>
<th>عملیات</th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr>
<td>{{ $category->name }}</td>
<td>
<form action="{{ route('legal-opinion-category.destroy', $category->id) }}" method="POST" style="display: inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger waves-effect waves-light" onclick="return confirm('آیا مطمئنید که می‌خواهید این دسته‌بندی را حذف کنید؟')">حذف</button>
</form>
<a href="{{ route('legal-opinion-category.edit', $category->id) }}" type="button" class="btn btn-primary waves-effect waves-light">ویرایش</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="d-flex justify-content-center mt-3">
{{ $categories->withQueryString()->links() }}
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,26 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
@include('admin.layouts.errors')
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<h4 class="card-title">ویرایش دسته‌بندی نظریه حقوقی</h4>
<div>
<form action="{{ route('legal-opinion-category.update', $legalOpinionCategory->id) }}" method="post">
@csrf
@method('PUT')
<div class="mb-4">
<label for="name">نام دسته‌بندی</label>
<input class="form-control" name="name" type="text" value="{{ $legalOpinionCategory->name }}" placeholder="نام دسته‌بندی" required>
</div>
<button class="btn btn-primary" type="submit">بروزرسانی</button>
<a href="{{ route('legal-opinion-category.index') }}" class="btn btn-secondary">بازگشت</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,65 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
@include('admin.layouts.errors')
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<h4 class="card-title">افزودن نظریه حقوقی</h4>
<div>
<form action="{{ route('legal-opinion.store') }}" method="post">
@csrf
<div class="mb-4">
<label for="opinion_number">شماره نظریه</label>
<input class="form-control" name="opinion_number" type="text" placeholder="شماره نظریه" required>
</div>
<div class="mb-4">
<label for="opinion_date">تاریخ نظریه</label>
<input class="form-control" name="opinion_date" type="date">
</div>
<div class="mb-4">
<label for="subject">موضوع استعلام یا نظریه</label>
<input class="form-control" name="subject" type="text" placeholder="موضوع استعلام یا نظریه">
</div>
<div class="mb-4">
<label for="full_text">متن کامل نظریه و استعلام</label>
<textarea class="form-control" name="full_text" id="full_text" cols="30" rows="10" required></textarea>
</div>
<div class="mb-4">
<label for="issuing_authority">مرجع صدور</label>
<input class="form-control" name="issuing_authority" type="text" placeholder="مرجع صدور">
</div>
<div class="mb-4">
<label for="category_id">دسته‌بندی</label>
<select class="form-control" name="category_id" id="category_id" required>
<option value="">انتخاب دسته‌بندی</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select>
</div>
<div class="mb-4">
<label for="art_ids">مواد مرتبط</label>
<select class="form-control" name="art_ids[]" id="art_ids" multiple size="10">
@foreach ($arts as $art)
<option value="{{ $art->id }}">{{ $art->title }} - شماره {{ $art->number }}</option>
@endforeach
</select>
<small class="form-text text-muted">برای انتخاب چند ماده، کلید Ctrl (یا Cmd در Mac) را نگه دارید</small>
</div>
<button class="btn btn-primary" type="submit">ذخیره</button>
<a href="{{ route('legal-opinion.index') }}" class="btn btn-secondary">بازگشت</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,52 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
@include('admin.partial.list-filter', ['filterRoute' => 'legal-opinion.index'])
<div id="datatable_wrapper" class="dataTables_wrapper dt-bootstrap4 no-footer">
<div class="row">
<div class="col-sm-12">
<table id="datatable" class="table table-bordered dt-responsive nowrap dataTable no-footer dtr-inline" style="border-collapse: collapse; border-spacing: 0px; width: 100%;" role="grid" aria-describedby="datatable_info">
<thead>
<tr role="row">
<th>شماره نظریه</th>
<th>تاریخ نظریه</th>
<th>موضوع</th>
<th>دسته‌بندی</th>
<th>مرجع صدور</th>
<th>عملیات</th>
</tr>
</thead>
<tbody>
@foreach ($legalOpinions as $opinion)
<tr>
<td>{{ $opinion->opinion_number }}</td>
<td>{{ $opinion->opinion_date }}</td>
<td>{{ $opinion->subject }}</td>
<td>{{ $opinion->category?->name }}</td>
<td>{{ $opinion->issuing_authority }}</td>
<td>
<form action="{{ route('legal-opinion.destroy', $opinion->id) }}" method="POST" style="display: inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger waves-effect waves-light" onclick="return confirm('آیا مطمئنید که می‌خواهید این نظریه را حذف کنید؟')">حذف</button>
</form>
<a href="{{ route('legal-opinion.edit', $opinion->id) }}" type="button" class="btn btn-primary waves-effect waves-light">ویرایش</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="d-flex justify-content-center mt-3">
{{ $legalOpinions->withQueryString()->links() }}
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,66 @@
@extends('admin.layouts.app')
@section('content')
<div class="row">
@include('admin.layouts.errors')
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<h4 class="card-title">ویرایش نظریه حقوقی</h4>
<div>
<form action="{{ route('legal-opinion.update', $legalOpinion->id) }}" method="post">
@csrf
@method('PUT')
<div class="mb-4">
<label for="opinion_number">شماره نظریه</label>
<input class="form-control" name="opinion_number" type="text" value="{{ $legalOpinion->opinion_number }}" placeholder="شماره نظریه" required>
</div>
<div class="mb-4">
<label for="opinion_date">تاریخ نظریه</label>
<input class="form-control" name="opinion_date" type="date" value="{{ $legalOpinion->opinion_date }}">
</div>
<div class="mb-4">
<label for="subject">موضوع استعلام یا نظریه</label>
<input class="form-control" name="subject" type="text" value="{{ $legalOpinion->subject }}" placeholder="موضوع استعلام یا نظریه">
</div>
<div class="mb-4">
<label for="full_text">متن کامل نظریه و استعلام</label>
<textarea class="form-control" name="full_text" id="full_text" cols="30" rows="10" required>{{ $legalOpinion->full_text }}</textarea>
</div>
<div class="mb-4">
<label for="issuing_authority">مرجع صدور</label>
<input class="form-control" name="issuing_authority" type="text" value="{{ $legalOpinion->issuing_authority }}" placeholder="مرجع صدور">
</div>
<div class="mb-4">
<label for="category_id">دسته‌بندی</label>
<select class="form-control" name="category_id" id="category_id" required>
<option value="">انتخاب دسته‌بندی</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}" {{ $legalOpinion->category_id == $category->id ? 'selected' : '' }}>{{ $category->name }}</option>
@endforeach
</select>
</div>
<div class="mb-4">
<label for="art_ids">مواد مرتبط</label>
<select class="form-control" name="art_ids[]" id="art_ids" multiple size="10">
@foreach ($arts as $art)
<option value="{{ $art->id }}" {{ in_array($art->id, $selectedArtIds) ? 'selected' : '' }}>{{ $art->title }} - شماره {{ $art->number }}</option>
@endforeach
</select>
<small class="form-text text-muted">برای انتخاب چند ماده، کلید Ctrl (یا Cmd در Mac) را نگه دارید</small>
</div>
<button class="btn btn-primary" type="submit">بروزرسانی</button>
<a href="{{ route('legal-opinion.index') }}" class="btn btn-secondary">بازگشت</a>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -220,6 +220,28 @@
</ul>
</li>
<li>
<a href="javascript:%20void(0);" class="has-arrow waves-effect">
<i class="mdi mdi-file-document-outline"></i>
<span>نظریه‌های حقوقی</span>
</a>
<ul class="sub-menu" aria-expanded="false">
<li><a href="{{ route('legal-opinion.index') }}">لیست نظریه‌ها</a></li>
<li><a href="{{ route('legal-opinion.create') }}">افزودن نظریه جدید</a></li>
</ul>
</li>
<li>
<a href="javascript:%20void(0);" class="has-arrow waves-effect">
<i class="mdi mdi-format-list-bulleted"></i>
<span>دسته‌بندی نظریه‌ها</span>
</a>
<ul class="sub-menu" aria-expanded="false">
<li><a href="{{ route('legal-opinion-category.index') }}">لیست دسته‌بندی‌ها</a></li>
<li><a href="{{ route('legal-opinion-category.create') }}">افزودن دسته‌بندی جدید</a></li>
</ul>
</li>
<li>
<a href="javascript:%20void(0);" class="has-arrow waves-effect">
<i class="mdi mdi-account-circle-outline"></i>