@using Common.Dtos.Exper
@using HushianWebApp.Service
@using HushianWebApp.Services
@using Common.Validation
@inject UserService userService;

<div class="row" style="height: fit-content; padding: 1rem;">


    <div class="col-md-12">

        <input dir="ltr" style="text-align:center;margin-bottom:10px" @bind-value="@model.FullName" type="text" class="form-control" placeholder="نام و نام خانوادگی" />
    </div>
    <div class="col-md-12">

        <input dir="ltr" style="text-align:center;margin-bottom:10px" @bind-value="@model.Password" type="password" class="form-control" placeholder="کلمه عبور" />
    </div>
    <div class="col-md-12">

        <input dir="ltr" style="text-align:center;margin-bottom:10px" @bind-value="@RePassword" type="password" class="form-control" placeholder="تکرار کلمه عبور" />
    </div>
    <Button Loading=loading LoadingText="در حال ذخیره اطلاعات..." Color="ButtonColor.Warning" @onclick="NewItem"> جدید </Button>


</div>


@code {
    [Inject] protected ToastService ToastService { get; set; } = default!;
    public ADD_ExperDto model { get; set; } = new();
    public string RePassword { get; set; }
    [Parameter] public EventCallback OnMultipleOfThree { get; set; }
    public bool loading { get; set; } = false;
}
@functions {

    async Task<bool> Validation()
    {
        if (string.IsNullOrEmpty(model.FullName))
        {
            ToastService.Notify(new(ToastType.Danger, $"نام و نام خانوادگی را مشخص کنید"));
            return false;
        }
        if (!model.FullName.IsOnlyPersianLetters())
        {
            ToastService.Notify(new(ToastType.Danger, $"نام و نام خانوادگی را به صورت فارسی مشخص کنید"));
            return false;
        }
        if (model.Password!=RePassword)
        {
            ToastService.Notify(new(ToastType.Danger, $"کلمه عبور و تکرار آن مشابه نیستند"));
            return false;
        }
        List<string> errors = new();
        if (!model.Password.CheckLawPassword(ref errors))
        {
            ToastService.Notify(new(ToastType.Danger, errors.First()));
            return false;
        }
        return true;
    }
    async Task NewItem()
    {
        if (await Validation())
        {
            loading = true;
            if (await userService.AddExper(model))
            {
                loading = false;
                await OnMultipleOfThree.InvokeAsync();
            }
            loading = false;
        }
    }
    protected override async Task OnParametersSetAsync()
    {
        model = new();
        await base.OnParametersSetAsync();
    }
    // private async Task OnFileChange(InputFileChangeEventArgs e)
    // {
    //     var file = e.File;
    //     using (var memoryStream = new MemoryStream())
    //     {
    //         await file.OpenReadStream().CopyToAsync(memoryStream);
    //         model.img = memoryStream.ToArray();
    //     }
    // }
    // private string GetImageSource()
    // {
    //     if (model.img != null)
    //     {
    //         return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}";
    //     }
    //     return string.Empty;
    // }
}