@using MoneroLikePaymentMethodViewModel = BTCPayServer.Services.Altcoins.Monero.UI.UIMoneroLikeStoreController.MoneroLikePaymentMethodViewModel
@using MoneroLikeSettlementThresholdChoice = BTCPayServer.Services.Altcoins.Monero.UI.UIMoneroLikeStoreController.MoneroLikeSettlementThresholdChoice;
@model MoneroLikePaymentMethodViewModel

@{
    ViewData.SetActivePage(Model.CryptoCode, $"{Model.CryptoCode} Settings", Model.CryptoCode);
}

<partial name="_StatusMessage" />

<div class="row">
    <div class="col-md-8">
        @if (!ViewContext.ModelState.IsValid)
        {
            <div asp-validation-summary="All"></div>
        }
        @if (Model.Summary != null)
        {
            <div class="card">
                <ul class="list-group list-group-flush">
                    <li class="list-group-item">Node available: @Model.Summary.DaemonAvailable</li>
                    <li class="list-group-item">Wallet available: @Model.Summary.WalletAvailable (@(Model.WalletFileFound ? "Wallet file present" : "Wallet file not found"))</li>
                    <li class="list-group-item">Last updated: @Model.Summary.UpdatedAt</li>
                    <li class="list-group-item">Synced: @Model.Summary.Synced (@Model.Summary.CurrentHeight / @Model.Summary.TargetHeight)</li>
                </ul>
            </div>
        }

        @if (!Model.WalletFileFound || Model.Summary.WalletHeight == default)
        {
            <form method="post" asp-action="GetStoreMoneroLikePaymentMethod" 
                  asp-route-storeId="@Context.GetRouteValue("storeId")"
                  asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
                  class="mt-4" enctype="multipart/form-data">

                <div class="card my-2">
                    <h3 class="card-title p-2">Upload Wallet</h3>
                    <div class="form-group p-2">
                        <label asp-for="WalletFile" class="form-label"></label>
                        <input class="form-control" asp-for="WalletFile" required>
                        <span asp-validation-for="WalletFile" class="text-danger"></span>
                    </div>
                    <div class="form-group p-2">
                        <label asp-for="WalletKeysFile" class="form-label"></label>
                        <input class="form-control" asp-for="WalletKeysFile" required>
                        <span asp-validation-for="WalletKeysFile" class="text-danger"></span>
                    </div>
                    <div class="form-group p-2">
                        <label asp-for="WalletPassword" class="form-label"></label>
                        <input class="form-control" asp-for="WalletPassword">
                        <span asp-validation-for="WalletPassword" class="text-danger"></span>
                    </div>
                    <div class="card-footer text-right">
                        <button name="command" value="upload-wallet" class="btn btn-secondary" type="submit">Upload</button>
                    </div>
                </div>
            </form>
        }
        <form method="post" asp-action="GetStoreMoneroLikePaymentMethod"
              asp-route-storeId="@Context.GetRouteValue("storeId")"
              asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
              class="mt-4" enctype="multipart/form-data">

            <input type="hidden" asp-for="CryptoCode"/>
            @if (!Model.WalletFileFound || Model.Summary.WalletHeight == default)
            {
                <input type="hidden" asp-for="AccountIndex"/>
            }
            else
            {
                <div class="form-group">
                    <label asp-for="AccountIndex" class="control-label"></label>
                    @if (@Model.Accounts != null && Model.Accounts.Any())
                    {
                        <select asp-for="AccountIndex" asp-items="Model.Accounts" class="form-control"></select>
                        <span asp-validation-for="AccountIndex" class="text-danger"></span>
                    }
                    else
                    {
                        <span>No accounts available on the current wallet</span>
                        <input type="hidden" asp-for="AccountIndex"/>
                    }
                </div>
                <div class="form-group">
                    <div class="input-group my-3">
                        <input type="text" class="form-control" placeholder="New account label" asp-for="NewAccountLabel">
                        <button name="command" value="add-account" class="input-group-text btn btn-secondary" type="submit">Add account</button>
                    </div>
                </div>
            }

            <div class="form-group">
                <label asp-for="Enabled"></label>
                <input asp-for="Enabled" type="checkbox" class="form-check"/>
                <span asp-validation-for="Enabled" class="text-danger"></span>
            </div>

            <div class="form-group">
                <label asp-for="SettlementConfirmationThresholdChoice" class="form-label"></label>
                <a href="https://docs.btcpayserver.org/FAQ/Stores/#consider-the-invoice-confirmed-when-the-payment-transaction" target="_blank" rel="noreferrer noopener" title="More information...">
                    <vc:icon symbol="info" />
                </a>
                <select
                    asp-for="SettlementConfirmationThresholdChoice"
                    asp-items="Html.GetEnumSelectList<MoneroLikeSettlementThresholdChoice>()"
                    class="form-select w-auto"
                    onchange="
                        document.getElementById('unconfirmed-warning').hidden = this.value !== '@((int)MoneroLikeSettlementThresholdChoice.ZeroConfirmation)';
                        document.getElementById('custom-confirmation-value').hidden = this.value !== '@((int)MoneroLikeSettlementThresholdChoice.Custom)';">
                </select>
                <span asp-validation-for="SettlementConfirmationThresholdChoice" class="text-danger"></span>
                <p class="info-note my-3 text-warning" id="unconfirmed-warning" role="alert" hidden="@(Model.SettlementConfirmationThresholdChoice is not MoneroLikeSettlementThresholdChoice.ZeroConfirmation)">
                    <vc:icon symbol="warning" />
                    Choosing to accept an unconfirmed invoice can lead to double-spending and is strongly discouraged.
                </p>
            </div>

            <div class="form-group" id="custom-confirmation-value" hidden="@(Model.SettlementConfirmationThresholdChoice is not MoneroLikeSettlementThresholdChoice.Custom)">
                <label asp-for="CustomSettlementConfirmationThreshold" class="form-label"></label>
                <input
                    asp-for="CustomSettlementConfirmationThreshold"
                    type="number"
                    value="@(Model.CustomSettlementConfirmationThreshold)"
                    class="form-control w-auto"
                    min="0"
                    max="100"
                    pattern="\d+"
                />
                <span asp-validation-for="CustomSettlementConfirmationThreshold" class="text-danger"></span>
            </div>

            <div class="form-group">
                <button type="submit" class="btn btn-primary" id="SaveButton">Save</button>

                <a class="btn btn-secondary" asp-action="GetStoreMoneroLikePaymentMethods"
                   asp-route-storeId="@Context.GetRouteValue("storeId")"
                   asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
                   asp-controller="UIMoneroLikeStore">
                    Back to list
                </a>
            </div>
        </form>
    </div>
</div>

@section PageFootContent {
    @await Html.PartialAsync("_ValidationScriptsPartial")
}