"""

Revision ID: 0298_add_mou_signed_receipt
Revises: 0297_template_redacted_fix
Create Date: 2019-05-22 16:58:52.929661

"""
from alembic import op
from flask import current_app


revision = '0298_add_mou_signed_receipt'
down_revision = '0297_template_redacted_fix'


templates = [
    {
        'id': '4fd2e43c-309b-4e50-8fb8-1955852d9d71',
        'name': 'MOU Signed By Receipt',
        'type': 'email',
        'subject': 'You’ve accepted the GOV.​UK Notify data sharing and financial agreement',
        'content_lines': [
            'Hi ((signed_by_name)),',
            '',
            '((org_name)) has accepted the GOV.​UK Notify data sharing and financial agreement. ',
            '',
            'If you need another copy of the agreement you can download it here: ((mou_link))',
            '',
            'If you need to add Cabinet Office as a supplier, here are the details you need:',
            '',
            'TO BE ADDED MANUALLY',
            '',
            'Thanks,',
            'GOV.​UK Notify team',
            '',
            'https://www.gov.uk/notify',
        ],
    },

    {
        'id': 'c20206d5-bf03-4002-9a90-37d5032d9e84',
        'name': 'MOU Signed On Behalf Of Receipt - Signed by',
        'type': 'email',
        'subject': 'You’ve accepted the GOV.​UK Notify data sharing and financial agreement',
        'content_lines': [
            'Hi ((signed_by_name)),',
            '',
            '((org_name)) has accepted the GOV.​UK Notify data sharing and financial agreement. We’ve emailed ((on_behalf_of_name)) to let them know too.',
            '',
            'If you need another copy of the agreement you can download it here: ((mou_link))',
            '',
            'If you need to add Cabinet Office as a supplier, here are the details you need:',
            '',
            'TO BE ADDED MANUALLY',
            '',
            'Thanks,',
            'GOV.​UK Notify team',
            '',
            'https://www.gov.uk/notify',
        ],
    },

    {
        'id': '522b6657-5ca5-4368-a294-6b527703bd0b',
        'name': 'MOU Signed On Behalf Of Receipt - On Behalf Of',
        'type': 'email',
        'subject': '((org_name)) has accepted the GOV.​UK Notify data sharing and financial agreement',
        'content_lines': [
            'Hi ((on_behalf_of_name)),',
            '',
            '((signed_by_name)) has accepted the GOV.​UK Notify data sharing and financial agreement on your behalf, for ((org_name)).',
            '',
            'GOV.​UK Notify lets teams in the public sector send emails, text messages and letters. It’s built and run by a team in the Government Digital Service (part of Cabinet Office).',
            '',
            'If you need another copy of the agreement you can download it here: ((mou_link))',
            '',
            'If you need to add Cabinet Office as a supplier, here are the details you need.',
            '',
            'TO BE ADDED MANUALLY',
            '',
            'Thanks,',
            'GOV.​UK Notify team',
            '',
            'https://www.gov.uk/notify',
        ],
    },

    {
        'id': 'd0e66c4c-0c50-43f0-94f5-f85b613202d4',
        'name': 'MOU Signed Notify Team Alert',
        'type': 'email',
        'subject': 'Someone signed an MOU for an org on Notify',
        'content_lines': [
            'What’s up Notifiers,',
            '',
            '((signed_by_name)) just accepted the data sharing and financial agreement for ((org_name)).',
            '',
            'See how ((org_name)) is using Notify here: ((org_dashboard_link))',
        ],
    },
]


def upgrade():
    insert = """
        INSERT INTO {} (id, name, template_type, created_at, content, archived, service_id, subject,
        created_by_id, version, process_type, hidden)
        VALUES ('{}', '{}', '{}', current_timestamp, '{}', False, '{}', '{}', '{}', 1, '{}', false)
    """

    for template in templates:
        for table_name in 'templates', 'templates_history':
            op.execute(
                insert.format(
                    table_name,
                    template['id'],
                    template['name'],
                    template['type'],
                    '\n'.join(template['content_lines']),
                    current_app.config['NOTIFY_SERVICE_ID'],
                    template.get('subject'),
                    current_app.config['NOTIFY_USER_ID'],
                    'normal'
                )
            )

        op.execute(
            """
            INSERT INTO template_redacted
            (
                template_id,
                redact_personalisation,
                updated_at,
                updated_by_id
            ) VALUES ( '{}', false, current_timestamp, '{}' )
            """.format(template['id'], current_app.config['NOTIFY_USER_ID'])
        )


def downgrade():
    for template in templates:
        op.execute("DELETE FROM notifications WHERE template_id = '{}'".format(template['id']))
        op.execute("DELETE FROM notification_history WHERE template_id = '{}'".format(template['id']))
        op.execute("DELETE FROM template_redacted WHERE template_id = '{}'".format(template['id']))
        op.execute("DELETE FROM templates WHERE id = '{}'".format(template['id']))
        op.execute("DELETE FROM templates_history WHERE id = '{}'".format(template['id']))
