Home Reference Source Repository

src/modules/rules/onRegister.js

import Rules from './index'
import async from 'async'

/**
 * Implementa verificação no participante se já recebeu informações
 * para pagamento, as envia em caso negativo e realiza mudança de
 * status do participante na planilha
 */
class Register extends Rules{

	addActions() {
		this._actions.push('markSubscriberReceivedInstructions')
		this._actions.push('sendInstructions')
	}

	/**
	 * Valida se a linha está com a coluna status em branco e possui e-mail válido
	 * @param {string[]} row - Linha da planilha contendo informações do participante
	 * @return {Boolean}
	 * @public
	 */
	filter (row) {
		// pegadinha com "!" por causa da validação por e-mail
		return (!super.filter(row)) && (row['status'] === '')
	}

	/**
	 * Envia instruções para pagamento
	 * @param {Spreadsheetrow[]} row - linha que será passada para as ações
	 * @param {Function} done2 - callback
	 * @protected
	 */
	sendInstructions (row, done) {
		let that = this,
			data = {
			email : row['e-mail'],
			nome : row['nomecompleto'],
			link_boleto: "https://ww8.banrisul.com.br/brb/link/Brbw2Lhw_Bloqueto_Titulos_Internet.aspx?Origem=EX&CodCedente=0051101408020&Valor=20,00&SeuNumero=645364312&DiaVcto=15&MesVcto=01&AnoVcto=2016&NomeSacado=" + encodeURIComponent(row['nomecompleto']) + '&UF=' + row['estadobrasileiro'] + "&OcultarFormulario=S&Observacoes=Aten%E7%E3o%3A%20Este%20comprovante%20poder%E1%20ser%20solicitado%20no%20CREDENCIAMENTO."
		}
		this.ML.send (data.email, 'Instruções para pagamento da inscrição',
`Olá ${data.nome},

Sua inscrição como participante foi iniciada com sucesso! Clique no link abaixo para acessar o boleto e realizar o pagamento.

${data.link_boleto}

Ele poderá ser feito até 15 de janeiro de 2016 em qualquer agência bancária, lotérica ou através do seu internet banking.

A confirmação da inscrição será enviada assim que recebermos do banco responsável a confirmação de pagamento (o que pode demorar até 5 dias úteis a partir da data de pagamento).

Obrigado!`, function (err, results) {
				that.valid = true
				done(err, 'Registro de: ' + data.email)
		})
	}
	/**
	 * @param {Spreadsheetrow[]} row - linha que será passada para as ações
	 * @param {Function} done2 - callback
	 * @protected
	 */
	markSubscriberReceivedInstructions (row, done) {
		let that = this
		row.status = 'Boleto Enviado'
		return row.save(done)
	}
}

export default Register