Home Reference Source Repository

src/modules/process.js

import Check from './check'
import Datasource from './datasource'
import async from 'async'
import Mailer from './mailer'
import Rule from './rules/index'

class Process {
	constructor () {
		this.CK = new Check()
		this.DS = new Datasource()
		this.setMailer()
		this._rule = new Rule([])
		this.finished = false
	}

	setMailer (mailer='') {
		if (!mailer) {
			mailer = new Mailer()
		}
		this.ML = mailer
		this.CK.setMailer(mailer)
	}

	check (done) {
		this.CK.isValid(done)
	}

	run (callback = (err, results) => {}) {
		let that = this
		async.waterfall([
			function (done) { that.readDatasource(done) },
			function (sheet_content, done) {
				let r = that.getRule()
				that.parseRule(r, sheet_content, done)
			}
		], function (err, results) {
			if (!err) {
				that.finished = true
				callback(null, ['-> Processamento finalizado com sucesso.'].join('\n'))
			} else {
				callback(['-> ' + err].join('\n'))
			}
		})
	}

	readDatasource (done) {
		this.DS.readContent(done)
	}

	parseRule (r, sheet_content, done) {
		r.setRows(sheet_content)
		r.setMailer(this.ML)
		r.validate(done)
	}

	setRule (rule) {
		this._rule = rule
	}

	getRule () {
		return this._rule
	}
}

export default Process