# -*- coding: utf-8 -*-
from odoo import fields, models


class ResPartner(models.Model):
    _inherit = 'res.partner'

    mail_sync_message_ids = fields.Many2many(
        'mail.sync.message',
        'mail_sync_message_partner_rel',
        'partner_id',
        'message_id',
        string='Inbox Messages',
        help='Synced inbox messages routed to this contact.',
    )
    mail_sync_message_count = fields.Integer(
        string='Inbox Mail Count',
        compute='_compute_mail_sync_message_count',
    )

    def _compute_mail_sync_message_count(self):
        grouped = self.env['mail.sync.message'].read_group(
            [('partner_ids', 'in', self.ids)],
            ['partner_ids'],
            ['partner_ids'],
        )
        counts = {}
        for row in grouped:
            partner = row['partner_ids']
            if partner:
                counts[partner[0]] = row['partner_ids_count']
        for partner in self:
            partner.mail_sync_message_count = counts.get(partner.id, 0)

    def action_view_mail_sync_messages(self):
        """Open inbox messages linked to this contact."""
        self.ensure_one()
        return {
            'type': 'ir.actions.act_window',
            'name': 'Inbox Messages',
            'res_model': 'mail.sync.message',
            'view_mode': 'tree,form',
            'domain': [('partner_ids', 'in', self.ids)],
            'context': {'default_partner_ids': [(6, 0, self.ids)]},
        }
