@page
@model WorkFlowCheck.Web.Pages.CheckList.CheckListHeader.CheckListHeaderPageModel
@using WorkFlowCheck.Common.Helper
@using WorkFlowCheck.Common.DTO
@using Microsoft.AspNetCore.Antiforgery
@inject IAntiforgery Antiforgery
@{
    ViewData["Title"] = "Ellenőrzések";
}
<h1>@ViewData["Title"]</h1>
<meta name="csrf-token" content="@Antiforgery.GetAndStoreTokens(HttpContext).RequestToken" />
<div class="card shadow p-4">
    <div class="d-flex justify-content-end">
        <button id="newCheckListHeaderBtn" class="btn btn-primary float-right new-btn" data-bs-toggle="tooltip" data-bs-placement="top" title="Új elem hozzáadása">
            <i class="bi bi-plus-square"></i>
        </button>
    </div>
    <table id="tbCheckListHeadersPage" class="table table-bordered table-hover table-sm" style="width:100%">
        <thead class="table-primary">
            <tr>
                <th>ID</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.CheckStatus), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.IsEditable), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.DocumentNumber), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.DateExecution), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.ShortName), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.Description), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.UserId), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.AcceptUserId), typeof(CheckListHeaderDTO))</th>
                <th class="text-center">Action</th>
            </tr>
        </thead>
        <tfoot class="table-light">
            <tr>
                <th>ID</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.CheckStatus), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.IsEditable), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.DocumentNumber), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.DateExecution), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.ShortName), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.Description), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.UserId), typeof(CheckListHeaderDTO))</th>
                <th>@DisplayNameHelper.GetDisplayName(nameof(CheckListHeaderDTO.AcceptUserId), typeof(CheckListHeaderDTO))</th>
                <th class="text-center">Action</th>
            </tr>
        </tfoot>
    </table>
</div>

