git commit "style: improve tour flight details and auth pages"
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class reservationController extends Controller
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
@@ -75,9 +75,8 @@ class FlightStoreRequest extends FormRequest
|
|||||||
],
|
],
|
||||||
'capacity' => [
|
'capacity' => [
|
||||||
'required',
|
'required',
|
||||||
'integer',
|
'integer'
|
||||||
'min:1'
|
],
|
||||||
],
|
|
||||||
'price' => [
|
'price' => [
|
||||||
'required',
|
'required',
|
||||||
'numeric',
|
'numeric',
|
||||||
|
|||||||
+14
-2
@@ -108,9 +108,21 @@ class Flight extends Model
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$query->when($filters['origin'] ?? null, function ($query, $origin) {
|
||||||
|
|
||||||
|
$query->where('origin', $origin);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$query->when($filters['destination'] ?? null, function ($query, $destination) {
|
||||||
|
|
||||||
|
$query->where('destination', $destination);
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[Scope]
|
#[Scope]
|
||||||
public function filterType(Builder $query, $type = null): void
|
public function filterType(Builder $query, $type = null): void
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,233 @@
|
|||||||
|
.flight-image {
|
||||||
|
height: 260px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-image img {
|
||||||
|
transition: .6s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card:hover .flight-image img {
|
||||||
|
transform: scale(1.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card.border-0.shadow-sm.rounded-4.overflow-hidden {
|
||||||
|
|
||||||
|
border-radius: 24px !important;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
background: #fff;
|
||||||
|
transition: .4s ease;
|
||||||
|
border: 1px solid #f1f1f1 !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card.border-0.shadow-sm.rounded-4.overflow-hidden:hover {
|
||||||
|
|
||||||
|
transform: translateY(-8px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 20px 45px rgba(0,0,0,.12)!important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card form {
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
top:18px;
|
||||||
|
left:18px;
|
||||||
|
z-index:5;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card form button {
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
background:rgba(255,255,255,.9);
|
||||||
|
|
||||||
|
backdrop-filter:blur(8px);
|
||||||
|
|
||||||
|
border:none;
|
||||||
|
|
||||||
|
padding:10px 18px;
|
||||||
|
|
||||||
|
color:#e63946;
|
||||||
|
|
||||||
|
font-weight:600;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 8px 20px rgba(0,0,0,.15);
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card form button:hover {
|
||||||
|
|
||||||
|
background:#e63946;
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-badge {
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
right:20px;
|
||||||
|
|
||||||
|
bottom:20px;
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
padding:8px 20px;
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
font-size:14px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 8px 20px rgba(0,0,0,.15);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.flight-image:after {
|
||||||
|
|
||||||
|
content:"";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
inset:0;
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
transparent,
|
||||||
|
rgba(0,0,0,.45)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
|
||||||
|
padding:28px !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body h5 {
|
||||||
|
|
||||||
|
font-size:22px;
|
||||||
|
|
||||||
|
font-weight:800 !important;
|
||||||
|
|
||||||
|
color:#222;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.route {
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
justify-content:center;
|
||||||
|
|
||||||
|
align-items:center;
|
||||||
|
|
||||||
|
gap:15px;
|
||||||
|
|
||||||
|
margin:25px 0;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
font-size:16px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route .line {
|
||||||
|
|
||||||
|
width:55px;
|
||||||
|
|
||||||
|
height:2px;
|
||||||
|
|
||||||
|
background:#dbe7ff;
|
||||||
|
|
||||||
|
position:relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route .line:after {
|
||||||
|
|
||||||
|
content:"✈";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
top:50%;
|
||||||
|
left:50%;
|
||||||
|
|
||||||
|
transform:translate(-50%,-50%);
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
padding:5px;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body strong {
|
||||||
|
|
||||||
|
font-size:20px;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body .btn-primary {
|
||||||
|
|
||||||
|
background:linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#0062ff,
|
||||||
|
#00b7ff
|
||||||
|
);
|
||||||
|
|
||||||
|
border:none;
|
||||||
|
|
||||||
|
padding:11px 30px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 10px 25px rgba(0,98,255,.3);
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body .btn-primary:hover {
|
||||||
|
|
||||||
|
transform:translateY(-3px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 15px 30px rgba(0,98,255,.4);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,225 @@
|
|||||||
|
|
||||||
|
.main-header {
|
||||||
|
|
||||||
|
background: #09203f;
|
||||||
|
|
||||||
|
box-shadow: 0 8px 30px rgba(0,0,0,.2);
|
||||||
|
|
||||||
|
padding: 15px 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.header-inner {
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
align-items:center;
|
||||||
|
|
||||||
|
justify-content:space-between;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
font-size:28px;
|
||||||
|
|
||||||
|
font-weight:800;
|
||||||
|
|
||||||
|
text-decoration:none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
gap:30px;
|
||||||
|
|
||||||
|
list-style:none;
|
||||||
|
|
||||||
|
margin:0;
|
||||||
|
|
||||||
|
padding:0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.menu li a {
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
text-decoration:none;
|
||||||
|
|
||||||
|
font-weight:600;
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.menu li a:hover {
|
||||||
|
|
||||||
|
color:#ffc107;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.header-actions {
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
gap:10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.login-btn {
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
border:1px solid white;
|
||||||
|
|
||||||
|
padding:10px 20px;
|
||||||
|
|
||||||
|
border-radius:30px;
|
||||||
|
|
||||||
|
text-decoration:none;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.register-btn {
|
||||||
|
|
||||||
|
background:#ffc107;
|
||||||
|
|
||||||
|
color:#09203f;
|
||||||
|
|
||||||
|
padding:10px 20px;
|
||||||
|
|
||||||
|
border-radius:30px;
|
||||||
|
|
||||||
|
text-decoration:none;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.user-btn {
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
text-decoration:none;
|
||||||
|
|
||||||
|
}
|
||||||
|
.user-dropdown {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.user-btn {
|
||||||
|
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
font-size: 15px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
padding: 10px 15px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.user-menu {
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
top: 45px;
|
||||||
|
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
width: 200px;
|
||||||
|
|
||||||
|
background: white;
|
||||||
|
|
||||||
|
border-radius: 15px;
|
||||||
|
|
||||||
|
padding: 10px 0;
|
||||||
|
|
||||||
|
box-shadow: 0 15px 40px rgba(0,0,0,.15);
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
visibility: hidden;
|
||||||
|
|
||||||
|
transform: translateY(10px);
|
||||||
|
|
||||||
|
transition: .3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.user-dropdown:hover .user-menu {
|
||||||
|
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
visibility: visible;
|
||||||
|
|
||||||
|
transform: translateY(0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.user-menu a,
|
||||||
|
.user-menu button {
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
padding: 12px 20px;
|
||||||
|
|
||||||
|
color: #263238;
|
||||||
|
|
||||||
|
background: none;
|
||||||
|
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.user-menu a:hover,
|
||||||
|
.user-menu button:hover {
|
||||||
|
|
||||||
|
background: #f1f5f9;
|
||||||
|
|
||||||
|
color: #1976d2;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,698 @@
|
|||||||
|
.flight-detail-page {
|
||||||
|
padding: 70px 0;
|
||||||
|
background: #f6f8fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flight-detail-card {
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
border-radius:30px;
|
||||||
|
|
||||||
|
overflow:hidden;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 25px 70px rgba(15,23,42,.12);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.flight-detail-image {
|
||||||
|
|
||||||
|
height:200px;
|
||||||
|
width: 500px;
|
||||||
|
overflow:hidden;
|
||||||
|
|
||||||
|
position:relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-image:after {
|
||||||
|
|
||||||
|
content:"";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
inset:0;
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
to top,
|
||||||
|
rgba(0,0,0,.45),
|
||||||
|
transparent
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-image img {
|
||||||
|
|
||||||
|
width:100%;
|
||||||
|
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
object-fit:cover;
|
||||||
|
|
||||||
|
transition:.6s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-card:hover
|
||||||
|
.flight-detail-image img {
|
||||||
|
|
||||||
|
transform:scale(1.04);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-content {
|
||||||
|
|
||||||
|
padding:45px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-content h1 {
|
||||||
|
|
||||||
|
font-size:34px;
|
||||||
|
|
||||||
|
font-weight:900;
|
||||||
|
|
||||||
|
color:#172554;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-badge-show {
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#2563eb,
|
||||||
|
#06b6d4
|
||||||
|
);
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
padding:10px 25px;
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 10px 25px rgba(37,99,235,.3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route-box {
|
||||||
|
|
||||||
|
background:#f8fafc;
|
||||||
|
|
||||||
|
border-radius:25px;
|
||||||
|
|
||||||
|
padding:30px;
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
justify-content:space-between;
|
||||||
|
|
||||||
|
align-items:center;
|
||||||
|
|
||||||
|
margin:35px 0;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.route-box small {
|
||||||
|
|
||||||
|
color:#64748b;
|
||||||
|
|
||||||
|
font-size:14px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.route-box strong {
|
||||||
|
|
||||||
|
display:block;
|
||||||
|
|
||||||
|
font-size:30px;
|
||||||
|
|
||||||
|
margin-top:10px;
|
||||||
|
|
||||||
|
color:#0f172a;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.route-line {
|
||||||
|
|
||||||
|
width:70px;
|
||||||
|
|
||||||
|
height:70px;
|
||||||
|
|
||||||
|
border-radius:50%;
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
align-items:center;
|
||||||
|
|
||||||
|
justify-content:center;
|
||||||
|
|
||||||
|
|
||||||
|
background:#e0f2fe;
|
||||||
|
|
||||||
|
color:#0284c7;
|
||||||
|
|
||||||
|
font-size:28px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid {
|
||||||
|
|
||||||
|
display:grid;
|
||||||
|
|
||||||
|
grid-template-columns:repeat(4,1fr);
|
||||||
|
|
||||||
|
gap:20px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid > div {
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
border:1px solid #e5e7eb;
|
||||||
|
|
||||||
|
padding:22px;
|
||||||
|
|
||||||
|
border-radius:22px;
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid > div:hover {
|
||||||
|
|
||||||
|
transform:translateY(-5px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 15px 30px rgba(0,0,0,.08);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid span {
|
||||||
|
|
||||||
|
display:block;
|
||||||
|
|
||||||
|
color:#64748b;
|
||||||
|
|
||||||
|
margin-bottom:12px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid b {
|
||||||
|
|
||||||
|
font-size:18px;
|
||||||
|
|
||||||
|
color:#0f172a;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-content .btn-success {
|
||||||
|
|
||||||
|
border:0;
|
||||||
|
|
||||||
|
padding:14px 45px;
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
font-weight:800;
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#16a34a,
|
||||||
|
#22c55e
|
||||||
|
);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 12px 30px rgba(34,197,94,.3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments {
|
||||||
|
|
||||||
|
margin-top:60px;
|
||||||
|
|
||||||
|
padding-top:40px;
|
||||||
|
|
||||||
|
border-top:1px solid #eee;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments h3 {
|
||||||
|
|
||||||
|
font-weight:900;
|
||||||
|
|
||||||
|
color:#172554;
|
||||||
|
|
||||||
|
margin-bottom:30px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments form {
|
||||||
|
|
||||||
|
background:#f8fafc;
|
||||||
|
padding:30px;
|
||||||
|
border-radius:25px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments label {
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
margin-bottom:8px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments .form-control {
|
||||||
|
|
||||||
|
border-radius:15px;
|
||||||
|
|
||||||
|
padding:14px;
|
||||||
|
|
||||||
|
border:1px solid #e2e8f0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.flight-comments .btn-primary {
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
padding:12px 35px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.comments-list .card {
|
||||||
|
|
||||||
|
border:0!important;
|
||||||
|
|
||||||
|
border-radius:22px!important;
|
||||||
|
|
||||||
|
padding:25px!important;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 10px 30px rgba(0,0,0,.06)!important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comments-list strong {
|
||||||
|
|
||||||
|
color:#1e3a8a;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comments-list p {
|
||||||
|
|
||||||
|
color:#475569;
|
||||||
|
|
||||||
|
line-height:2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@media(max-width:768px){
|
||||||
|
|
||||||
|
.flight-detail-content{
|
||||||
|
padding:25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-info-grid{
|
||||||
|
|
||||||
|
grid-template-columns:1fr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route-box{
|
||||||
|
|
||||||
|
flex-direction:column;
|
||||||
|
|
||||||
|
gap:20px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-detail-content h1{
|
||||||
|
|
||||||
|
font-size:25px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
|
||||||
|
/* =========================
|
||||||
|
Tour Detail Style
|
||||||
|
========================= */
|
||||||
|
|
||||||
|
|
||||||
|
.tour-detail-card {
|
||||||
|
|
||||||
|
border-radius:30px;
|
||||||
|
|
||||||
|
overflow:hidden;
|
||||||
|
|
||||||
|
background:#fff;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 25px 60px rgba(0,0,0,.12);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Image */
|
||||||
|
|
||||||
|
.tour-detail-image {
|
||||||
|
|
||||||
|
height:420px;
|
||||||
|
|
||||||
|
position:relative;
|
||||||
|
|
||||||
|
overflow:hidden;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tour-detail-image img {
|
||||||
|
|
||||||
|
width:100%;
|
||||||
|
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
object-fit:cover;
|
||||||
|
|
||||||
|
transition:.6s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tour-detail-image:hover img {
|
||||||
|
|
||||||
|
transform:scale(1.08);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tour-detail-image:after {
|
||||||
|
|
||||||
|
content:"";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
inset:0;
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
to top,
|
||||||
|
rgba(0,0,0,.55),
|
||||||
|
transparent 60%
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Badge */
|
||||||
|
|
||||||
|
.tour-detail-image .badge {
|
||||||
|
|
||||||
|
z-index:3;
|
||||||
|
|
||||||
|
padding:10px 25px;
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
font-size:14px;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 10px 25px rgba(0,0,0,.25);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Body */
|
||||||
|
|
||||||
|
.tour-detail-card .card-body {
|
||||||
|
|
||||||
|
padding:35px!important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.tour-detail-card h1 {
|
||||||
|
|
||||||
|
font-size:34px;
|
||||||
|
|
||||||
|
font-weight:900;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Info boxes */
|
||||||
|
|
||||||
|
|
||||||
|
.tour-info-box {
|
||||||
|
|
||||||
|
background:#f8fafc;
|
||||||
|
|
||||||
|
border-radius:22px;
|
||||||
|
|
||||||
|
padding:22px;
|
||||||
|
|
||||||
|
border:1px solid #edf2f7;
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tour-info-box:hover {
|
||||||
|
|
||||||
|
transform:translateY(-6px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 15px 35px rgba(13,110,253,.12);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.tour-info-box span {
|
||||||
|
|
||||||
|
color:#78909c;
|
||||||
|
|
||||||
|
font-size:14px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.tour-info-box h5 {
|
||||||
|
|
||||||
|
margin-top:12px;
|
||||||
|
|
||||||
|
font-weight:800;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Price */
|
||||||
|
|
||||||
|
.tour-price {
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Reserve */
|
||||||
|
|
||||||
|
|
||||||
|
.btn-success,
|
||||||
|
.btn-warning {
|
||||||
|
|
||||||
|
border-radius:50px!important;
|
||||||
|
|
||||||
|
padding:12px 35px!important;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Comments */
|
||||||
|
|
||||||
|
|
||||||
|
.comment-box {
|
||||||
|
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
border-radius:30px;
|
||||||
|
|
||||||
|
padding:35px;
|
||||||
|
|
||||||
|
margin-top:35px;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
|
||||||
|
0 20px 50px rgba(0,0,0,.08);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-box h3 {
|
||||||
|
|
||||||
|
font-weight:900;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-box textarea,
|
||||||
|
.comment-box select {
|
||||||
|
|
||||||
|
border-radius:18px;
|
||||||
|
|
||||||
|
border:1px solid #e5e7eb;
|
||||||
|
|
||||||
|
padding:15px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-box textarea:focus,
|
||||||
|
.comment-box select:focus {
|
||||||
|
|
||||||
|
border-color:#0d6efd;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 0 0 .2rem rgba(13,110,253,.15);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Comment item */
|
||||||
|
|
||||||
|
|
||||||
|
.comment-item {
|
||||||
|
|
||||||
|
background:#f8fafc;
|
||||||
|
|
||||||
|
border-radius:22px;
|
||||||
|
|
||||||
|
padding:22px;
|
||||||
|
|
||||||
|
margin-bottom:18px;
|
||||||
|
|
||||||
|
border:1px solid #edf2f7;
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-item:hover {
|
||||||
|
|
||||||
|
transform:translateY(-5px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 15px 35px rgba(0,0,0,.08);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-item strong {
|
||||||
|
|
||||||
|
font-size:16px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-item small {
|
||||||
|
|
||||||
|
color:#94a3b8;
|
||||||
|
|
||||||
|
}
|
||||||
|
.reservation-form {
|
||||||
|
position: relative !important;
|
||||||
|
top: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 30px 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.reservation-form button {
|
||||||
|
position: relative !important;
|
||||||
|
top: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card form {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -8,6 +8,7 @@
|
|||||||
ویرایش پرواز
|
ویرایش پرواز
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
|
|
||||||
@if($errors->any())
|
@if($errors->any())
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
<ul class="mb-0">
|
<ul class="mb-0">
|
||||||
@@ -18,6 +19,7 @@
|
|||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
<form action="{{ route('admin.flights.update',$flight->id) }}"
|
<form action="{{ route('admin.flights.update',$flight->id) }}"
|
||||||
method="POST"
|
method="POST"
|
||||||
enctype="multipart/form-data">
|
enctype="multipart/form-data">
|
||||||
@@ -25,98 +27,76 @@
|
|||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-6 mb-3">
|
<div class="col-md-6 mb-3">
|
||||||
<label>
|
<label>ایرلاین</label>
|
||||||
ایرلاین
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="airline"
|
name="airline"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
value="{{ old('airline') }}">
|
value="{{ old('airline',$flight->airline) }}">
|
||||||
|
|
||||||
@error('airline')
|
|
||||||
<small class="text-danger">
|
|
||||||
{{ $message }}
|
|
||||||
</small>
|
|
||||||
@enderror
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-6 mb-3">
|
<div class="col-md-6 mb-3">
|
||||||
<label>
|
<label>شماره پرواز</label>
|
||||||
شماره پرواز
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="flight_number"
|
name="flight_number"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
value="{{ old('flight_number') }}">
|
value="{{ old('flight_number',$flight->flight_number) }}">
|
||||||
|
|
||||||
@error('flight_number')
|
|
||||||
<small class="text-danger">
|
|
||||||
{{ $message }}
|
|
||||||
</small>
|
|
||||||
@enderror
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-6 mb-3">
|
<div class="col-md-6 mb-3">
|
||||||
<label>
|
<label>مبدا</label>
|
||||||
مبدا
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="origin"
|
name="origin"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
value="{{ old('origin') }}">
|
value="{{ old('origin',$flight->origin) }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-6 mb-3">
|
<div class="col-md-6 mb-3">
|
||||||
<label>
|
<label>مقصد</label>
|
||||||
مقصد
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="destination"
|
name="destination"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
value="{{ old('destination') }}">
|
value="{{ old('destination',$flight->destination) }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
|
||||||
|
|
||||||
<label>
|
|
||||||
ساعت حرکت
|
<div class="col-md-4 mb-3">
|
||||||
</label>
|
<label>ساعت حرکت</label>
|
||||||
|
|
||||||
<input type="time"
|
<input type="time"
|
||||||
name="departure_time"
|
name="departure_time"
|
||||||
class="form-control">
|
class="form-control"
|
||||||
|
value="{{ old('departure_time',$flight->departure_time) }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
<label>ساعت رسیدن</label>
|
||||||
<label>
|
|
||||||
ساعت رسیدن
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="time"
|
<input type="time"
|
||||||
name="arrival_time"
|
name="arrival_time"
|
||||||
class="form-control">
|
class="form-control"
|
||||||
|
value="{{ old('arrival_time',$flight->arrival_time) }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
@@ -124,21 +104,33 @@
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<select name="type" class="form-control">
|
<select name="type" class="form-control">
|
||||||
<option value="0">داخلی</option>
|
|
||||||
<option value="2">خارجی</option>
|
<option value="0" @selected($flight->type == 0)>
|
||||||
<option value="3">چارتر</option>
|
داخلی
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option value="2" @selected($flight->type == 2)>
|
||||||
|
خارجی
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option value="3" @selected($flight->type == 3)>
|
||||||
|
چارتر
|
||||||
|
</option>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
تاریخ حرکت
|
تاریخ حرکت
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
id="departure_date"
|
id="departure_date"
|
||||||
name="departure_date"
|
name="departure_date"
|
||||||
@@ -147,63 +139,85 @@
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
value="{{ old('departure_date', $flight->departure_date ? verta($flight->departure_date)->format('Y/m/d') : '') }}">
|
value="{{ old('departure_date', $flight->departure_date ? verta($flight->departure_date)->format('Y/m/d') : '') }}">
|
||||||
|
|
||||||
@error('departure_date')
|
|
||||||
<div class="text-danger mt-2">{{ $message }}</div>
|
|
||||||
@enderror
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
کلاس پرواز
|
کلاس پرواز
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
name="flight_class"
|
name="flight_class"
|
||||||
class="form-control">
|
class="form-control"
|
||||||
|
value="{{ old('flight_class',$flight->flight_class) }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
ظرفیت
|
ظرفیت
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
<input type="number"
|
<input type="number"
|
||||||
name="capacity"
|
name="capacity"
|
||||||
class="form-control">
|
min="1"
|
||||||
|
class="form-control"
|
||||||
|
value="{{ old('capacity',$flight->capacity) }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
قیمت
|
قیمت
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
<input type="number"
|
<input type="number"
|
||||||
name="price"
|
name="price"
|
||||||
class="form-control">
|
class="form-control"
|
||||||
|
value="{{ old('price',$flight->price) }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
عکس
|
عکس فعلی
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
@if($flight->image)
|
||||||
|
|
||||||
|
<div class="mb-2">
|
||||||
|
<img src="{{ asset('storage/'.$flight->image) }}"
|
||||||
|
width="120"
|
||||||
|
class="rounded">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
<input type="file"
|
<input type="file"
|
||||||
name="image"
|
name="image"
|
||||||
class="form-control">
|
class="form-control">
|
||||||
@@ -211,27 +225,57 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4 mb-3">
|
<div class="col-md-4 mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
وضعیت
|
وضعیت
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
|
||||||
<select name="status" class="form-control">
|
<select name="status" class="form-control">
|
||||||
<option value="0">پیشنویس</option>
|
|
||||||
<option value="1">فعال</option>
|
|
||||||
<option value="2">غیرفعال</option>
|
<option value="0" @selected($flight->status == 0)>
|
||||||
<option value="3">تمام شده</option>
|
پیشنویس
|
||||||
<option value="4">لغو شده</option>
|
</option>
|
||||||
|
|
||||||
|
|
||||||
|
<option value="1" @selected($flight->status == 1)>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
|
||||||
|
<option value="2" @selected($flight->status == 2)>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
|
||||||
|
<option value="3" @selected($flight->status == 3)>
|
||||||
|
تمام شده
|
||||||
|
</option>
|
||||||
|
|
||||||
|
|
||||||
|
<option value="4" @selected($flight->status == 4)>
|
||||||
|
لغو شده
|
||||||
|
</option>
|
||||||
|
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button class="btn btn-primary">
|
<button class="btn btn-primary">
|
||||||
ذخیره
|
ذخیره تغییرات
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
@@ -242,12 +286,19 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
window.addEventListener('load', function () {
|
window.addEventListener('load', function () {
|
||||||
|
|
||||||
$("#departure_date").persianDatepicker({
|
$("#departure_date").persianDatepicker({
|
||||||
|
|
||||||
format: 'YYYY/MM/DD',
|
format: 'YYYY/MM/DD',
|
||||||
autoClose: true,
|
|
||||||
initialValue: false,
|
autoClose:true,
|
||||||
minDate: new persianDate()
|
|
||||||
|
initialValue:false,
|
||||||
|
|
||||||
|
minDate:new persianDate()
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
<div>
|
|
||||||
<!-- Happiness is not something readymade. It comes from your own actions. - Dalai Lama -->
|
|
||||||
</div>
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<div class="theme-hero-area-bg-wrap">
|
<div class="theme-hero-area-bg-wrap">
|
||||||
|
|||||||
@@ -1,3 +1,235 @@
|
|||||||
|
<style>
|
||||||
|
.flight-image {
|
||||||
|
height: 260px;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-image img {
|
||||||
|
transition: .6s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card:hover .flight-image img {
|
||||||
|
transform: scale(1.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card.border-0.shadow-sm.rounded-4.overflow-hidden {
|
||||||
|
|
||||||
|
border-radius: 24px !important;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
background: #fff;
|
||||||
|
transition: .4s ease;
|
||||||
|
border: 1px solid #f1f1f1 !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card.border-0.shadow-sm.rounded-4.overflow-hidden:hover {
|
||||||
|
|
||||||
|
transform: translateY(-8px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 20px 45px rgba(0,0,0,.12)!important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card form {
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
top:18px;
|
||||||
|
left:18px;
|
||||||
|
z-index:5;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card form button {
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
background:rgba(255,255,255,.9);
|
||||||
|
|
||||||
|
backdrop-filter:blur(8px);
|
||||||
|
|
||||||
|
border:none;
|
||||||
|
|
||||||
|
padding:10px 18px;
|
||||||
|
|
||||||
|
color:#e63946;
|
||||||
|
|
||||||
|
font-weight:600;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 8px 20px rgba(0,0,0,.15);
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card form button:hover {
|
||||||
|
|
||||||
|
background:#e63946;
|
||||||
|
|
||||||
|
color:white;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.flight-badge {
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
right:20px;
|
||||||
|
|
||||||
|
bottom:20px;
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
padding:8px 20px;
|
||||||
|
|
||||||
|
border-radius:50px;
|
||||||
|
|
||||||
|
font-size:14px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 8px 20px rgba(0,0,0,.15);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.flight-image:after {
|
||||||
|
|
||||||
|
content:"";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
inset:0;
|
||||||
|
|
||||||
|
background:
|
||||||
|
linear-gradient(
|
||||||
|
transparent,
|
||||||
|
rgba(0,0,0,.45)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
|
||||||
|
padding:28px !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body h5 {
|
||||||
|
|
||||||
|
font-size:22px;
|
||||||
|
|
||||||
|
font-weight:800 !important;
|
||||||
|
|
||||||
|
color:#222;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.route {
|
||||||
|
|
||||||
|
display:flex;
|
||||||
|
|
||||||
|
justify-content:center;
|
||||||
|
|
||||||
|
align-items:center;
|
||||||
|
|
||||||
|
gap:15px;
|
||||||
|
|
||||||
|
margin:25px 0;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
font-size:16px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route .line {
|
||||||
|
|
||||||
|
width:55px;
|
||||||
|
|
||||||
|
height:2px;
|
||||||
|
|
||||||
|
background:#dbe7ff;
|
||||||
|
|
||||||
|
position:relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.route .line:after {
|
||||||
|
|
||||||
|
content:"✈";
|
||||||
|
|
||||||
|
position:absolute;
|
||||||
|
|
||||||
|
top:50%;
|
||||||
|
left:50%;
|
||||||
|
|
||||||
|
transform:translate(-50%,-50%);
|
||||||
|
|
||||||
|
background:white;
|
||||||
|
|
||||||
|
padding:5px;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body strong {
|
||||||
|
|
||||||
|
font-size:20px;
|
||||||
|
|
||||||
|
color:#0d6efd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body .btn-primary {
|
||||||
|
|
||||||
|
background:linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#0062ff,
|
||||||
|
#00b7ff
|
||||||
|
);
|
||||||
|
|
||||||
|
border:none;
|
||||||
|
|
||||||
|
padding:11px 30px;
|
||||||
|
|
||||||
|
font-weight:700;
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 10px 25px rgba(0,98,255,.3);
|
||||||
|
|
||||||
|
transition:.3s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card-body .btn-primary:hover {
|
||||||
|
|
||||||
|
transform:translateY(-3px);
|
||||||
|
|
||||||
|
box-shadow:
|
||||||
|
0 15px 30px rgba(0,98,255,.4);
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="card border-0 shadow-sm rounded-4 overflow-hidden h-100">
|
<div class="card border-0 shadow-sm rounded-4 overflow-hidden h-100">
|
||||||
<form action="{{ route('users.favorite.store') }}" method="POST">
|
<form action="{{ route('users.favorite.store') }}" method="POST">
|
||||||
@@ -18,11 +250,10 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="flight-image">
|
<div class="flight-image">
|
||||||
|
<img src="{{ $flight->image ? asset('storage/'.$flight->image) : asset('assets/img/placeholder.jpg') }}"
|
||||||
<img src="{{ asset($flight->image) }}"
|
class="w-100 h-100 object-fit-cover"
|
||||||
alt="{{ $flight->airline }}">
|
alt="{{ $flight->airline }}">
|
||||||
|
<span class="flight-badge">
|
||||||
<span class="flight-badge">
|
|
||||||
پرواز
|
پرواز
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,9 @@
|
|||||||
|
|
||||||
<div class="flight-image">
|
<div class="flight-image">
|
||||||
|
|
||||||
<img src="{{ asset($tour->image) }}"
|
<img src="{{ $tour->image ? asset('storage/'.$tour->image) : asset('assets/img/placeholder.jpg') }}"
|
||||||
alt="{{ $tour->title }}">
|
class="w-100 h-100 object-fit-cover"
|
||||||
|
alt="{{ $tour->airline }}">
|
||||||
|
|
||||||
|
|
||||||
<span class="flight-badge">
|
<span class="flight-badge">
|
||||||
|
|||||||
@@ -1,432 +1,14 @@
|
|||||||
<style>
|
<link rel="stylesheet" href="{{ asset('assets/css/show.css') }}">
|
||||||
|
@extends('layouts.app')
|
||||||
.flight-detail-page{
|
@section('content')
|
||||||
padding:80px 0;
|
|
||||||
background:
|
|
||||||
linear-gradient(135deg,#eef5ff,#f9fbff);
|
|
||||||
direction:rtl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* کارت اصلی */
|
|
||||||
.flight-detail-card{
|
|
||||||
|
|
||||||
background:rgba(255,255,255,.85);
|
|
||||||
backdrop-filter:blur(15px);
|
|
||||||
|
|
||||||
border-radius:35px;
|
|
||||||
|
|
||||||
overflow:hidden;
|
|
||||||
|
|
||||||
display:flex;
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 25px 70px rgba(0,0,0,.12);
|
|
||||||
|
|
||||||
transition:.4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-card:hover{
|
|
||||||
|
|
||||||
transform:translateY(-8px);
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 35px 90px rgba(25,118,210,.25);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* تصویر */
|
|
||||||
|
|
||||||
.flight-detail-image{
|
|
||||||
|
|
||||||
width:42%;
|
|
||||||
min-height:400px;
|
|
||||||
|
|
||||||
position:relative;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-image:after{
|
|
||||||
|
|
||||||
content:"";
|
|
||||||
|
|
||||||
position:absolute;
|
|
||||||
|
|
||||||
inset:0;
|
|
||||||
|
|
||||||
background:
|
|
||||||
linear-gradient(
|
|
||||||
180deg,
|
|
||||||
transparent,
|
|
||||||
rgba(0,0,0,.35)
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-image img{
|
|
||||||
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
|
|
||||||
object-fit:cover;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* محتوا */
|
|
||||||
|
|
||||||
.flight-detail-content{
|
|
||||||
|
|
||||||
width:58%;
|
|
||||||
|
|
||||||
padding:55px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-content h1{
|
|
||||||
|
|
||||||
font-size:38px;
|
|
||||||
|
|
||||||
font-weight:900;
|
|
||||||
|
|
||||||
color:#102a43;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* badge */
|
|
||||||
|
|
||||||
.flight-badge-show{
|
|
||||||
|
|
||||||
background:
|
|
||||||
linear-gradient(135deg,#1976d2,#42a5f5);
|
|
||||||
|
|
||||||
color:white;
|
|
||||||
|
|
||||||
padding:10px 30px;
|
|
||||||
|
|
||||||
border-radius:50px;
|
|
||||||
|
|
||||||
font-weight:bold;
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 10px 25px rgba(25,118,210,.35);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* مسیر */
|
|
||||||
|
|
||||||
|
|
||||||
.route-box{
|
|
||||||
|
|
||||||
|
|
||||||
margin:40px 0;
|
|
||||||
|
|
||||||
padding:35px;
|
|
||||||
|
|
||||||
border-radius:25px;
|
|
||||||
|
|
||||||
background:#fff;
|
|
||||||
|
|
||||||
display:flex;
|
|
||||||
|
|
||||||
justify-content:space-around;
|
|
||||||
|
|
||||||
align-items:center;
|
|
||||||
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
inset 0 0 20px rgba(0,0,0,.04);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.route-box small{
|
|
||||||
|
|
||||||
color:#90a4ae;
|
|
||||||
|
|
||||||
font-size:14px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.route-box strong{
|
|
||||||
|
|
||||||
display:block;
|
|
||||||
|
|
||||||
margin-top:8px;
|
|
||||||
|
|
||||||
font-size:28px;
|
|
||||||
|
|
||||||
color:#102a43;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.route-line{
|
|
||||||
|
|
||||||
font-size:45px;
|
|
||||||
|
|
||||||
color:#f4b400;
|
|
||||||
|
|
||||||
animation:fly 2s infinite alternate;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes fly{
|
|
||||||
|
|
||||||
from{
|
|
||||||
transform:translateX(-10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
to{
|
|
||||||
transform:translateX(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* اطلاعات */
|
|
||||||
|
|
||||||
.flight-info-grid{
|
|
||||||
|
|
||||||
|
|
||||||
display:grid;
|
|
||||||
|
|
||||||
grid-template-columns:repeat(2,1fr);
|
|
||||||
|
|
||||||
gap:20px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-info-grid div{
|
|
||||||
|
|
||||||
background:#fff;
|
|
||||||
|
|
||||||
padding:22px;
|
|
||||||
|
|
||||||
border-radius:20px;
|
|
||||||
|
|
||||||
border:1px solid #edf2f7;
|
|
||||||
|
|
||||||
transition:.3s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-info-grid div:hover{
|
|
||||||
|
|
||||||
transform:translateY(-5px);
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 15px 35px rgba(0,0,0,.08);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-info-grid span{
|
|
||||||
|
|
||||||
color:#78909c;
|
|
||||||
|
|
||||||
font-size:14px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-info-grid b,
|
|
||||||
.flight-info-grid strong{
|
|
||||||
|
|
||||||
display:block;
|
|
||||||
|
|
||||||
margin-top:10px;
|
|
||||||
|
|
||||||
color:#102a43;
|
|
||||||
|
|
||||||
font-size:20px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* فرم کامنت */
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments{
|
|
||||||
|
|
||||||
|
|
||||||
margin-top:45px;
|
|
||||||
|
|
||||||
background:#fff;
|
|
||||||
|
|
||||||
padding:35px;
|
|
||||||
|
|
||||||
border-radius:30px;
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 15px 40px rgba(0,0,0,.08);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments h3{
|
|
||||||
|
|
||||||
font-weight:900;
|
|
||||||
|
|
||||||
color:#102a43;
|
|
||||||
|
|
||||||
margin-bottom:25px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments textarea{
|
|
||||||
|
|
||||||
|
|
||||||
border-radius:20px;
|
|
||||||
|
|
||||||
border:2px solid #edf2f7;
|
|
||||||
|
|
||||||
padding:20px;
|
|
||||||
|
|
||||||
resize:none;
|
|
||||||
|
|
||||||
transition:.3s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments textarea:focus{
|
|
||||||
|
|
||||||
border-color:#1976d2;
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 0 0 5px rgba(25,118,210,.12);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments button{
|
|
||||||
|
|
||||||
|
|
||||||
width:100%;
|
|
||||||
|
|
||||||
padding:16px;
|
|
||||||
|
|
||||||
border-radius:20px;
|
|
||||||
|
|
||||||
border:none;
|
|
||||||
|
|
||||||
font-weight:800;
|
|
||||||
|
|
||||||
font-size:18px;
|
|
||||||
|
|
||||||
|
|
||||||
background:
|
|
||||||
linear-gradient(
|
|
||||||
135deg,
|
|
||||||
#1976d2,
|
|
||||||
#42a5f5
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
box-shadow:
|
|
||||||
0 15px 30px rgba(25,118,210,.35);
|
|
||||||
|
|
||||||
|
|
||||||
transition:.3s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.flight-comments button:hover{
|
|
||||||
|
|
||||||
transform:translateY(-4px);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* موبایل */
|
|
||||||
|
|
||||||
@media(max-width:900px){
|
|
||||||
|
|
||||||
.flight-detail-card{
|
|
||||||
|
|
||||||
flex-direction:column;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-image,
|
|
||||||
.flight-detail-content{
|
|
||||||
|
|
||||||
width:100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-image{
|
|
||||||
|
|
||||||
height:300px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-detail-content{
|
|
||||||
|
|
||||||
padding:30px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.flight-info-grid{
|
|
||||||
|
|
||||||
grid-template-columns:1fr;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.route-box{
|
|
||||||
|
|
||||||
flex-direction:column;
|
|
||||||
|
|
||||||
gap:25px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<section class="flight-detail-page">
|
<section class="flight-detail-page">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<div class="flight-detail-card">
|
<div class="flight-detail-card">
|
||||||
|
|
||||||
<div class="flight-detail-image">
|
<div class="flight-detail-image">
|
||||||
<img src="{{ asset($flight->image) }}"
|
<img src="{{ $flight->image ? asset('storage/'.$flight->image) : asset('assets/img/placeholder.jpg') }}"
|
||||||
|
class="w-100 h-100 object-fit-cover"
|
||||||
alt="{{ $flight->airline }}">
|
alt="{{ $flight->airline }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -500,7 +82,6 @@
|
|||||||
<button type="submit" class="btn btn-success">
|
<button type="submit" class="btn btn-success">
|
||||||
رزرو تور
|
رزرو تور
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</form> @else
|
</form> @else
|
||||||
|
|
||||||
<a href="{{ route('auth.login.index') }}" class="btn btn-warning btn-lg px-5">
|
<a href="{{ route('auth.login.index') }}" class="btn btn-warning btn-lg px-5">
|
||||||
@@ -537,23 +118,18 @@
|
|||||||
name="flight_id"
|
name="flight_id"
|
||||||
value="{{ $flight->id }}"
|
value="{{ $flight->id }}"
|
||||||
>
|
>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
|
<label>
|
||||||
<label for="rating">
|
|
||||||
امتیاز
|
امتیاز
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<select name="rating" id="rating" class="form-control">
|
<select name="rating" class="form-control">
|
||||||
|
|
||||||
<option value="5">★★★★★</option>
|
<option value="5">★★★★★</option>
|
||||||
<option value="4">★★★★</option>
|
<option value="4">★★★★</option>
|
||||||
<option value="3">★★★</option>
|
<option value="3">★★★</option>
|
||||||
<option value="2">★★</option>
|
<option value="2">★★</option>
|
||||||
<option value="1">★</option>
|
<option value="1">★</option>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
@@ -622,3 +198,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@endsection
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
<link rel="stylesheet" href="{{asset('assets/css/weather-icons.css')}}"/>
|
<link rel="stylesheet" href="{{asset('assets/css/weather-icons.css')}}"/>
|
||||||
<link rel="stylesheet" href="{{asset('assets/css/bootstrap.css')}}"/>
|
<link rel="stylesheet" href="{{asset('assets/css/bootstrap.css')}}"/>
|
||||||
<link rel="stylesheet" href="{{ asset('assets/css/styles.css?v=2') }}">
|
<link rel="stylesheet" href="{{ asset('assets/css/styles.css?v=2') }}">
|
||||||
|
<link rel="stylesheet" href="{{ asset('assets/css/flight_tour.css') }}">
|
||||||
|
<link rel="stylesheet" href="{{ asset('assets/css/header.css') }}">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -1,230 +1,3 @@
|
|||||||
<style>
|
|
||||||
|
|
||||||
.main-header {
|
|
||||||
|
|
||||||
background: #09203f;
|
|
||||||
|
|
||||||
box-shadow: 0 8px 30px rgba(0,0,0,.2);
|
|
||||||
|
|
||||||
padding: 15px 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.header-inner {
|
|
||||||
|
|
||||||
display:flex;
|
|
||||||
|
|
||||||
align-items:center;
|
|
||||||
|
|
||||||
justify-content:space-between;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
|
|
||||||
color:white;
|
|
||||||
|
|
||||||
font-size:28px;
|
|
||||||
|
|
||||||
font-weight:800;
|
|
||||||
|
|
||||||
text-decoration:none;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
|
|
||||||
display:flex;
|
|
||||||
|
|
||||||
gap:30px;
|
|
||||||
|
|
||||||
list-style:none;
|
|
||||||
|
|
||||||
margin:0;
|
|
||||||
|
|
||||||
padding:0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.menu li a {
|
|
||||||
|
|
||||||
color:white;
|
|
||||||
|
|
||||||
text-decoration:none;
|
|
||||||
|
|
||||||
font-weight:600;
|
|
||||||
|
|
||||||
transition:.3s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.menu li a:hover {
|
|
||||||
|
|
||||||
color:#ffc107;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.header-actions {
|
|
||||||
|
|
||||||
display:flex;
|
|
||||||
|
|
||||||
gap:10px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.login-btn {
|
|
||||||
|
|
||||||
color:white;
|
|
||||||
|
|
||||||
border:1px solid white;
|
|
||||||
|
|
||||||
padding:10px 20px;
|
|
||||||
|
|
||||||
border-radius:30px;
|
|
||||||
|
|
||||||
text-decoration:none;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.register-btn {
|
|
||||||
|
|
||||||
background:#ffc107;
|
|
||||||
|
|
||||||
color:#09203f;
|
|
||||||
|
|
||||||
padding:10px 20px;
|
|
||||||
|
|
||||||
border-radius:30px;
|
|
||||||
|
|
||||||
text-decoration:none;
|
|
||||||
|
|
||||||
font-weight:700;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.user-btn {
|
|
||||||
|
|
||||||
color:white;
|
|
||||||
|
|
||||||
text-decoration:none;
|
|
||||||
|
|
||||||
}
|
|
||||||
.user-dropdown {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.user-btn {
|
|
||||||
|
|
||||||
background: transparent;
|
|
||||||
|
|
||||||
border: none;
|
|
||||||
|
|
||||||
color: white;
|
|
||||||
|
|
||||||
font-size: 15px;
|
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
padding: 10px 15px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.user-menu {
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
top: 45px;
|
|
||||||
|
|
||||||
right: 0;
|
|
||||||
|
|
||||||
width: 200px;
|
|
||||||
|
|
||||||
background: white;
|
|
||||||
|
|
||||||
border-radius: 15px;
|
|
||||||
|
|
||||||
padding: 10px 0;
|
|
||||||
|
|
||||||
box-shadow: 0 15px 40px rgba(0,0,0,.15);
|
|
||||||
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
visibility: hidden;
|
|
||||||
|
|
||||||
transform: translateY(10px);
|
|
||||||
|
|
||||||
transition: .3s;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.user-dropdown:hover .user-menu {
|
|
||||||
|
|
||||||
opacity: 1;
|
|
||||||
|
|
||||||
visibility: visible;
|
|
||||||
|
|
||||||
transform: translateY(0);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.user-menu a,
|
|
||||||
.user-menu button {
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
padding: 12px 20px;
|
|
||||||
|
|
||||||
color: #263238;
|
|
||||||
|
|
||||||
background: none;
|
|
||||||
|
|
||||||
border: none;
|
|
||||||
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
font-size: 14px;
|
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.user-menu a:hover,
|
|
||||||
.user-menu button:hover {
|
|
||||||
|
|
||||||
background: #f1f5f9;
|
|
||||||
|
|
||||||
color: #1976d2;
|
|
||||||
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<nav class="main-header">
|
<nav class="main-header">
|
||||||
|
|
||||||
<div class="container header-inner">
|
<div class="container header-inner">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<div class="flight-hero-content">
|
<div class="flight-hero-content">
|
||||||
|
|
||||||
<span class="flight-badge">
|
<span>
|
||||||
سفر بعدی شما از اینجا شروع میشود
|
سفر بعدی شما از اینجا شروع میشود
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
|
<link rel="stylesheet" href="{{ asset('assets/css/show.css') }}">
|
||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<section class="container mt-5">
|
<section class="container mt-5">
|
||||||
|
|
||||||
<div class="card border-0 shadow rounded-4 overflow-hidden">
|
<div class="card border-0 shadow rounded-4 overflow-hidden mb-5">
|
||||||
|
|
||||||
|
|
||||||
<div class="position-relative">
|
|
||||||
|
|
||||||
<img src="{{ asset($tour->image) }}"
|
|
||||||
alt="{{ $tour->title }}">
|
|
||||||
|
|
||||||
|
<div class="tour-detail-image">
|
||||||
|
|
||||||
|
<img src="{{ $tour->image ? asset('storage/'.$tour->image) : asset('assets/img/placeholder.jpg') }}"
|
||||||
|
class="w-100 h-100 object-fit-cover"
|
||||||
|
alt="{{ $tour->airline }}">
|
||||||
<span class="badge bg-primary position-absolute top-0 end-0 m-4">
|
<span class="badge bg-primary position-absolute top-0 end-0 m-4">
|
||||||
تور
|
تور
|
||||||
</span>
|
</span>
|
||||||
@@ -20,206 +18,220 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="card-body p-4">
|
<div class="card-body p-4">
|
||||||
|
|
||||||
|
<h1 class="fw-bold mb-3">
|
||||||
<h1 class="fw-bold mb-4">
|
|
||||||
{{ $tour->title }}
|
{{ $tour->title }}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-muted">
|
<p class="text-muted">
|
||||||
{{ $tour->summary }}
|
{{ $tour->summary }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row g-4">
|
<div class="row g-4">
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
|
<div class="tour-info-box">
|
||||||
<span class="text-secondary">
|
<span>نوع سفر</span>
|
||||||
نوع سفر
|
<h5>
|
||||||
</span>
|
{{ $tour->travelType?->name ?? '-' }}
|
||||||
|
</h5>
|
||||||
<h5>
|
</div>
|
||||||
{{ $tour->travelType?->name ?? '-' }}
|
|
||||||
</h5>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
|
<div class="tour-info-box">
|
||||||
<span class="text-secondary">
|
<span>تاریخ حرکت</span>
|
||||||
تاریخ حرکت
|
<h5>
|
||||||
</span>
|
{{ \Carbon\Carbon::parse($tour->departure_date)->format('Y/m/d') }}
|
||||||
|
</h5>
|
||||||
<h5>
|
</div>
|
||||||
{{ \Carbon\Carbon::parse($tour->departure_date)->format('Y/m/d') }}
|
|
||||||
</h5>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
|
<div class="tour-info-box">
|
||||||
<span class="text-secondary">
|
<span>قیمت</span>
|
||||||
قیمت
|
<h5 class="tour-price">
|
||||||
</span>
|
{{ number_format($tour->price) }}
|
||||||
|
تومان
|
||||||
<h5>
|
</h5>
|
||||||
{{ number_format($tour->price) }}
|
</div>
|
||||||
تومان
|
|
||||||
</h5>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h4 class="fw-bold">
|
<h4 class="fw-bold">
|
||||||
توضیحات تور
|
توضیحات تور
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
|
|
||||||
<p class="mt-3">
|
<p>
|
||||||
{{ $tour->description }}
|
{{ $tour->description }}
|
||||||
</p>
|
</p>
|
||||||
<div class="mt-4">
|
|
||||||
|
|
||||||
|
<div class="reserve-area mt-5">
|
||||||
|
|
||||||
@auth
|
@auth
|
||||||
<form action="{{ route('users.reservations.store') }}" method="POST">
|
|
||||||
|
<form action="{{ route('users.reservations.store') }}"
|
||||||
|
method="POST"
|
||||||
|
class="reservation-form">
|
||||||
|
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<input type="hidden" name="reservable_id" value="{{ $tour->id }}">
|
<input type="hidden"
|
||||||
|
name="reservable_id"
|
||||||
|
value="{{ $tour->id }}">
|
||||||
|
|
||||||
<input type="hidden" name="reservable_type" value="App\Models\Tour">
|
<input type="hidden"
|
||||||
|
name="reservable_type"
|
||||||
|
value="App\Models\Tour">
|
||||||
|
|
||||||
<input type="hidden" name="price" value="{{ $tour->price }}">
|
<input type="hidden"
|
||||||
|
name="price"
|
||||||
|
value="{{ $tour->price }}">
|
||||||
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-success">
|
<button type="submit"
|
||||||
رزرو تور
|
class="btn btn-success rounded-pill px-5 py-3">
|
||||||
|
رزرو تور
|
||||||
|
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</form> @else
|
</form>
|
||||||
|
|
||||||
|
@else
|
||||||
|
|
||||||
|
<a href="{{ route('auth.login.index') }}"
|
||||||
|
class="btn btn-warning rounded-pill px-5 py-3">
|
||||||
|
|
||||||
<a href="{{ route('auth.login.index') }}" class="btn btn-warning btn-lg px-5">
|
|
||||||
برای رزرو وارد شوید
|
برای رزرو وارد شوید
|
||||||
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@endauth
|
@endauth
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<span>تعداد مشاهده</span>
|
|
||||||
|
|
||||||
<strong>
|
|
||||||
{{ $tour->views ?? 0 }}
|
|
||||||
بازدید
|
|
||||||
</strong>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<form action="{{ route('comments.store') }}" method="POST">
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="comment-box mb-5">
|
||||||
|
|
||||||
|
<h3 class="fw-bold mb-4">
|
||||||
|
ثبت نظر درباره تور
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
|
||||||
|
<form action="{{ route('comments.store') }}"
|
||||||
|
method="POST">
|
||||||
|
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<input
|
<input type="hidden"
|
||||||
type="hidden"
|
name="tour_id"
|
||||||
name="tour_id"
|
value="{{ $tour->id }}">
|
||||||
value="{{ $tour->id }}"
|
|
||||||
>
|
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
امتیاز
|
امتیاز
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<select name="rating" class="form-control">
|
<select name="rating"
|
||||||
|
class="form-select">
|
||||||
|
|
||||||
<option value="5">★★★★★</option>
|
<option value="5">★★★★★</option>
|
||||||
<option value="4">★★★★</option>
|
<option value="4">★★★★</option>
|
||||||
<option value="3">★★★</option>
|
<option value="3">★★★</option>
|
||||||
<option value="2">★★</option>
|
<option value="2">★★</option>
|
||||||
<option value="1">★</option>
|
<option value="1">★</option>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label>
|
|
||||||
نظر شما
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<textarea
|
<textarea name="comment"
|
||||||
name="comment"
|
rows="5"
|
||||||
rows="5"
|
class="form-control rounded-4"
|
||||||
class="form-control"
|
placeholder="نظر خود را بنویسید..."></textarea>
|
||||||
></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="btn btn-primary">
|
|
||||||
|
<button class="btn btn-primary rounded-pill px-5">
|
||||||
ثبت نظر
|
ثبت نظر
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
<div class="comments-list mt-5">
|
|
||||||
|
|
||||||
<h3 class="mb-4">
|
|
||||||
نظرات کاربران
|
|
||||||
</h3>
|
|
||||||
|
|
||||||
@forelse($comments as $comment)
|
|
||||||
|
|
||||||
<div class="card p-4 mb-3 shadow-sm">
|
|
||||||
|
|
||||||
<div class="d-flex justify-content-between">
|
|
||||||
|
|
||||||
<strong>
|
|
||||||
{{ $comment->user?->name ?? 'کاربر مهمان' }}
|
|
||||||
</strong>
|
|
||||||
|
|
||||||
<small>
|
|
||||||
{{ $comment->created_at->diffForHumans() }}
|
|
||||||
</small>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="mt-3 mb-0">
|
|
||||||
{{ $comment->comment }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@empty
|
|
||||||
|
|
||||||
<div class="alert alert-secondary">
|
|
||||||
هنوز نظری ثبت نشده است.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@endforelse
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="comment-box">
|
||||||
|
|
||||||
|
|
||||||
|
<h3 class="fw-bold mb-4">
|
||||||
|
نظرات کاربران
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
|
||||||
|
@forelse($comments as $comment)
|
||||||
|
|
||||||
|
<div class="comment-item">
|
||||||
|
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
|
||||||
|
<strong>
|
||||||
|
{{ $comment->user?->name ?? 'کاربر مهمان' }}
|
||||||
|
</strong>
|
||||||
|
|
||||||
|
|
||||||
|
<small>
|
||||||
|
{{ $comment->created_at->diffForHumans() }}
|
||||||
|
</small>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="mt-3 mb-0">
|
||||||
|
{{ $comment->comment }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@empty
|
||||||
|
|
||||||
|
<div class="alert alert-secondary rounded-4">
|
||||||
|
هنوز نظری ثبت نشده است.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endforelse
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user