diff --git a/app/Http/Controllers/ProfileRedirectController.php b/app/Http/Controllers/ProfileRedirectController.php new file mode 100644 index 0000000..8f5c310 --- /dev/null +++ b/app/Http/Controllers/ProfileRedirectController.php @@ -0,0 +1,20 @@ +goToProfile(); + } +} diff --git a/app/Livewire/Home/Index.php b/app/Livewire/Home/Index.php index f24edd4..b08664a 100644 --- a/app/Livewire/Home/Index.php +++ b/app/Livewire/Home/Index.php @@ -10,7 +10,6 @@ use App\Models\PerfumeFeature; use App\Models\Testimonial; use Illuminate\Contracts\View\View; -use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Storage; use Livewire\Attributes\Layout; use Livewire\Component; @@ -20,6 +19,8 @@ ])] class Index extends Component { + public array $bestSellingPerfumes = []; + public array $brands = []; public array $perfumeFeatures = []; @@ -36,6 +37,23 @@ class Index extends Component public function mount(): void { + $this->bestSellingPerfumes = Perfume::withSum(['items' => function ($query) { + $query->whereHas('order', function ($q) { + $q->paid(); + }); + }], 'quantity') + ->orderByDesc('items_sum_quantity') + ->take(2) + ->get() + ->map(function (Perfume $perfume) { + $perfume->image = $perfume->getFirstMediaUrl('image') ? Storage::url($perfume->getFirstMediaUrl('image')) : asset('assets/images/logo.png'); + $perfume->concentration_label = $perfume->concentration->label(); + + return $perfume; + }) + ->filter(fn (Perfume $perfume) => $perfume->items_sum_quantity > 0) + ->toArray(); + $this->brands = Brand::orderBy('sort_order') ->get() ->map(function (Brand $brand) { @@ -45,6 +63,14 @@ public function mount(): void }) ->toArray(); + $this->whyChooseUs = ChooseUs::orderBy('sort_order') + ->get() + ->map(fn (ChooseUs $chooseUs) => [ + 'name' => $chooseUs->name, + 'description' => $chooseUs->description, + ]) + ->toArray(); + $this->perfumeFeatures = PerfumeFeature::orderBy('sort_order') ->get() ->map(fn (PerfumeFeature $perfumeFeature) => [ @@ -61,14 +87,6 @@ public function mount(): void ]) ->toArray(); - $this->whyChooseUs = ChooseUs::orderBy('sort_order') - ->get() - ->map(fn (ChooseUs $chooseUs) => [ - 'name' => $chooseUs->name, - 'description' => $chooseUs->description, - ]) - ->toArray(); - $this->totalMembersCount = Customer::count(); $this->latestMembers = Customer::whereNotNull('user_id') @@ -82,23 +100,6 @@ public function mount(): void ->take(5) ->get() ->toArray(); - - $this->bestSellingPerfumes = Perfume::withSum(['items' => function ($query) { - $query->whereHas('order', function ($q) { - $q->paid(); - }); - }], 'quantity') - ->orderByDesc('items_sum_quantity') - ->take(2) - ->get() - ->map(function (Perfume $perfume) { - $perfume->image = $perfume->getFirstMediaUrl('image') ? Storage::url($perfume->getFirstMediaUrl('image')) : asset('assets/images/logo.png'); - $perfume->concentration_label = $perfume->concentration->label(); - - return $perfume; - }) - ->filter(fn (Perfume $perfume) => $perfume->items_sum_quantity > 0) - ->toArray(); } public function render(): View @@ -107,16 +108,4 @@ public function render(): View 'pageTitle' => 'Beranda', ]); } - - public function goToProduct(): RedirectResponse - { - return redirect('/product'); - } - - public function goToVoucher(): RedirectResponse - { - return redirect('/voucher'); - } - - public $bestSellingPerfumes = []; } diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index 6338073..f9366c1 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -293,37 +293,31 @@ public function boot(): void $header = [ [ 'title' => 'Beranda', - 'type' => 'link', 'route' => 'homepage', 'match' => 'homepage', ], [ 'title' => 'Outlet', - 'type' => 'link', 'route' => 'outlet', 'match' => 'outlet', ], [ 'title' => 'Produk', - 'type' => 'link', 'route' => 'product.index', 'match' => 'product.*', ], [ 'title' => 'Voucher', - 'type' => 'link', 'route' => 'voucher', 'match' => 'voucher', ], [ 'title' => 'Artikel', - 'type' => 'link', 'route' => 'article.index', 'match' => 'article.*', ], [ 'title' => 'FAQ', - 'type' => 'link', 'route' => 'faq', 'match' => 'faq', ], diff --git a/app/Traits/Components/WithRoleRedirect.php b/app/Traits/Components/WithRoleRedirect.php new file mode 100644 index 0000000..3723269 --- /dev/null +++ b/app/Traits/Components/WithRoleRedirect.php @@ -0,0 +1,32 @@ +check()) { + return redirect('/login'); + } + + $user = auth()->user(); + $roles = $user->roles->pluck('name')->toArray(); + + if (array_intersect($roles, ['Developer', 'Owner', 'Leader', 'Admin'])) { + return redirect('/studio/dashboard/overview'); + } + + if (in_array('Partner', $roles, true)) { + return redirect('/partner/overview'); + } + + if (in_array('Customer', $roles, true)) { + return redirect('/member/overview'); + } + + return redirect('/login'); + } +} diff --git a/resources/views/components/sections/ui/home/_header.blade.php b/resources/views/components/sections/ui/home/_header.blade.php index 2285e46..3b05f3f 100644 --- a/resources/views/components/sections/ui/home/_header.blade.php +++ b/resources/views/components/sections/ui/home/_header.blade.php @@ -28,43 +28,17 @@ class="w-10 h-8 lg:w-16 lg:h-12 transition-all duration-200"> class="hidden lg:flex items-center gap-6 font-medium px-8 py-3 rounded-full transition-all duration-200 border text-home-foreground" aria-label="Main Navigation"> @foreach ($header as $item) - @if ($item['type'] === 'link') - - {{ $item['title'] }} - - @endif - - @if ($item['type'] === 'dropdown') -
- - - -
- @endif + + {{ $item['title'] }} + @endforeach
- + --}} - + @guest + - + + @endguest + + @auth + +
+ + + +
+
+ @endauth