Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a10bdd20fa | |||
| 05731b3670 | |||
| 9f9047a656 | |||
| 34f8066009 | |||
| 8878e1106c | |||
| 4769a8d99d | |||
| cae482535f | |||
| c6919bcead | |||
| a31375a20f |
@@ -3,9 +3,81 @@
|
|||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\TravelTypeStoreRequest;
|
||||||
|
use App\Http\Requests\TravelTypeUpdateRequest;
|
||||||
|
use App\Models\TravelType;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class TravelTypeController extends Controller
|
class TravelTypeController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* لیست + جستجو + صفحهبندی انواع سفر
|
||||||
|
*/
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('view'), 403);
|
||||||
|
|
||||||
|
$query = TravelType::query();
|
||||||
|
|
||||||
|
// جستجو بر اساس عنوان / اسلاگ
|
||||||
|
if ($request->filled('search')) {
|
||||||
|
$query->where(function ($q) use ($request) {
|
||||||
|
$q->where('title', 'like', '%' . $request->search . '%')
|
||||||
|
->orWhere('slug', 'like', '%' . $request->search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// فیلتر وضعیت (1=فعال، 0=غیرفعال)
|
||||||
|
if ($request->filled('status')) {
|
||||||
|
$query->where('status', $request->status);
|
||||||
|
}
|
||||||
|
|
||||||
|
$travelTypes = $query->latest()->paginate(10)->withQueryString();
|
||||||
|
|
||||||
|
return view('admin.travel_types.index', compact('travelTypes'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('create'), 403);
|
||||||
|
|
||||||
|
return view('admin.travel_types.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(TravelTypeStoreRequest $request)
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('create'), 403);
|
||||||
|
|
||||||
|
TravelType::create($request->validated());
|
||||||
|
|
||||||
|
return redirect()->route('admin.travelTypes.index')
|
||||||
|
->with('success', 'نوع سفر با موفقیت ثبت شد.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit(TravelType $travelType)
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('edit'), 403);
|
||||||
|
|
||||||
|
return view('admin.travel_types.edit', compact('travelType'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(TravelTypeUpdateRequest $request, TravelType $travelType)
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('edit'), 403);
|
||||||
|
|
||||||
|
$travelType->update($request->validated());
|
||||||
|
|
||||||
|
return redirect()->route('admin.travelTypes.index')
|
||||||
|
->with('success', 'نوع سفر با موفقیت ویرایش شد.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(TravelType $travelType)
|
||||||
|
{
|
||||||
|
abort_unless(auth('admin')->user()->canManageTravelTypes('delete'), 403);
|
||||||
|
|
||||||
|
$travelType->delete();
|
||||||
|
|
||||||
|
return redirect()->route('admin.travelTypes.index')
|
||||||
|
->with('success', 'نوع سفر با موفقیت حذف شد.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,8 @@
|
|||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"hekmatinasser/verta": "^9.0",
|
"hekmatinasser/verta": "^9.0",
|
||||||
"laravel/framework": "^12.0",
|
"laravel/framework": "^12.0",
|
||||||
"laravel/tinker": "^2.10.1"
|
"laravel/tinker": "^2.10.1",
|
||||||
|
"maatwebsite/excel": "^4.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
|
|||||||
@@ -0,0 +1,376 @@
|
|||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 5.2.3
|
||||||
|
-- https://www.phpmyadmin.net/
|
||||||
|
--
|
||||||
|
-- Host: 127.0.0.1:3308
|
||||||
|
-- Generation Time: Aug 17, 2026 at 04:32 PM
|
||||||
|
-- Server version: 8.4.7
|
||||||
|
-- PHP Version: 8.3.28
|
||||||
|
|
||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
START TRANSACTION;
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Database: `airline_agency`
|
||||||
|
--
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `admins`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `admins`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `admins` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`full_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`email` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`mobile` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`status` tinyint UNSIGNED NOT NULL DEFAULT '1' COMMENT '0:disable 1:enable',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `admins`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `admins` (`id`, `full_name`, `username`, `email`, `mobile`, `password`, `status`, `created_at`, `updated_at`) VALUES
|
||||||
|
(2, 'شهرزاد زندی', 'shahrzad', 'shahrzad.zandi@gmail.com', '09359359350', '$2y$12$KpHLJK1kIz/TxVUOn4FV7udVA3xGLLDtEknPZyfh13Z2WPkRmHwni', 1, '2026-08-17 07:24:19', '2026-08-17 07:24:19'),
|
||||||
|
(3, 'مدیر سیستم', 'admin', 'admin@gmail.com', '09123456789', '$2y$12$ElsUA1CqyK6euG6adWhXRuayR/Jzcq1zH28eoN3ypfeVrmTIr/zAe', 1, '2026-08-17 07:44:25', '2026-08-17 09:12:14');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `admin_permission`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `admin_permission`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `admin_permission` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`admin_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`permission_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `fk1_admin_permission` (`permission_id`),
|
||||||
|
KEY `fk2_admin_permission` (`admin_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `airports`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `airports`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `airports` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`city` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`country` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`code` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `comments`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `comments`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `comments` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`commentable_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`commentable_type` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`body` text COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`status` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `fk1_ comments` (`user_id`),
|
||||||
|
KEY `fk2_ comments` (`commentable_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `favorites`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `favorites`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `favorites` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`favoritable_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`favoritable_type` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `fk1_favorites` (`user_id`),
|
||||||
|
KEY `fk2_favorites` (`favoritable_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `files`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `files`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `files` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`fileable_id` bigint DEFAULT NULL,
|
||||||
|
`fileable_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`extension` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`size` bigint UNSIGNED NOT NULL,
|
||||||
|
`original_name` varchar(350) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`path` varchar(300) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `flights`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `flights`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `flights` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`travel_type_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`flight_number` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`airline_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`origin` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`destination` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`departure_date` date NOT NULL,
|
||||||
|
`departure_time` time NOT NULL,
|
||||||
|
`arrival_date` date NOT NULL,
|
||||||
|
`arrival_time` time NOT NULL,
|
||||||
|
`duration` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`price` decimal(12,2) NOT NULL,
|
||||||
|
`capacity` int UNSIGNED NOT NULL,
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `flights`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `flights` (`id`, `travel_type_id`, `flight_number`, `airline_name`, `origin`, `destination`, `departure_date`, `departure_time`, `arrival_date`, `arrival_time`, `duration`, `price`, `capacity`, `status`, `created_at`, `updated_at`) VALUES
|
||||||
|
(1, 2, 'IR-725', 'ایران ایر', 'تهران', 'مشهد', '1405-06-03', '14:30:00', '1405-06-03', '16:00:00', '1 ساعت و 30 دقیقه', 2500000.00, 180, 0, '2026-08-17 13:52:44', '2026-08-17 13:56:00'),
|
||||||
|
(2, 3, 'TK-182', 'ترکیش ایرلاینز', 'تهران', 'استانبول', '2026-08-28', '20:00:00', '2026-08-29', '07:31:00', '11 ساعت و 31', 18500000.00, 220, 1, '2026-08-17 14:01:19', '2026-08-17 14:01:19'),
|
||||||
|
(3, 4, 'CH-401', 'وارش', 'تهران', 'کیش', '2026-09-01', '10:30:00', '2026-09-01', '20:33:00', '10 ساعت و3 دقیقه', 4200000.00, 160, 1, '2026-08-17 14:04:34', '2026-08-17 14:04:34');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `payments`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `payments`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `payments` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`payable_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`amount` decimal(12,2) NOT NULL,
|
||||||
|
`authority` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`transaction_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`status` tinyint NOT NULL COMMENT 'pending:0 | success:1| failed:2 | canceled:3',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `permissions`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `permissions`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `permissions` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||||
|
`created_at` timestamp NULL DEFAULT NULL,
|
||||||
|
`updated_at` timestamp NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `slug` (`slug`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `settings`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `settings`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `settings` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`code` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`value` text COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `tours`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `tours`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `tours` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`travel_type_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`slug` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`image` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||||
|
`description` text COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`duration` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`start_date` date NOT NULL,
|
||||||
|
`end_date` date NOT NULL,
|
||||||
|
`price` decimal(12,2) NOT NULL,
|
||||||
|
`capacity` int UNSIGNED NOT NULL,
|
||||||
|
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `fk1_tours` (`travel_type_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `tour_flights`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `tour_flights`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `tour_flights` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`tour_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`flight_id` bigint UNSIGNED NOT NULL,
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `fk1_tour_flights` (`flight_id`),
|
||||||
|
KEY `fk2_tour_flights` (`tour_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `travel_types`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `travel_types`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `travel_types` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`title` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`slug` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `slug` (`slug`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `travel_types`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `travel_types` (`id`, `title`, `slug`, `status`, `created_at`, `updated_at`) VALUES
|
||||||
|
(2, 'تور داخلی', 'domestic-tour', 1, '2026-08-17 11:36:22', '2026-08-17 11:36:22'),
|
||||||
|
(3, 'تور خارجی', 'international-tour', 1, '2026-08-17 11:46:33', '2026-08-17 11:46:33'),
|
||||||
|
(4, 'تور چارتر', 'charter-tour', 1, '2026-08-17 11:46:59', '2026-08-17 11:46:59'),
|
||||||
|
(5, 'تور ترکیبی', 'combined-tour', 1, '2026-08-17 11:47:41', '2026-08-17 11:47:41'),
|
||||||
|
(6, 'پرواز خارجی', 'international-flight', 1, '2026-08-17 11:48:19', '2026-08-17 11:48:19'),
|
||||||
|
(7, 'پرواز داخلی', 'domestic-flight', 1, '2026-08-17 11:48:44', '2026-08-17 11:48:44'),
|
||||||
|
(8, 'تور لحظه آخری', 'last-minute', 1, '2026-08-17 11:49:11', '2026-08-17 11:49:11'),
|
||||||
|
(9, 'پیشنویس نمونه', 'draft-sample', 0, '2026-08-17 11:49:33', '2026-08-17 11:56:13');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `users`;
|
||||||
|
CREATE TABLE IF NOT EXISTS `users` (
|
||||||
|
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`first_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`last_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`email` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`mobile` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||||
|
`national_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||||
|
`birth_date` date DEFAULT NULL,
|
||||||
|
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||||
|
`created_at` timestamp NOT NULL,
|
||||||
|
`updated_at` timestamp NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for dumped tables
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `admin_permission`
|
||||||
|
--
|
||||||
|
ALTER TABLE `admin_permission`
|
||||||
|
ADD CONSTRAINT `fk1_admin_permission` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||||
|
ADD CONSTRAINT `fk2_admin_permission` FOREIGN KEY (`admin_id`) REFERENCES `admins` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `comments`
|
||||||
|
--
|
||||||
|
ALTER TABLE `comments`
|
||||||
|
ADD CONSTRAINT `fk1_ comments` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||||
|
ADD CONSTRAINT `fk2_ comments` FOREIGN KEY (`commentable_id`) REFERENCES `comments` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `favorites`
|
||||||
|
--
|
||||||
|
ALTER TABLE `favorites`
|
||||||
|
ADD CONSTRAINT `fk1_favorites` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||||
|
ADD CONSTRAINT `fk2_favorites` FOREIGN KEY (`favoritable_id`) REFERENCES `favorites` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `tours`
|
||||||
|
--
|
||||||
|
ALTER TABLE `tours`
|
||||||
|
ADD CONSTRAINT `fk1_tours` FOREIGN KEY (`travel_type_id`) REFERENCES `travel_types` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Constraints for table `tour_flights`
|
||||||
|
--
|
||||||
|
ALTER TABLE `tour_flights`
|
||||||
|
ADD CONSTRAINT `fk1_tour_flights` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||||
|
ADD CONSTRAINT `fk2_tour_flights` FOREIGN KEY (`tour_id`) REFERENCES `tours` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<!-- An unexamined life is not worth living. - Socrates -->
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<!-- Knowing is not enough; we must apply. Being willing is not enough; we must do. - Leonardo da Vinci -->
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<!-- If you do not have a consistent goal in life, you can not live it in a consistent way. - Marcus Aurelius -->
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<!-- Very little is needed to make a happy life. - Marcus Aurelius -->
|
||||||
|
</div>
|
||||||
@@ -1,3 +1,308 @@
|
|||||||
<div>
|
@extends('admin.layouts.app')
|
||||||
<!-- Nothing worth having comes easy. - Theodore Roosevelt -->
|
|
||||||
</div>
|
@section('title', 'ایجاد مدیر جدید')
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ایجاد مدیر جدید
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="{{ route('admin.dashboard.index') }}">
|
||||||
|
داشبورد
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="{{ route('admin.admins.index') }}">
|
||||||
|
مدیران
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
ایجاد مدیر
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ route('admin.admins.store') }}"
|
||||||
|
method="POST"
|
||||||
|
>
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xl-8">
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
<h5 class="mb-0">
|
||||||
|
اطلاعات مدیر
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
{{-- نام کامل --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نام و نام خانوادگی
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="full_name"
|
||||||
|
class="form-control @error('full_name') is-invalid @enderror"
|
||||||
|
value="{{ old('full_name') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('full_name')
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- نام کاربری --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نام کاربری
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="username"
|
||||||
|
class="form-control @error('username') is-invalid @enderror"
|
||||||
|
value="{{ old('username') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('username')
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ایمیل --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ایمیل
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="email"
|
||||||
|
name="email"
|
||||||
|
class="form-control @error('email') is-invalid @enderror"
|
||||||
|
value="{{ old('email') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('email')
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- موبایل --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
موبایل
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="mobile"
|
||||||
|
class="form-control @error('mobile') is-invalid @enderror"
|
||||||
|
value="{{ old('mobile') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('mobile')
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- رمز --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
رمز عبور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
name="password"
|
||||||
|
class="form-control @error('password') is-invalid @enderror"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('password')
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تکرار رمز --}}
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تکرار رمز عبور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
name="password_confirmation"
|
||||||
|
class="form-control"
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ستون سمت چپ --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
{{-- وضعیت --}}
|
||||||
|
<div class="card custom-card mb-3">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
وضعیت
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<select
|
||||||
|
name="status"
|
||||||
|
class="form-select"
|
||||||
|
>
|
||||||
|
<option value="1">
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option value="0">
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- دسترسیها --}}
|
||||||
|
<div class="card custom-card mb-3">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
دسترسیها
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
@foreach($permissions ?? [] as $permission)
|
||||||
|
|
||||||
|
<div class="form-check mb-2">
|
||||||
|
|
||||||
|
<input
|
||||||
|
class="form-check-input"
|
||||||
|
type="checkbox"
|
||||||
|
name="permissions[]"
|
||||||
|
value="{{ $permission->id }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<label class="form-check-label">
|
||||||
|
|
||||||
|
{{ $permission->title }}
|
||||||
|
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- دکمه ها --}}
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-body d-grid gap-2">
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn btn-primary"
|
||||||
|
>
|
||||||
|
|
||||||
|
<i class="ri-save-line me-1"></i>
|
||||||
|
|
||||||
|
ذخیره مدیر
|
||||||
|
|
||||||
|
</button>
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="{{ route('admin.admins.index') }}"
|
||||||
|
class="btn btn-light"
|
||||||
|
>
|
||||||
|
بازگشت
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|||||||
@@ -1,3 +1,427 @@
|
|||||||
<div>
|
@extends('admin.layouts.app')
|
||||||
<!-- He who is contented is rich. - Laozi -->
|
|
||||||
</div>
|
@section('title', 'ویرایش مدیر')
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ویرایش مدیر
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
|
||||||
|
<a href="{{ route('admin.dashboard.index') }}">
|
||||||
|
داشبورد
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
|
||||||
|
<a href="{{ route('admin.admins.index') }}">
|
||||||
|
مدیریت مدیران
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
ویرایش مدیر
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<form action="{{ route('admin.admins.update', $admin) }}"
|
||||||
|
method="POST">
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
{{-- اطلاعات مدیر --}}
|
||||||
|
|
||||||
|
<div class="col-xl-8">
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
|
||||||
|
<div class="card-title">
|
||||||
|
اطلاعات مدیر
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row gy-3">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- نام --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نام و نام خانوادگی
|
||||||
|
<span class="text-danger">*</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="full_name"
|
||||||
|
value="{{ old('full_name', $admin->full_name) }}"
|
||||||
|
class="form-control @error('full_name') is-invalid @enderror"
|
||||||
|
placeholder="نام و نام خانوادگی">
|
||||||
|
|
||||||
|
@error('full_name')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- username --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نام کاربری
|
||||||
|
<span class="text-danger">*</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="username"
|
||||||
|
value="{{ old('username', $admin->username) }}"
|
||||||
|
class="form-control @error('username') is-invalid @enderror"
|
||||||
|
placeholder="نام کاربری">
|
||||||
|
|
||||||
|
@error('username')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- email --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ایمیل
|
||||||
|
<span class="text-danger">*</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="email"
|
||||||
|
name="email"
|
||||||
|
value="{{ old('email', $admin->email) }}"
|
||||||
|
class="form-control @error('email') is-invalid @enderror"
|
||||||
|
placeholder="example@gmail.com"
|
||||||
|
dir="ltr">
|
||||||
|
|
||||||
|
@error('email')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- mobile --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
موبایل
|
||||||
|
<span class="text-danger">*</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="mobile"
|
||||||
|
value="{{ old('mobile', $admin->mobile) }}"
|
||||||
|
class="form-control @error('mobile') is-invalid @enderror"
|
||||||
|
placeholder="09123456789"
|
||||||
|
dir="ltr">
|
||||||
|
|
||||||
|
@error('mobile')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- password --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
رمز عبور جدید
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="password"
|
||||||
|
name="password"
|
||||||
|
class="form-control @error('password') is-invalid @enderror"
|
||||||
|
placeholder="در صورت تغییر وارد کنید">
|
||||||
|
|
||||||
|
<small class="text-muted d-block mt-1">
|
||||||
|
اگر نمیخواهید رمز تغییر کند، این قسمت را خالی بگذارید.
|
||||||
|
</small>
|
||||||
|
|
||||||
|
@error('password')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- password confirmation --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تکرار رمز عبور جدید
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="password"
|
||||||
|
name="password_confirmation"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="تکرار رمز جدید">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- status --}}
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select name="status"
|
||||||
|
class="form-select @error('status') is-invalid @enderror">
|
||||||
|
|
||||||
|
<option value="1"
|
||||||
|
@selected(old('status', $admin->status) == 1)>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option value="0"
|
||||||
|
@selected(old('status', $admin->status) == 0)>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- دسترسیها --}}
|
||||||
|
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div class="card-title mb-1">
|
||||||
|
سطح دسترسی
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<small class="text-muted">
|
||||||
|
دسترسیهای مدیر را مدیریت کنید.
|
||||||
|
</small>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
@php
|
||||||
|
|
||||||
|
$selectedPermissions = old(
|
||||||
|
'permissions',
|
||||||
|
$admin->permissions->pluck('id')->toArray()
|
||||||
|
);
|
||||||
|
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
|
||||||
|
@error('permissions')
|
||||||
|
|
||||||
|
<div class="alert alert-danger py-2">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
|
||||||
|
@forelse($permissions as $permission)
|
||||||
|
|
||||||
|
<div class="form-check form-check-lg mb-3">
|
||||||
|
|
||||||
|
<input class="form-check-input"
|
||||||
|
type="checkbox"
|
||||||
|
name="permissions[]"
|
||||||
|
value="{{ $permission->id }}"
|
||||||
|
id="permission_{{ $permission->id }}"
|
||||||
|
@checked(in_array(
|
||||||
|
$permission->id,
|
||||||
|
$selectedPermissions
|
||||||
|
))>
|
||||||
|
|
||||||
|
<label class="form-check-label"
|
||||||
|
for="permission_{{ $permission->id }}">
|
||||||
|
|
||||||
|
<span class="fw-semibold">
|
||||||
|
{{ $permission->name }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
@if($permission->description)
|
||||||
|
|
||||||
|
<small class="text-muted d-block mt-1">
|
||||||
|
{{ $permission->description }}
|
||||||
|
</small>
|
||||||
|
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@empty
|
||||||
|
|
||||||
|
<div class="text-center text-muted py-4">
|
||||||
|
|
||||||
|
<i class="ri-shield-keyhole-line fs-2 d-block mb-2"></i>
|
||||||
|
|
||||||
|
هنوز دسترسیای تعریف نشده است.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endforelse
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- دکمهها --}}
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
|
||||||
|
<div class="text-muted fs-12">
|
||||||
|
|
||||||
|
<i class="ri-information-line me-1"></i>
|
||||||
|
|
||||||
|
آخرین ویرایش:
|
||||||
|
|
||||||
|
@if($admin->updated_at)
|
||||||
|
|
||||||
|
|
||||||
|
<td>{{ $type->updated_at ? $type->updated_at->toJalali()->format('Y/m/d H:i') : '-' }}</td>
|
||||||
|
@else
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="d-flex gap-2">
|
||||||
|
|
||||||
|
<a href="{{ route('admin.admins.index') }}"
|
||||||
|
class="btn btn-light">
|
||||||
|
|
||||||
|
انصراف
|
||||||
|
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<button type="submit"
|
||||||
|
class="btn btn-primary">
|
||||||
|
|
||||||
|
<i class="ri-save-line me-1"></i>
|
||||||
|
|
||||||
|
ذخیره تغییرات
|
||||||
|
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user