#!/usr/bin/env python3
"""Seed Time Sheet V2 demo data — run inside Odoo container."""
import odoo
from datetime import date, timedelta

odoo.tools.config.parse_config(['-d', 'testing'])
registry = odoo.registry('testing')

with registry.cursor() as cr:
    env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})

    group_user = env.ref('jb_timesheet.group_timesheet_user')
    group_manager = env.ref('jb_timesheet.group_timesheet_manager')
    admin = env.ref('base.user_admin')
    admin.sudo().write({'groups_id': [(4, group_user.id), (4, group_manager.id)]})

    employee = env['hr.employee'].search([('user_id', '=', admin.id)], limit=1)
    if not employee:
        employee = env['hr.employee'].create({
            'name': admin.name,
            'user_id': admin.id,
        })
    employee.write({
        'hourly_rate': 1000.0,
        'target_hours': 40.0,
        'monthly_revenue_target': 40000.0,
        'include_in_office_target': True,
    })

    internal = env.ref('jb_timesheet_v2.demo_partner_internal', raise_if_not_found=False)
    wca = env.ref('jb_timesheet_v2.demo_partner_wca', raise_if_not_found=False)
    project_internal = env.ref('jb_timesheet_v2.demo_project_internal_admin', raise_if_not_found=False)
    project_wca = env.ref('jb_timesheet_v2.demo_project_wca_portal', raise_if_not_found=False)
    task_admin = env.ref('jb_timesheet_v2.demo_task_admin', raise_if_not_found=False)
    task_wca = env.ref('jb_timesheet_v2.demo_task_wca_overrun', raise_if_not_found=False)

    if project_internal and not env['account.analytic.line'].search_count([
        ('employee_id', '=', employee.id),
        ('project_id', '=', project_internal.id),
    ]):
        today = date.today()
        entries = [
            {
                'name': 'Weekly planning and admin',
                'date': today - timedelta(days=2),
                'employee_id': employee.id,
                'project_id': project_internal.id,
                'task_id': task_admin.id,
                'time_in': 9.0,
                'time_out': 11.0,
                'unit_amount': 2.0,
                'hourly_rate': 0.0,
                'is_billable': False,
            },
            {
                'name': 'IPW portal development',
                'date': today - timedelta(days=1),
                'employee_id': employee.id,
                'project_id': project_wca.id,
                'task_id': task_wca.id,
                'time_in': 12.0,
                'time_out': 14.0,
                'unit_amount': 2.0,
                'hourly_rate': 1000.0,
                'is_billable': True,
            },
            {
                'name': 'Client meeting and status update',
                'date': today,
                'employee_id': employee.id,
                'project_id': project_wca.id,
                'task_id': task_wca.id,
                'time_in': 10.0,
                'time_out': 11.5,
                'unit_amount': 1.5,
                'hourly_rate': 1000.0,
                'is_billable': True,
            },
        ]
        env['account.analytic.line'].create(entries)

    cr.commit()
    print('Seeded admin employee, groups, and sample timesheet lines.')
