From 813533eb5996a322225e1fc363fcd8c7331dc9e5 Mon Sep 17 00:00:00 2001 From: eduveks Date: Wed, 5 May 2021 00:10:51 +0000 Subject: [PATCH] =?UTF-8?q?Sess=C3=A3o=2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/_development.json | 23 +++++++- dbs/social_ma.mv.db | Bin 86016 -> 86016 bytes server/services/jobs/daily-summary.js | 61 +++++++++++++++++++++ server/templates/emails/daily-summary.html | 7 +++ 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 server/services/jobs/daily-summary.js create mode 100644 server/templates/emails/daily-summary.html diff --git a/config/_development.json b/config/_development.json index 62aff48..a0739d1 100644 --- a/config/_development.json +++ b/config/_development.json @@ -1,7 +1,26 @@ { - "cron": {"jobs": []}, + "cron": { + "secret": "VLgL7EJZ4yXPAjce", + "jobs": [ + { + "name": "daily-summary", + "config": "0 0 * * * ?", + "url": "/services/jobs/daily-summary" + } + ] + }, "settings": {"public": {}}, - "smtp": {}, + "smtp": { + "default": { + "enabled": true, + "host": "serua.veks.net", + "port": 465, + "ssl": true, + "from": "academy-test@netuno.org", + "username": "academy-test@netuno.org", + "password": "gDj1pwQ5T#0#" + } + }, "name": "social_ma", "setup": { "schema": { diff --git a/dbs/social_ma.mv.db b/dbs/social_ma.mv.db index 705181f5d57ad167c1e78ed130a49afb0bb6a5eb..20d98f2ce1cdf6b0e80e626a33d980ed4095e87e 100644 GIT binary patch delta 2740 zcmb7GYitx%6rMA?+n0T_w7Wnb+m@w|1?IVXXVI32ijVM+7>tMsyLV=x^hqg*iLn@? z#z+tt!i7*2g-9?lTE=9h{-FwLV!VF%(-XJoO|wk z-~GpO%af#zNQR7skgnC;$w5X~g0V!b|+NkxcZ|&-gCSqpJz-*|Una40p z^R)q&8<^&o<}wVbw5@wZziqRV-`Fy@U}PgR$@7P@@of(IIn(!k@zAQ;_zZ-M(M zmygj0c5{ZWWko&=8tWgtS^$TQjz`ZIH!gOwsmV+GN9@T;Z!ER#B)rw<^Lkc#4g$l# z^8;TRPp*9qV4gAFwiDonv9n_(l;7~AvnPFW%FgoES=oAaR{&NS4P6}o%?9ay1|U!O z_lT8GWI?K$cTbJ|eq|u&3wf#-CRn|-)mYn86?EU16=L*0zRnofeRLsY>uu*2!y#kv z++6_I^*?^7fvNh`^EEJHG@n1714nh&#Wiq7Z@<_NMMmzWY8M3b#?cutrY{@a#-5(6 zzdsgW3(NHH#wy*+_QqHBhOuohs1J_Sz*qXW=F>QG1(&#XR81$Jd7*-+E;#1)|5EL^ zLvV=%-Ec1FWX*J@gbnaysSA80=z$^lAo;Tg@^e8WzZJq8aFFyDK_&abA+oOsD&Qw_ z)^djqTkbSAubTLZp%Ok%MvCEMfIrE23DmQ}BfCmr1}q^Dl|sF{``ywk@|qXQi|Qnk z{`9XQXAe1GhG9u^xD*Zmw32Qw%!Iw<70a9;!=_<>|CF5cLX)c~Fl-GPU8Lv&Sw0zd zv8Pv%>N4m_2lx!oPyEhA&}j#S*qoNEe?{@IAR) z4t`d?Oh(JW$2N^xwk*7kUCVe|QjU+D^}{4q=4|=2#7y;M$_IsoxFAPp`Jkum zX)Pt;P`tehw?%n5)UI_#$%r2+?w9#cM{HBnlwzn;+teH7!=dijYHfW~3iWh#^+rVv z#jQFVC!h(LqA(H#S)=RVnf26v2M?!L_i_s;m1j0UGV z4NkKf+?6|=E|qylXt}jJ!p4avr=>qyL{5{NCku9y3nMPw+ytk&Sv&7vU=V4HHLJP3 z$tFLP;Y4mD4J>t0p{_`>AgW3tZeLv%k@4A(>leA3Y)F4+W3I_Yij04-5tFE8h@3_2 zO*VeC+1O$-bGvN3H@^43*hu_88~m-Y;gFdiZ_S4$>%w;%doCGR0ITyGX~Z0u&3~zz PXv93$WZr^h5#;>^B2@&p delta 2745 zcmb7GYitx%6rMA?TiUgy?XqomrLS$v(k=_k?9A@YY-1@8AJJ&Q7>o#pnLD#Q`lKxc z#klwbNKC}S5H7}IAQ+4oqGgDSm>38sh`cmv3@WLO2}Y2%F%ZGTIy1X=?kXDCAA9b} znRCv)-*?WrcjF${#yzh72AY+(1sls)Ih<@)`_M|YC&9~z;Uq?O53YHwc-zLw+e_~1 ztJ-{;74fVHFf=dWb`26r*KZ_biJ*sAwFcB=?>>mAPwmxNw$(wX3%fs0l!&z}n|IR$O?`Mj>B zuD5`qVDsQL{rT0K0M_c`Z94$Y=sP-=Ld6+Z)_cn7^Ol#l!SvQ9bp_xly{W4Mz^&u% zmjPNde-BqZKMyk5ysy_;-&Y5MzObu?qJp(sm+7l}YJ$!e^TL#tVjJ|qT^~LSoYpq< z1Zeuvp$7m?Yrp?k2eY-Q!*%eJ-ZFeLA70fQS69NY)_!#Wn)QNfwGJrLLL<}Rr1s=U zKYgW4`)D*kC(5nt-5JcDIH+(LI?P8&;`fgX8LCr6c)fDd}A`~hkiUz4Ar#$Hr`zf zRq!RgWU4pbG1W@i?Zv(lsD`0*yaY}Ge1^wMp^^3++UbGmumLafK%;ZPVNV|3>xGKq z2Hv1Q`)kTSi1!(0*pNQ!fqekWaJLs`!h85lQ;gxWhM-S;j?Z~vhNHObthop|aPeil zxD0mESC-(~a`3t+er00Wy#k0uViG;4ol8$&d7O1+i{l< znkx_Ixv6@}jaIJhY@212JZ~=r{HYIa(=2axjt^h*!xWkqtoCV*8r}2n_KC|Z**<*A z3Tt+f5SH7!P+NkHhTGN7Lm= z0BdPhzC7RKiP&Fr3dazcjJd@VRx<#hDuUr``zlF}jI1Oj zavv)5AVZo}CQh1pMj(&KM-(y>&qa|@tMu2Sf25lmfreBDMV?bd)!u<1#sx&E$T+*L zibj4?Bw@+uL+%bw; zaF0{&{qZ9?Q%6q&+y)}qxL~od#bD-M**G$u{x3G<|7U}}J2q@GWqfcR%rIYl_fT^t*eeP{ VBw_^2$gX!Du`yAV;}*=|{tLk+{B-~T diff --git a/server/services/jobs/daily-summary.js b/server/services/jobs/daily-summary.js new file mode 100644 index 0000000..7257018 --- /dev/null +++ b/server/services/jobs/daily-summary.js @@ -0,0 +1,61 @@ + +const dbComunidades = _db.query(` + SELECT + id, + nome + FROM comunidade + WHERE active = true + ORDER BY nome +`) +for (const dbComunidade of dbComunidades) { + const dbPublicacoes = _db.queryFirst(` + SELECT + count(id) AS total + FROM publicacao + WHERE momento > ? + AND comunidade_id = ? + `, _time.localDateTime().minusDays(1), dbComunidade.getInt("id")) + + if (dbPublicacoes.getInt("total") <= 0) { + continue; + } + + const dbPessoas = _db.query(` + SELECT + nome, email + FROM pessoa + INNER JOIN pessoa_comunidade ON pessoa.id = pessoa_comunidade.pessoa_id + WHERE + pessoa_comunidade.comunidade_id = ? + AND pessoa.active = true + `, dbComunidade.getInt("id")) + + for (const dbPessoa of dbPessoas) { + + const smtp = _smtp.init() + + smtp.to = dbPessoa.getString("email") + + smtp.subject = `Plataforma Social - ${dbComunidade.getString("nome")}` + + smtp.text = ` + Olá ${dbPessoa.getString("nome")}, + + Hoje houve ${dbPublicacoes.getInt("total")} novas publicações. + ` + + smtp.html = _template.getOutput( + "emails/daily-summary", + _val.map() + .set("comunidade", dbComunidade.getString("nome")) + .set("pessoa", dbPessoa.getString("nome")) + .set("total", dbPublicacoes.getInt("total")) + ) + + smtp.send() + + _log.info("Pessoa:", dbPessoa) + } +} + +_log.info("Cron Daily Summary E-mail Enviado") diff --git a/server/templates/emails/daily-summary.html b/server/templates/emails/daily-summary.html new file mode 100644 index 0000000..895407a --- /dev/null +++ b/server/templates/emails/daily-summary.html @@ -0,0 +1,7 @@ +
+
+ _{data=comunidade} +

Olá _{req=pessoa},

+ Hoje houve _{data=total} novas publicações. +
+
\ No newline at end of file