@page "/profile"
@using Indotalent.Features.Profile.Session
@using Microsoft.AspNetCore.Authorization
@using Indotalent.Infrastructure.Authorization.Identity
@attribute [Authorize(Roles = $"{ApplicationRoles.Admin},{ApplicationRoles.Member}")]
@using Indotalent.Features.Profile.Avatar.Components
@using Indotalent.Features.Profile.Password.Components
@using Indotalent.Features.Profile.PersonalInformation
@using Indotalent.Features.Profile.Password
@using Indotalent.Features.Profile.Avatar
@using Indotalent.Features.Profile.PersonalInformation.Components
@using MudBlazor
@inject NavigationManager NavigationManager

<style>
    .clean-white-tabs .mud-tabs-toolbar {
        background-color: white !important;
        border-bottom: 2px solid #DCEBFA;
        border-radius: 4px !important;
    }

    .clean-white-tabs .mud-tab {
        color: #94a3b8 !important;
        text-transform: none;
        font-weight: 500;
        min-width: 160px;
        border-radius: 4px !important;
    }

    .clean-white-tabs .mud-tab-active {
        color: var(--mud-palette-primary) !important;
        font-weight: 800;
    }

    .clean-white-tabs .mud-tabs-slider {
        background-color: var(--mud-palette-primary) !important;
        height: 3px !important;
        bottom: 0;
    }
</style>

<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="mt-2 mb-8">
    <div class="clean-white-tabs">
        <MudTabs Elevation="0"
                 ActivePanelIndex="@_activeTabIndex"
                 ActivePanelIndexChanged="OnTabChanged"
                 ApplyEffectsToContainer="true"
                 TabPanelsClass="pt-4">

            <MudTabPanel Text="Personal Info" Icon="@Icons.Material.Outlined.Person">
                <PersonalInformationPage />
            </MudTabPanel>

            <MudTabPanel Text="Password" Icon="@Icons.Material.Outlined.Lock">
                <PasswordPage />
            </MudTabPanel>

            <MudTabPanel Text="Avatar" Icon="@Icons.Material.Outlined.AccountCircle">
                <AvatarPage />
            </MudTabPanel>

            <MudTabPanel Text="Session" Icon="@Icons.Material.Outlined.VpnKey">
                <SessionPage />
            </MudTabPanel>

        </MudTabs>
    </div>
</MudContainer>

@code {
    private int _activeTabIndex = 0;

    protected override void OnInitialized()
    {
        var uri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
        if (Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query).TryGetValue("tab", out var tabValue))
        {
            _activeTabIndex = tabValue.ToString().ToLower() switch
            {
                "personal" => 0,
                "password" => 1,
                "avatar" => 2,
                "session" => 3,
                _ => 0
            };
        }
    }

    private void OnTabChanged(int index)
    {
        _activeTabIndex = index;
        string tabName = index switch
        {
            0 => "personal",
            1 => "password",
            2 => "avatar",
            3 => "session",
            _ => "personal"
        };

        NavigationManager.NavigateTo($"/profile?tab={tabName}", replace: false);
    }
}