frameworkModule
    .factory('TodoListDataModel', ['WidgetDataModel', 'region', function (WidgetDataModel, region) {
        function TodoListDataModel() {
        }

        var getDate = function (days) {
            var today = new Date();
            today.setHours(0);
            today.setMinutes(0);
            today.setSeconds(0);
            today.setMilliseconds(0);

            if (_.isNumber(days)) {
                today.setDate(today.getDate() + days);
            }

            return today;
        };

        TodoListDataModel.prototype = Object.create(WidgetDataModel.prototype);
        TodoListDataModel.prototype.init = function () {
            var dataModelOptions = this.dataModelOptions;

            // TODO: Dashboard Demo for Edmond
            this.items = region === 'zh-CN'
                ? [{ content: "[事项提醒]xx银行股份有限公司总行 稽查结果处理", deadline: getDate(25) },
                { content: "[事项提醒]xx银行股份有限公司总行 稽查结果告知", deadline: getDate(20) },
                { content: "[事项提醒]xx银行股份有限公司总行 税务检查实施", deadline: getDate(10) },
                { content: "[事项提醒]xx银行股份有限公司总行 税务检查通知", deadline: getDate(5) }]
                : [{ content: "[Overdue Reminder]Company E 2017-8 Import TrailBalance", deadline: getDate() },
                { content: "[Overdue Reminder]Company E 2017-8 Import Financial Data", deadline: getDate() },
                { content: "[Review Reminder]Company A VAT Tax Return 2017-8 is rejected", deadline: getDate(-1) },
                { content: "[Exception Alert]Company B 2017-8 Exception In Import Voucher", deadline: getDate(-5) }];

            this.updateScope(this.items);
        };

        TodoListDataModel.prototype.destroy = function () {
            WidgetDataModel.prototype.destroy.call(this);
        };

        return TodoListDataModel;
    }])
    .factory('ChartConfigDataModel', ['WidgetDataModel', function (WidgetDataModel) {
        function ChartConfigDataModel() {
        }

        ChartConfigDataModel.prototype = Object.create(WidgetDataModel.prototype);
        ChartConfigDataModel.prototype.init = function () {
            var dataModelOptions = this.dataModelOptions;
            this.chartConfig = (dataModelOptions && dataModelOptions.chartConfig) ? dataModelOptions.chartConfig : {};
            this.updateScope(this.chartConfig);
        };

        ChartConfigDataModel.prototype.destroy = function () {
            WidgetDataModel.prototype.destroy.call(this);
        };

        return ChartConfigDataModel;
    }]);