# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.exceptions import AccessError


class PremiumService(models.Model):
    _name = "premium.service"
    _description = "Премиум: сервис/продукт"
    _order = "sequence, name"

    name = fields.Char(string="Название", required=True, translate=True)
    sequence = fields.Integer(default=10)

    category = fields.Selection(
        selection=[
            ("services", "Услуги"),
            ("bank", "Банки, кассы, ЭДО"),
            ("wms", "WMS, логистика и ЧЗ"),
            ("marketplace", "Маркетплейсы"),
            ("industry", "Отраслевые"),
            ("other", "Другое"),
        ],
        string="Категория",
        required=True,
        default="services",
        translate=False,
    )

    short_description = fields.Text(string="Краткое описание", translate=True)
    description = fields.Html(string="Описание", sanitize=True, translate=True)
    author_url = fields.Char(string="Автор (URL)")
    image = fields.Image(string="Изображение", max_width=1024, max_height=768)

    def write(self, vals):
        # Проверяем, является ли пользователь администратором
        if not self.env.user.has_group('base.group_system'):
            # Если не администратор, запрещаем запись
            raise AccessError("Только администратор может редактировать карточки сервисов.")
        return super(PremiumService, self).write(vals)

    @api.model
    def create(self, vals):
        # Проверяем, является ли пользователь администратором
        if not self.env.user.has_group('base.group_system'):
            # Если не администратор, запрещаем создание
            raise AccessError("Только администратор может создавать карточки сервисов.")
        return super(PremiumService, self).create(vals)

    def unlink(self):
        # Проверяем, является ли пользователь администратором
        if not self.env.user.has_group('base.group_system'):
            # Если не администратор, запрещаем удаление
            raise AccessError("Только администратор может удалять карточки сервисов.")
        return super(PremiumService, self).unlink()

    def action_open_form(self):
        self.ensure_one()
        return {
            "type": "ir.actions.act_window",
            "res_model": self._name,
            "res_id": self.id,
            "view_mode": "form",
            "target": "current",
        }

    def action_open_order_wizard(self):
        self.ensure_one()
        return {
            "name": _("Заказ сервиса"),
            "type": "ir.actions.act_window",
            "res_model": "premium.order.wizard",
            "view_mode": "form",
            "target": "new",
            "context": {"default_service_id": self.id},
        }