<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - Microsoft.eShopOnContainers.WebMVC</title>

    <environment names="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/app.css" />
        <link rel="stylesheet" href="~/css/app.component.css" />
        <link rel="stylesheet" href="~/css/shared/components/header/header.css" />
        <link rel="stylesheet" href="~/css/shared/components/identity/identity.css" />
        <link rel="stylesheet" href="~/css/shared/components/pager/pager.css" />
        <link rel="stylesheet" href="~/css/basket/basket.component.css" />
        <link rel="stylesheet" href="~/css/campaigns/campaigns.component.css" />
        <link rel="stylesheet" href="~/css/basket/basket-status/basket-status.component.css" />
        <link rel="stylesheet" href="~/css/catalog/catalog.component.css" />
        <link rel="stylesheet" href="~/css/orders/orders.component.css" />
        <link rel="stylesheet" href="~/css/orders/orders-detail/orders-detail.component.css" />
        <link rel="stylesheet" href="~/css/orders/orders-new/orders-new.component.css" />
        <link rel="stylesheet" href="~/css/override.css" type="text/css" />
        <link rel="stylesheet" href="~/css/site.min.css" type="text/css" />

    </environment>
    <environment names="Staging,Production">
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
        <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
        <link rel="stylesheet" href="~/css/override.css" type="text/css" />
    </environment>
</head>
<body>
    <header class="navbar navbar-light navbar-static-top">
        <div class="container">
            <article class="row">

                <section class="col-lg-7 col-md-6 col-xs-12">
                    <a class="navbar-brand" routerLink="catalog">
                        <a asp-area="" asp-controller="Catalog" asp-action="Index">
                            <img src="~/images/brand.png" />
                        </a>
                    </a>
                </section>

                @await Html.PartialAsync("_LoginPartial")
            </article>
        </div>
    </header>

    @RenderBody()


    <footer class="esh-app-footer">
        <div class="container">
            <article class="row">

                <section class="col-sm-6">
                    <img class="esh-app-footer-brand" src="~/images/brand_dark.png" />
                </section>

                <section class="col-sm-6">
                    <img class="esh-app-footer-text hidden-xs" src="~/images/main_footer_text.png" width="335" height="26" alt="footer text image" />
                </section>

            </article>
        </div>
    </footer>

    <environment names="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment names="Staging,Production">
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>

    @RenderSection("scripts", required: false)


    @using Microsoft.AspNetCore.Authentication;
    @using Microsoft.Extensions.Options
    @inject IOptions<AppSettings> settings

    <script type="text/javascript">
        if ('@User.Identity.IsAuthenticated' === 'True') {
            var timerId;

            let connection = stablishConnection();
            
            connection.start().then(function () {
                console.log('User Registered to Signalr Hub');
            });

            registerNotificationHandlers(connection);
        }

        function stablishConnection() {
            let hubHttpConnection = new signalR.HttpConnection('@settings.Value.SignalrHubUrl/hub/notificationhub', {
            transport: signalR.TransportType.LongPolling,
                accessTokenFactory: () => {
                    return "Authorization", getToken();
                }
            });
            return new signalR.HubConnection(hubHttpConnection);
        }

        function registerNotificationHandlers(connection) {
            connection.on("UpdatedOrderState", (message) => {
            toastr.success('Updated to status: ' + message.status, 'Order Id: ' + message.orderId);
                if (window.location.pathname.split("/").pop() === 'Order') {
                    refreshOrderList();
                }
            });
        }

        function getToken() {
            return '@Context.GetTokenAsync("access_token").Result';
        }

        function refreshOrderList() {
            clearTimeout(timerId);
            timerId = setTimeout(function () {
                window.location.reload();
            }, 1000);
        }
    </script>
</body>
</html>