@using Front.Services
@using Shared.DTOs
@inject HttpClientController hc;
<form>
    @* alert *@
    <div class="row">
        <Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
            <Icon Name="@alertIconName" class="me-2"></Icon>
            @alertMessage
        </Alert>

    </div>
    <div class="row g-3">
        <div class="form-group col-md-6">
            <label class="col-sm-4 col-form-label" style="color:red" for="inputFullName">نام کامل</label>
            <InputText @bind-Value="Cus.FullName" type="text" class="form-control" id="inputFullName" placeholder="نام کامل" />
        </div>
        <div class="form-group col-md-6">
            <label class="col-sm-4 col-form-label" style="color:red" for="inputcustomertype">نوع مشتری</label>
            <select @bind="ItemSearchCustomertype" class="form-control" aria-label="Default select example" id="inputcustomertype">
                <option value="0" style="color: #b5b5b5" selected>انتخاب کنید...</option>
                <option value="1">حقیقی</option>
                <option value="2">حقوقی</option>
                <option value="3">مشارکت مدنی</option>
                <option value="4">اتباع غیر ایرانی</option>
            </select>
        </div>
    </div>

    <div class="row g-3">
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">تلفن</label>
            <InputText @bind-Value="Cus.Phone" type="text" class="form-control" id="inputPhone" placeholder="تلفن" />
        </div>
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">آدرس</label>
            <InputText @bind-Value="Cus.Address" type="text" class="form-control" id="inputAddress" placeholder="آدرس" />
        </div>
    </div>
    <div class="row g-3">
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">پست الکترونیک</label>
            <InputText @bind-Value="Cus.Email" type="email" class="form-control" id="inputEmail" placeholder="پست الکترونیک" />
        </div>
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">کد پستی</label>
            <InputText @bind-Value="Cus.ZipCode" type="text" class="form-control" id="inputZipCode" placeholder="کد پستی" />
        </div>
    </div>
    <div class="row g-3">
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">کد اقتصادی</label>
            <InputText @bind-Value="Cus.EconomicCode" type="text" class="form-control" id="inputEconomicCode" placeholder="کد اقتصادی" />
        </div>
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">کد ملی</label>
            <InputText @bind-Value="Cus.MeliCode" type="text" class="form-control" id="inputMeliCode" placeholder="کدملی" />
        </div>
    </div>

    <div class="row g-3">
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">کد شعبه</label>
            <InputText @bind-Value="Cus.BranchID" type="text" class="form-control" id="inputBranchID" placeholder="کد شعبه" />
        </div>
        <div class="col-md-6">
            <label class="col-sm-4 col-form-label">شماره گذرنامه</label>
            <InputText @bind-Value="Cus.PassportNumber" type="text" class="form-control" id="inputPassportNumber" placeholder="شماره گذرنامه" />
        </div>
    </div>

    <div class="row g-3">
        <div class="col-md-12">
            <label class="col-sm-4 col-form-label">توضیحات</label>
            <InputTextArea @bind-Value="Cus.Info" class="form-control" id="inputMeliInfo" placeholder="توضیحات" rows="3"></InputTextArea>
        </div>


    </div>

</form>


@if (Cus.ID == 0)
{
    <Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAdd" Type="ButtonType.Button">
        جدید
    </Button>
}
else
{
    <Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
        ثبت تغییرات
    </Button>
    <Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickDelete" Type="ButtonType.Button">
        حذف
    </Button>
}


@code {
    // alert
    AlertColor alertColor = AlertColor.Primary;
    IconName alertIconName = IconName.CheckCircleFill;
    bool Hidealert = true;
    string alertMessage = "";
    [Parameter] public RCustomer Cus { get; set; }
    public int? ItemSearchCustomertype { get; set; }
    [Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }

    public ActionInResultComponent result { get; set; }
    protected override Task OnParametersSetAsync()
    {
        if (Cus.CustomerType != null)
            ItemSearchCustomertype = (int)Cus.CustomerType;

        result = new ActionInResultComponent()
            {
                Status = ComponentStatus.fild
            };
        Hidealert = true;
        alertMessage = "";
        return base.OnParametersSetAsync();
    }
}
@functions {
    private void ShowSuccessAlert(string msg)
    {
        Hidealert = false;
        alertColor = AlertColor.Success;
        alertIconName = IconName.CheckCircleFill;
        alertMessage = msg;
    }
    private void ShowDangerAlert(string msg)
    {
        Hidealert = false;
        alertColor = AlertColor.Danger;
        alertIconName = IconName.ExclamationTriangleFill;
        alertMessage = msg;
    }
    public async Task OnClickDelete()
    {

        var rsp = await hc.Delete($"Customer/Delete/{Cus.ID}");
        if (rsp.IsSuccessStatusCode)
        {
            var request = await rsp.Content.ReadFromJsonAsync<bool>();
            if (request)
            {
                result.Status = ComponentStatus.success;
                result.Action = ComponentAction.delete;
                await OnMultipleOfThree.InvokeAsync(result);
            }
            else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
        }

        else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound)
        {
            ShowDangerAlert("مشتری با این شناسه یافت نشد");
        }
        else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");




    }
    public async Task OnClickUpdate()
    {
        if (ItemSearchCustomertype > 0 && !string.IsNullOrEmpty(Cus.FullName))
        {
            if (ItemSearchCustomertype > 0)
                Cus.CustomerType = (CustomerType)ItemSearchCustomertype;

            var rsp = await hc.Put<RCustomer>("Customer/Update", Cus);
            if (rsp.IsSuccessStatusCode)
            {
                var request = await rsp.Content.ReadFromJsonAsync<bool>();
                if (request)
                {
                    result.Status = ComponentStatus.success;
                    result.Action = ComponentAction.update;
                    await OnMultipleOfThree.InvokeAsync(result);
                }
                else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
            }
            else
            {
                var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
                ShowDangerAlert(request[0]);
            }
        }
        else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند");
    }
    public async Task OnClickAdd()
    {
        if (ItemSearchCustomertype > 0 && !string.IsNullOrEmpty(Cus.FullName))
        {
            if (ItemSearchCustomertype > 0)
                Cus.CustomerType = (CustomerType)ItemSearchCustomertype;
            Cus.ID = null;


            var rsp = await hc.Post<RCustomer>("Customer/Add", Cus);
            if (rsp.IsSuccessStatusCode)
            {
                var request = await rsp.Content.ReadFromJsonAsync<bool>();

                if (request)
                {
                    result.Status = ComponentStatus.success;
                    result.Action = ComponentAction.add;
                    await OnMultipleOfThree.InvokeAsync(result);
                }
                else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
            }
            else
            {

                var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
                ShowDangerAlert(request[0]);
            }
        }
        else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند");
    }
}