{"id":17,"date":"2025-12-03T06:28:25","date_gmt":"2025-12-03T06:28:25","guid":{"rendered":"https:\/\/hotpanel.ir\/index.php\/services\/"},"modified":"2025-12-03T06:28:25","modified_gmt":"2025-12-03T06:28:25","slug":"services","status":"publish","type":"page","link":"https:\/\/hotpanel.ir\/services\/","title":{"rendered":"\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627"},"content":{"rendered":"\r\n<div class=\"kt-row\">\r\n    <div class=\"column kt-col-xs-12\">\r\n            <\/div>\r\n<\/div>\r\n<div class=\"kando-buttons-wrapper\">\r\n\r\n                <\/div>\r\n\r\n<div class=\"kt-row\">\r\n    <div class=\"column kt-col-xs-12 kt-col-md-12 dashboard-notifications\">\r\n        <div class=\"dashboard-posts-box dashboard-tickets-box margin-top-0\">\r\n            <div class=\"dashboard-posts-list dashboard-notifications-items\">\r\n                <div class=\"kt-col-lg-2 kt-col-sm-3 kt-col-xs-12 ml-10 mb-sm-10 align-items-center\">\r\n                    <select class=\"form-control form-select\" id=\"sel_platforms\">\r\n                        <option value=\"all\">\u0647\u0645\u0647 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627<\/option>\r\n                                                    <option value=\"1\">\u0631\u0648\u0628\u06cc\u06a9\u0627<\/option>\r\n                                            <\/select>\r\n                <\/div>\r\n                <div class=\"kt-col-lg-2 kt-col-sm-3 kt-col-xs-12 ml-10 mb-sm-10 align-items-center\">\r\n                    <input type=\"text\" name=\"search\" class=\"input-text\"\r\n                           placeholder=\"\u062c\u0633\u062a\u062c\u0648\u06cc \u0634\u0646\u0627\u0633\u0647 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0646\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\"\r\n                           id=\"searchService\" value=\"\"\/>\r\n                <\/div>\r\n                <div class=\"kt-col-lg-2 kt-col-sm-3 kt-col-xs-12 ml-10 mb-sm-10 align-items-center\">\r\n                    <select class=\"form-control form-select\" id=\"sel_category\">\r\n                        <option value=\"all\">\u0647\u0645\u0647 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc\u200c\u0647\u0627<\/option>\r\n                        <option value=\"fav\">\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647<\/option>\r\n                                                    <option value=\"1\">\ud83d\udc64 \u0641\u0627\u0644\u0648\u0648\u0631 \u067e\u06cc\u062c \u0631\u0648\u0628\u06cc\u0646\u0648 \ud83d\udc64<\/option>\r\n                                                    <option value=\"2\">\u2764\ufe0f \u0644\u0627\u06cc\u06a9 \u067e\u0633\u062a \u067e\u06cc\u062c \u0631\u0648\u0628\u06cc\u0646\u0648 \u2764\ufe0f<\/option>\r\n                                                    <option value=\"3\">\ud83d\udc41 \u0628\u0627\u0632\u062f\u06cc\u062f \u067e\u0633\u062a \u067e\u06cc\u062c \u0631\u0648\u0628\u06cc\u0646\u0648 \ud83d\udc41<\/option>\r\n                                                    <option value=\"4\">\u2708\ufe0f \u0628\u0627\u0632\u062f\u06cc\u062f \u0627\u0633\u062a\u0648\u0631\u06cc \u0631\u0648\u0628\u06cc\u06a9\u0627 \u2708\ufe0f<\/option>\r\n                                                    <option value=\"5\">\ud83d\udce2 \u0645\u0645\u0628\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0648\u0628\u06cc\u06a9\u0627 \ud83d\udce2<\/option>\r\n                                                    <option value=\"6\">\ud83d\udde3 \u0645\u0645\u0628\u0631 \u06af\u0631\u0648\u0647 \u0631\u0648\u0628\u06cc\u06a9\u0627 \ud83d\udde3<\/option>\r\n                                                    <option value=\"7\">\ud83d\udc41\u200d\ud83d\udde8 \u0628\u0627\u0632\u062f\u06cc\u062f \u067e\u0633\u062a \u06a9\u0627\u0646\u0627\u0644 \u0631\u0648\u0628\u06cc\u06a9\u0627 \ud83d\udc41\u200d\ud83d\udde8<\/option>\r\n                                                    <option value=\"8\">\ud83d\udcca \u0646\u0638\u0631\u0633\u0646\u062c\u06cc \u0631\u0648\u0628\u06cc\u06a9\u0627 \ud83d\udcca<\/option>\r\n                                                    <option value=\"9\">\ud83e\udd28 \u0631\u06cc\u200c\u0627\u06a9\u0634\u0646 \u0631\u0648\u0628\u06cc\u06a9\u0627 \ud83e\udd28<\/option>\r\n                                            <\/select>\r\n                <\/div>\r\n\r\n                                                <!--\r\n                <div class=\"kt-col-lg-1 kt-col-sm-12 kt-col-xs-12 ml-10 mb-sm-10 align-items-center\">\r\n                    <i class=\"fal fa-info-circle\" id=\"infoIcon\"><\/i>\r\n\r\n                    <div class=\"main_category hidden\" id=\"mainCategory\">\r\n                        <div class=\"service_type text_color\">\r\n                            <p>\r\n                                <span>\u26d4<\/span>\r\n                                \u0627\u0645\u06a9\u0627\u0646 \u0644\u063a\u0648 \u0633\u0641\u0627\u0631\u0634                            <\/p>\r\n                            <p class=\"rba_btn\">\r\n                                <span class=\"text-success\">\u267b<\/span>\r\n                                \u0627\u0645\u06a9\u0627\u0646 \u062c\u0628\u0631\u0627\u0646 \u0631\u06cc\u0632\u0634                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                -->\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<\/div>\r\n<div class=\"kando-services-box is-loading\">\r\n    <div class=\"categories-container\"><\/div>\r\n    <div class=\"samyar-form-loading\" style=\"display: none;width: 100%;height: 100px;position: relative;\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n        jQuery(document).ready(function ($) {\r\n        \/\/ \u06f2. \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0631\u0633\u06cc PHP \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u062b\u0627\u0628\u062a \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\r\n        \/\/ \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 json_encode \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 boolean \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0646\u062a\u0642\u0644 \u0634\u0648\u062f.\r\n        const isUserView = false;\r\n\r\n\r\n        let currentPage = 1;\r\n        let isLoading = false; \/\/ \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0647\u0645\u0632\u0645\u0627\u0646\r\n\r\n        function loadCategories(page) {\r\n            if (isLoading) return; \/\/ \u0627\u06af\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u0633\u062a\u060c \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062c\u062f\u06cc\u062f \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\r\n            isLoading = true; \/\/ \u0639\u0644\u0627\u0645\u062a \u0628\u0632\u0646 \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0647\u0633\u062a\u06cc\u0645\r\n\r\n            let ajaxData = {\r\n                action: 'kando_get_categories',\r\n                page: page\r\n            };\r\n\r\n            \/\/ \u06f3. \u0627\u0632 \u0647\u0645\u0627\u0646 \u0645\u062a\u063a\u06cc\u0631\u06cc \u06a9\u0647 \u0627\u0632 PHP \u0645\u0642\u062f\u0627\u0631 \u06af\u0631\u0641\u062a\u0647\u060c \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0634\u0631\u0637\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\r\n            if (isUserView) {\r\n                ajaxData.is_user_view = '1';\r\n            }\r\n\r\n            $.ajax({\r\n                url: kando_data.ajaxurl,\r\n                type: 'POST',\r\n                data: ajaxData,\r\n                beforeSend: function () {\r\n                    $('.samyar-form-loading').show(); \/\/ \u0646\u0645\u0627\u06cc\u0634 \u0644\u0648\u062f\u06cc\u0646\u06af\r\n                },\r\n                success: function (response) {\r\n                    if (response.success) {\r\n                        $('.categories-container').append(response.data.html);\r\n                        currentPage = response.data.pagination.current_page;\r\n                        const totalPages = response.data.pagination.total_pages;\r\n                        if (currentPage < totalPages) {\r\n                            isLoading = false;\r\n                            loadCategories(currentPage + 1);\r\n                        } else {\r\n                            $('.samyar-form-loading').hide(); \/\/ \u067e\u0646\u0647\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0644\u0648\u062f\u06cc\u0646\u06af\r\n                        }\r\n                    } else {\r\n                        console.error('Error loading categories:', response.data.message);\r\n                    }\r\n                },\r\n                complete: function () {\r\n                    isLoading = false; \/\/ \u0639\u0644\u0627\u0645\u062a \u0628\u0632\u0646 \u06a9\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0645\u0627\u0645 \u0634\u062f\u0647\r\n                },\r\n                error: function (jqXHR, textStatus, errorThrown) {\r\n                    console.error('AJAX Error:', textStatus, errorThrown);\r\n                    $('.samyar-form-loading').hide(); \/\/ \u067e\u0646\u0647\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0644\u0648\u062f\u06cc\u0646\u06af \u062f\u0631 \u0635\u0648\u0631\u062a \u062e\u0637\u0627\r\n                    isLoading = false;\r\n                }\r\n            });\r\n        }\r\n\r\n        loadCategories(currentPage); \/\/ \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u0648\u0644\u06cc\u0647\r\n\r\n    });\r\n\r\n    function persianToEnglish(num) {\r\n        const persianDigits = '\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9';\r\n        const arabicDigits = '\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669';\r\n        const digitsMap = Array.from({length: 10}, (_, i) => i.toString());\r\n        return num.replace(\/[\u06f0-\u06f9]\/g, d => digitsMap[persianDigits.indexOf(d)])\r\n            .replace(\/[\u0660-\u0669]\/g, d => digitsMap[arabicDigits.indexOf(d)]);\r\n    }\r\n\r\n    jQuery(document).ready(function ($) {\r\n        function filterServices() {\r\n            var platform = $('#sel_platforms').val();\r\n            if (platform === null || platform === undefined || platform === '') {\r\n                platform = 'all';\r\n            }\r\n\r\n            var category = $('#sel_category').val();\r\n            if (category === null || category === undefined || category === '') {\r\n                category = 'all';\r\n            }\r\n\r\n            var status = $('#activeService').val();\r\n            if (status === null || status === undefined || status === '') {\r\n                status = 'all';\r\n            }\r\n\r\n            var searchText = persianToEnglish($('#searchService').val().toLowerCase());\r\n\r\n            $('.service-card,.service-category').each(function () {\r\n                var card = $(this);\r\n                var cardPlatform = card.data('platform');\r\n                var cardCategory = card.data('category');\r\n                var hasVisibleServices = false;\r\n\r\n                card.find('.service-item, tr[data-service-id]').each(function () {\r\n                    var item = $(this);\r\n                    var itemCategory = item.data('category');\r\n                    var itemStatus = item.data('status');\r\n                    var serviceId = item.data('service-id').toString();\r\n                    var serviceName = item.data('service-name').toLowerCase();\r\n                    var isFavorite = item.data('fav') === 1;\r\n\r\n\r\n                    var platformMatch = (platform === 'all' || cardPlatform == platform);\r\n                    var activeMatch = (status === 'all' || itemStatus == status);\r\n                    var categoryMatch = (category === 'all' || category === 'fav' || itemCategory == category); \/\/ \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u0646\u062c\u0627\r\n                    var searchMatch = (serviceId.includes(searchText) || serviceName.includes(searchText));\r\n                    var favoriteMatch = (category !== 'fav' || isFavorite);\r\n\r\n                    if (platformMatch && activeMatch && categoryMatch && searchMatch && favoriteMatch) {\r\n                        item.show();\r\n                        hasVisibleServices = true;\r\n                    } else {\r\n                        item.hide();\r\n                    }\r\n                });\r\n\r\n                if (hasVisibleServices) {\r\n                    card.show();\r\n                } else {\r\n                    card.hide();\r\n                }\r\n            });\r\n        }\r\n\r\n        $('#sel_platforms, #sel_category, #searchService, #activeService').on('change keyup', filterServices);\r\n\r\n        $(document).on('click', '.favorite-btn', function (e) {\r\n            var button = $(this);\r\n            var serviceId = button.data('service-id');\r\n            $.ajax({\r\n                url: kando_data.ajaxurl,\r\n                type: 'post',\r\n                data: {action: 'kando_favorite_service', service_id: serviceId},\r\n                success: function (response) {\r\n                    kando_show_toast(response.data.message);\r\n                    if (response.data.active === 1) {\r\n                        button.addClass('active');\r\n                    } else {\r\n                        button.removeClass('active');\r\n                    }\r\n\r\n                },\r\n                error: function () {\r\n                    Swal.fire({\r\n                        title: kando_data.langs.an_error,\r\n                        icon: 'error',\r\n                        html: response.data.message,\r\n                        showCloseButton: true,\r\n                        confirmButtonText: kando_data.langs.ok,\r\n                    })\r\n                }\r\n            });\r\n        });\r\n    });\r\n\r\n    \/*\r\n    const infoIcon = document.getElementById('infoIcon');\r\n    const mainCategory = document.getElementById('mainCategory');\r\n\r\n    infoIcon.addEventListener('mouseover', () => {\r\n        mainCategory.classList.remove('hidden');\r\n    });\r\n\r\n    infoIcon.addEventListener('mouseout', () => {\r\n        mainCategory.classList.add('hidden');\r\n    });\r\n\r\n    infoIcon.addEventListener('touchstart', () => {\r\n        mainCategory.classList.remove('hidden');\r\n    });\r\n\r\n    infoIcon.addEventListener('touchend', () => {\r\n        mainCategory.classList.add('hidden');\r\n    });\r\n*\/\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-wide.php","meta":{"footnotes":""},"class_list":["post-17","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/pages\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/comments?post=17"}],"version-history":[{"count":0,"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/pages\/17\/revisions"}],"wp:attachment":[{"href":"https:\/\/hotpanel.ir\/core\/wp\/v2\/media?parent=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}