# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import models, fields, api


class ScopQuestionnaire(models.Model):
    _name = "scop.questionnaire"
    _description = "Questionnaire"
    _rec_name = 'year'

    partner_id = fields.Many2one(
        comodel_name='res.partner',
        string='Organisme',
        domain=[('is_company', '=', True)],
        ondelete='cascade', index=True)
    id_riga = fields.Integer("ID RIGA")
    year = fields.Char("Année", index=True)
    type_id = fields.Many2one(
        'scop.questionnaire.type',
        string="Type de questionnaire",
        ondelete='restrict', index=True)
    effective_date = fields.Date("Date d'effet du questionnaire")
    staff_count = fields.Integer("Effectif (EF)")
    staff_shareholder_count = fields.Integer("Eff. Sociétaires (ES)")
    staff_average = fields.Integer("Eff. Moyen (EM)")

    # ------------------------------------------------------
    # Override ORM
    # ------------------------------------------------------
    # Création d'un ligne d'effectif
    @api.model_create_multi
    def create(self, vals_list):
        questionnaire = super(ScopQuestionnaire, self).create(vals_list)
        quest_type = self.env.ref('cgscop_partner.questionnaire_type_1')
        if questionnaire.effective_date:
            staff_values = {
                'partner_id': questionnaire.partner_id.id,
                'user_id': self.env.uid,
                'type_entry': 'questionnaire' if questionnaire.type_id != quest_type else 'questionnaire_inscription',
                'effective_date': questionnaire.effective_date,
                'staff_count': questionnaire.staff_count,
                'staff_shareholder_count': questionnaire.staff_shareholder_count,
                'staff_average': questionnaire.staff_average,
                'questionnaire_id': questionnaire.id,
            }
            self.env['scop.partner.staff'].create(staff_values)
        return questionnaire

    # Mise à jour du questionnaire lors de la modification
    @api.multi
    def write(self, vals):
        questionnaire = super(ScopQuestionnaire, self).write(vals)
        quest_type = self.env.ref('cgscop_partner.questionnaire_type_1')
        staff = self.env['scop.partner.staff'].search([
            ('questionnaire_id', '=', self.id)])
        if staff:
            if self.effective_date:
                staff_values = {
                    'partner_id': self.partner_id.id,
                    'user_id': self.env.uid,
                    'type_entry': 'questionnaire' if questionnaire.type_id != quest_type else 'questionnaire_inscription',
                    'effective_date': self.effective_date,
                    'staff_count': self.staff_count,
                    'staff_shareholder_count': self.staff_shareholder_count,
                    'staff_average': self.staff_average,
                }
                staff.write(staff_values)
        return questionnaire


class ScopQuestionnaireType(models.Model):
    _name = "scop.questionnaire.type"
    _description = "Type de Questionnaire"

    name = fields.Char('Type de Questionnaire')