@section Scripts {
    <script>
        const table = new DataTable('#tbCheckListHeadersPage', {
                ajax: {
                        url: "@Url.Page("./CheckListHeaderPage", "LoadCheckListHeaders")",
                        type: "GET",
                        dataSrc : "data"
                },
                columns: [
                    { data: "id" },
                    { data: "checkStatus",
                      render:function(data, type, row)
                      {
                           return renderCheckStatus(data);
                      }
                    },
                    {
                        data: "isEditable",
                        searchable: false,
                        sortable: false,
                        className: "text-center",
                        render: function ( data, type, row ) {
                            return renderCheckBox(data);
                        }

                    },
                    { data: "documentNumber"},
                    { data: "dateExecution",
                            render: function (data, type, row) {
                                        if (!data) return '';
                                        if (type === 'display' || type === 'filter') {
                                            return dayjs(data).format('YYYY.MM.DD');
                                        }
                                        return data;
                                    }
                    },
                    { data: "shortName" },
                    { data: "description" },
                    { data: "userDTO.userName" },
                    { data: "acceptUserDTO.userName" },
                    { data: "checkStatus", render: function (data, type, row) {
                         return renderActionButtonsforCheckListHeader(data, row.id);
                    }}
                ],
                columnDefs: [
                    {
                        "targets": 0,
                        "visible": false
                    },
                    {
                        "targets": 9,
                        "className": "text-center",
                        "width": "10%"
                    }
                ],

                processing: true,
                language: { url: '//cdn.datatables.net/plug-ins/2.2.2/i18n/hu.json',}
        });

        $('#newCheckListHeaderBtn').on('click', function ()
        {
            console.log('New button clicked!"');
            window.location.href = `@Url.Page("./CheckListHeaderEditPage")?id=0`;
        });

        $('#tbCheckListHeadersPage').on('click', '.edit-btn', function ()
        {
            const row = table.row($(this).closest('tr')).data();
            window.location.href = `@Url.Page("./CheckListHeaderEditPage")?id=${row.id}`;
        });

        $('#tbCheckListHeadersPage').on('click', '.pdf-btn', function ()
        {
            const row = table.row($(this).closest('tr')).data();
            window.location.href = `@Url.Page("./CheckListHeaderPage")?handler=CreatePDF&id=${row.id}`;

        });
        $('#tbCheckListHeadersPage').on('click', '.close-btn', function ()
        {
            const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
            const row = table.row($(this).closest('tr')).data();
            const title = `Biztosan le akarja zárni az ellenőrzést? (${row.documentNumber})`;
            const url = `@Url.Page("./CheckListHeaderPage")?handler=Close`;
            showConfirmModalWithMessage({
                    title: title,
                    message: 'Kérlek, indokold meg:',
                    okText: 'Elküld',
                    cancelText: 'Mégsem'
                }).then(function (result) {
                    if (result.action === 'ok') {
                        $.ajax({
                            url: url,
                            type: 'POST',
                            headers: {
                               'X-CSRF-TOKEN': csrfToken,
                               'Content-Type': 'application/json'
                            },
                            data: JSON.stringify({
                                Id: row.id,
                                CloseReason: result.text,
                                UserId: 0,
                            }),
                            success: function(data) {
                                if (data) {
                                    showMessageModal({
                                        title: 'Információ',
                                        message: 'A lezárás sikerült!',
                                        okText: 'Értettem'
                                    });
                                    table.ajax.reload();
                                } else {
                                    showMessageModal({
                                        title: 'Hiba!',
                                        message: 'A lezárás NEM sikerült!',
                                        okText: 'Értettem'
                                    });
                                }
                            },
                            error: function(xhr, status, error) {
                                showMessageModal({
                                        title: 'Hiba!',
                                        message: 'A lezárás NEM sikerült!',
                                        okText: 'Értettem'
                                    });
                            }
                        });
                    } else {

                    }
                });
        });
        
        $('#tbCheckListHeadersPage').on('click', '.accept-btn', function ()
        {
            const row = table.row($(this).closest('tr')).data();
            const url = `@Url.Page("./CheckListHeaderPage")?handler=Accept&id=${row.id}`

            showConfirmModal({
                                title: 'Jóváhagyás megerősítése',
                                message: 'Biztosan jóváhagyod a folyamatot?',
                                okText: 'Jóváhagyás',
                                cancelText: 'Mégsem'
                            }).then(function(result){
                                if(result === 'ok'){
                                    $.ajax({
                                            url: url,
                                            type: 'GET',
                                            success: function(data) {
                                                if (data) {
                                                    showMessageModal({
                                                        title: 'Információ',
                                                        message: 'A jóváhagyás sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                    table.ajax.reload();
                                                } else {
                                                    showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A jóváhagyás NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                }
                                            },
                                            error: function(xhr, status, error) {
                                                showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A jóváhagyás NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                            }
                                        });
                                }
                            });
        });

        $('#tbCheckListHeadersPage').on('click', '.block-btn', function ()
        {
            const row = table.row($(this).closest('tr')).data();
            const url = `@Url.Page("./CheckListHeaderPage")?handler=Block&id=${row.id}`

            showConfirmModal({
                                title: 'Blokkolás megerősítése',
                                message: 'Biztosan blokkolod a folyamatot?',
                                okText: 'Blokkolás',
                                cancelText: 'Mégsem'
                            }).then(function(result){
                                if(result === 'ok'){
                                    $.ajax({
                                            url: url,
                                            type: 'GET',
                                            success: function(data) {
                                                if (data) {
                                                    showMessageModal({
                                                        title: 'Információ',
                                                        message: 'A blokkolás sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                    table.ajax.reload();
                                                } else {
                                                    showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A blokkolás NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                }
                                            },
                                            error: function(xhr, status, error) {
                                                showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A blokkolás NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                            }
                                        });
                                }
                            });
        });
        
        $('#tbCheckListHeadersPage').on('click', '.unblock-btn', function ()
        {
            const row = table.row($(this).closest('tr')).data();
            const url = `@Url.Page("./CheckListHeaderPage")?handler=Unblock&id=${row.id}`

            showConfirmModal({
                                title: 'Blokkolás feloldás megerősítése',
                                message: 'Biztosan feloldod a blokkolást?',
                                okText: 'Blokkolás feloldás',
                                cancelText: 'Mégsem'
                            }).then(function(result){
                                if(result === 'ok'){
                                    $.ajax({
                                            url: url,
                                            type: 'GET',
                                            success: function(data) {
                                                if (data) {
                                                    showMessageModal({
                                                        title: 'Információ',
                                                        message: 'A blokkolás feloldása sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                    table.ajax.reload();
                                                } else {
                                                    showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A blokkolás feloldása NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                                }
                                            },
                                            error: function(xhr, status, error) {
                                                showMessageModal({
                                                        title: 'Hiba!',
                                                        message: 'A blokkolás feloldása NEM sikerült!',
                                                        okText: 'Értettem'
                                                    });
                                            }
                                        });
                                }
                            });
        });

        
    </script>
}
