#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: ai ts=4 sts=4 et sw=4 nu

from __future__ import (unicode_literals, absolute_import,
                        division, print_function)
import sys
import os
import datetime

from rapidpro_controller import (get_logger, THIS_SERVER,
                                 SEND_EMAIL_ALERTS, SEND_SMS_ALERTS,
                                 log_success, log_failure)
from rapidpro_controller.alerts import alert

logger = get_logger(os.path.basename(__file__))


def main(args):
    default_message = "rapidpro-alert on {srv} at {date}".format(
        srv=THIS_SERVER, date=datetime.datetime.now())
    message = args[0] if len(args) else default_message
    logger.info("sending an alert for: {}".format(message))

    success, email_success, email_recipients, \
        sms_success, sms_sent, sms_failed = alert(message)

    if SEND_EMAIL_ALERTS:
        logger.info("sending alert via e-mail")
        if email_success:
            log_success(logger,
                        msg="sent to {} recipients."
                            .format(len(email_recipients)))
        else:
            log_failure(logger)

    if SEND_SMS_ALERTS:
        logger.info("sending alert via SMS")
        if sms_success:
            log_success(logger,
                        msg="sent to {} recipients.".format(len(sms_sent)))
        else:
            log_failure(logger, msg="{} successful SMS, {} erroneous"
                        .format(len(sms_sent), len(sms_failed)))

    return 0 if success else 1


if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))
