define('modules/smart-assistant/views/dashlets/smart-assistant', ['view'], function (View) {

    return View.extend({

        name: 'SmartAssistant',

        getTitle: function () {
            return 'שירה — עוזרת אישית';
        },

        templateContent: '' +
            '<div style="direction: rtl; text-align: right; padding: 8px;">' +
            '<div class="sa-dashlet-cards" style="display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px;"></div>' +
            '<div class="sa-dashlet-detail" style="max-height: 250px; overflow-y: auto;"></div>' +
            '</div>',

        events: {
            'click .sa-card': function (e) {
                var type = $(e.currentTarget).data('type');
                this.showDetail(type);
            },
        },

        afterRender: function () {
            this._alerts = [];
            this._summary = {};
            this._activeType = 'attention';

            var self = this;
            Espo.Ajax.getRequest('SmartAssistant/action/status').then(function (result) {
                if (!result.enabled) {
                    self.$el.find('.sa-dashlet-cards').html(
                        '<div style="text-align: center; color: #999; padding: 20px; font-size: 13px;">שירה לא מופעלת. הפעל ב-Admin &gt; Integrations &gt; Smart Assistant</div>'
                    );
                    return;
                }
                self.loadSummary();
            }).catch(function () {
                self.loadSummary();
            });
        },

        loadSummary: function () {
            var self = this;
            Espo.Ajax.getRequest('SmartAssistant/action/summary').then(function (response) {
                self._summary = response.summary || {};
                self._alerts = response.alerts || [];
                self._openCases = response.openCases || [];
                self._upcomingHearings = response.upcomingHearings || [];
                self.renderCards(self._summary);
                self.showDetail(self._activeType);
            }).catch(function () {});
        },

        renderCards: function (summary) {
            var cards = [
                {type: 'attention', label: 'דורשים תשומת לב', value: summary.casesNeedingAttention || 0, color: '#f9a825', bg: '#fff9c4', icon: 'fa-bell'},
                {type: 'overdue', label: 'משימות באיחור', value: summary.totalOverdueTasks || 0, color: '#c62828', bg: '#ffcdd2', icon: 'fa-exclamation-circle'},
                {type: 'hearings', label: 'דיונים השבוע', value: summary.upcomingHearings7d || 0, color: '#e65100', bg: '#fff3e0', icon: 'fa-gavel'},
                {type: 'open', label: 'תיקים פתוחים', value: summary.totalOpenCases || 0, color: '#1565c0', bg: '#e3f2fd', icon: 'fa-folder-open'},
            ];

            var self = this;
            var html = '';
            cards.forEach(function (c) {
                var active = self._activeType === c.type;
                var border = active ? '2px solid ' + c.color : '2px solid transparent';
                var cursor = c.value > 0 ? 'pointer' : 'default';
                html += '<div class="sa-card" data-type="' + c.type + '" style="flex: 1; min-width: 80px; background: ' + c.bg + '; padding: 10px; border-radius: 8px; text-align: center; cursor: ' + cursor + '; border: ' + border + '; transition: border 0.2s;">' +
                    '<div style="font-size: 22px; font-weight: bold; color: ' + c.color + ';">' + c.value + '</div>' +
                    '<div style="font-size: 11px; color: ' + c.color + ';"><span class="fas ' + c.icon + '"></span> ' + c.label + '</div>' +
                    '</div>';
            });

            this.$el.find('.sa-dashlet-cards').html(html);
        },

        showDetail: function (type) {
            var self = this;
            var $detail = this.$el.find('.sa-dashlet-detail');

            if (!type || type === this._activeType && $detail.html()) {
                // Toggle off
                this._activeType = null;
                $detail.html('');
                this.renderCards(this._summary);
                return;
            }

            this._activeType = type;
            this.renderCards(this._summary);

            var alerts = this._alerts;
            var items = [];

            if (type === 'overdue') {
                items = alerts.filter(function (a) { return a.type === 'overdue_task'; });
            } else if (type === 'hearings') {
                items = this._upcomingHearings || [];
            } else if (type === 'attention') {
                items = alerts.filter(function (a) { return a.severity === 'critical' || a.severity === 'warning'; });
            } else if (type === 'open') {
                items = this._openCases || [];
            }

            if (items.length === 0) {
                $detail.html('<div style="text-align: center; color: #999; padding: 12px; font-size: 12px;">אין פריטים להצגה</div>');
                return;
            }

            var severityColors = {critical: '#c62828', warning: '#e65100', info: '#1565c0'};
            var severityIcons = {critical: 'fa-exclamation-circle', warning: 'fa-exclamation-triangle', info: 'fa-info-circle'};

            var html = '';
            items.forEach(function (a) {
                var color = severityColors[a.severity] || '#333';
                var icon = severityIcons[a.severity] || 'fa-circle';
                var link = a.caseId ? '<a href="#Case/view/' + a.caseId + '" style="color: ' + color + '; text-decoration: none;">' : '<span>';
                var linkEnd = a.caseId ? '</a>' : '</span>';

                html += '<div style="padding: 6px 8px; border-bottom: 1px solid #f0f0f0; font-size: 12px; color: ' + color + ';">' +
                    '<span class="fas ' + icon + '" style="margin-left: 6px;"></span>' +
                    link + self.escapeString(a.message) + linkEnd +
                    '</div>';
            });

            $detail.html(html);
        },

        actionRefresh: function () {
            this.loadSummary();
        },

        getActionItemDataList: function () {
            return [
                {
                    name: 'refresh',
                    iconHtml: '<span class="fas fa-sync-alt"></span>',
                },
            ];
        },

        getColor: function () {
            return '#5c6bc0';
        },
    });
});
