feat:complete editprofile for dashboard
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Account;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\EditProfilePostRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class EditProfileController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
return view('account.setting', compact('user'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function post(EditProfilePostRequest $request)
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
$inputs = $request->only([
|
||||
'first_name',
|
||||
'last_name',
|
||||
'mobile',
|
||||
'email',
|
||||
'province_id',
|
||||
'city_id',
|
||||
]);
|
||||
|
||||
if ($request->filled('new_password')) {
|
||||
|
||||
$inputs['password'] = Hash::make(
|
||||
$request->input('new_password')
|
||||
);
|
||||
}
|
||||
|
||||
$user->update($inputs);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', 'پروفایل با موفقیت بروزرسانی شد.');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class EditProfilePostRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'first_name' => [
|
||||
'required',
|
||||
'persian_alpha',
|
||||
'min:2',
|
||||
'max:100',
|
||||
],
|
||||
|
||||
'last_name' => [
|
||||
'required',
|
||||
'persian_alpha',
|
||||
'min:3',
|
||||
'max:100',
|
||||
],
|
||||
|
||||
'mobile' => [
|
||||
'required',
|
||||
'ir_mobile:zero',
|
||||
Rule::unique('users', 'mobile')
|
||||
->ignore(auth()->id()),
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'required',
|
||||
'email',
|
||||
'max:150',
|
||||
Rule::unique('users', 'email')
|
||||
->ignore(auth()->id()),
|
||||
],
|
||||
|
||||
'current_password' => [
|
||||
'nullable',
|
||||
'current_password',
|
||||
],
|
||||
|
||||
'new_password' => [
|
||||
'nullable',
|
||||
'string',
|
||||
'min:6',
|
||||
'max:255',
|
||||
'confirmed',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<main class="main">
|
||||
|
||||
@include('show-layouts.breadcrumb', [
|
||||
'title' => 'لیست تورها',
|
||||
])
|
||||
<div class="tour-area py-120">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="booking-sort">
|
||||
<h5>
|
||||
{{ $tours->total() }}
|
||||
تور پیدا شد
|
||||
</h5>
|
||||
<form method="GET" action="{{ route('tours.index') }}"
|
||||
class="col-md-3 booking-sort-box">
|
||||
<select class="select" name="sort" onchange="this.form.submit()">
|
||||
<option value="newest" @selected(request('sort', 'newest') === 'newest')>مرتب
|
||||
سازی پیشفرض
|
||||
</option>
|
||||
<option value="most_viewed" @selected(request('sort') === 'most_viewed')>بر اساس
|
||||
محبوبیت
|
||||
</option>
|
||||
<option value="cheapest" @selected(request('sort') === 'cheapest')>بر اساس پایین
|
||||
ترین قیمت
|
||||
</option>
|
||||
<option value="expensive" @selected(request('sort') === 'expensive')>بر اساس
|
||||
بالاترین قیمت
|
||||
</option>
|
||||
</select>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row align-items-center">
|
||||
@forelse($tours as $tour)
|
||||
|
||||
@include('components.tour', [
|
||||
'tour' => $tour
|
||||
])
|
||||
|
||||
@empty
|
||||
<div class="col-12 text-center">
|
||||
|
||||
<p>
|
||||
در حال حاضر هیچ توری ثبت نشده است.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
@endforelse
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-10 w-full">
|
||||
|
||||
{{ $tours->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,222 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<main class="main">
|
||||
|
||||
@include('show-layouts.breadcrumb', [
|
||||
'title' => 'جزئیات تور',
|
||||
'current' => $tour->title,
|
||||
])
|
||||
|
||||
<div class="hotel-single py-120">
|
||||
<div class="container">
|
||||
<div class="listing-wrapper">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-8">
|
||||
<div class="listing-content">
|
||||
|
||||
|
||||
<div class="listing-slider owl-carousel owl-theme" dir="ltr">
|
||||
<img src="{{asset('assets/img/flight/01.jpg')}}" >
|
||||
</div>
|
||||
|
||||
<div class="listing-header">
|
||||
<div class="listing-header-info">
|
||||
|
||||
<h4 class="listing-title">
|
||||
{{ $tour->title }}
|
||||
</h4>
|
||||
|
||||
<p class="listing-stop">
|
||||
<i class="far fa-location-dot"></i>
|
||||
{{ $tour->origin }}
|
||||
<i class="far fa-arrow-left mx-2"></i>
|
||||
{{ $tour->destination }}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-item listing-flight">
|
||||
|
||||
<div class="flight-booking-time">
|
||||
|
||||
<div class="start-time">
|
||||
|
||||
<div class="start-time-icon">
|
||||
<i class="fal fa-location-dot"></i>
|
||||
</div>
|
||||
|
||||
<div class="start-time-info">
|
||||
<h6 class="start-time-text">
|
||||
مبدا
|
||||
</h6>
|
||||
|
||||
<span class="flight-destination">
|
||||
{{ $tour->origin }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flight-stop">
|
||||
<div class="flight-stop-arrow"></div>
|
||||
</div>
|
||||
|
||||
<div class="end-time">
|
||||
|
||||
<div class="start-time-icon">
|
||||
<i class="fal fa-location-dot"></i>
|
||||
</div>
|
||||
|
||||
<div class="start-time-info">
|
||||
<h6 class="end-time-text">
|
||||
مقصد
|
||||
</h6>
|
||||
|
||||
<span class="flight-destination">
|
||||
{{ $tour->destination }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="listing-item pt-5">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-clock"></i>
|
||||
</div>
|
||||
|
||||
<div class="listing-feature-content">
|
||||
<h6>مدت تور</h6>
|
||||
|
||||
<span>
|
||||
{{ $tour->duration }} روز
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-money-bill"></i>
|
||||
</div>
|
||||
|
||||
<div class="listing-feature-content">
|
||||
<h6>قیمت</h6>
|
||||
|
||||
<span>
|
||||
{{ number_format($tour->price) }} تومان
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-eye"></i>
|
||||
</div>
|
||||
|
||||
<div class="listing-feature-content">
|
||||
<h6>بازدید</h6>
|
||||
|
||||
<span>
|
||||
{{ number_format($tour->views) }} بازدید
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-calendar-days"></i>
|
||||
</div>
|
||||
|
||||
<div class="listing-feature-content">
|
||||
<h6>تاریخ ثبت</h6>
|
||||
|
||||
<span>
|
||||
{{ $tour->created_at->toJalali()->format('Y/m/d') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@if($tour->summary)
|
||||
|
||||
<div class="listing-item">
|
||||
|
||||
<h4 class="mb-3">
|
||||
درباره این تور
|
||||
</h4>
|
||||
<p>
|
||||
{{ $tour->summary }}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
@if($tour->description)
|
||||
|
||||
<div class="listing-item">
|
||||
|
||||
<h4 class="mb-3">
|
||||
توضیحات تور
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
{{ $tour->description }}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
@include('show-layouts.reviews', [
|
||||
'comments' => $tour->comments,
|
||||
'item' => $tour,
|
||||
'type' => 'tour'
|
||||
])
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('show-layouts.sidebar', [
|
||||
'item' => $tour,
|
||||
'type' => 'tour'
|
||||
])
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
@endsection
|
||||
Reference in New Issue
Block a user