From cc0faba6944d5fc80f3b4d68774f0352c428bc01 Mon Sep 17 00:00:00 2001 From: eduveks Date: Wed, 21 Apr 2021 00:05:23 +0000 Subject: [PATCH] =?UTF-8?q?Sess=C3=A3o=2014?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/_development.json | 26 +++++++--- dbs/social_ma.mv.db | Bin 114688 -> 86016 bytes server/core/social/userPessoa.js | 11 ++++ .../api/communities/follow.options.js | 2 + server/services/api/communities/follow.put.js | 12 +++++ server/services/api/communities/get.js | 24 +++++++++ server/services/api/communities/image.get.js | 10 ++++ server/services/api/communities/options.js | 2 + server/services/test-antiga.js | 3 ++ server/setup/002-cidades.js | 30 +++++++++++ server/setup/003-comunidades.js | 40 ++++++++++++++ website/src/App.js | 7 +++ website/src/pages/Communities/Item/index.js | 34 ++++++++++++ website/src/pages/Communities/Item/index.less | 8 +++ website/src/pages/Communities/index.js | 49 ++++++++++++++++++ website/src/pages/Communities/index.less | 18 +++++++ 16 files changed, 268 insertions(+), 8 deletions(-) create mode 100644 server/core/social/userPessoa.js create mode 100644 server/services/api/communities/follow.options.js create mode 100644 server/services/api/communities/follow.put.js create mode 100644 server/services/api/communities/get.js create mode 100644 server/services/api/communities/image.get.js create mode 100644 server/services/api/communities/options.js create mode 100644 server/services/test-antiga.js create mode 100644 server/setup/002-cidades.js create mode 100644 server/setup/003-comunidades.js create mode 100644 website/src/pages/Communities/Item/index.js create mode 100644 website/src/pages/Communities/Item/index.less create mode 100644 website/src/pages/Communities/index.js create mode 100644 website/src/pages/Communities/index.less diff --git a/config/_development.json b/config/_development.json index 41eccab..62aff48 100644 --- a/config/_development.json +++ b/config/_development.json @@ -31,14 +31,24 @@ "enabled": true } ], - "db": {"default": { - "password": "", - "engine": "h2", - "port": "", - "host": "", - "name": "social_ma", - "username": "" - }}, + "db": { + "default": { + "password": "S3cR3t", + "engine": "pg", + "port": "5432", + "host": "localhost", + "name": "social_ma", + "username": "social_ma" + }, + "antiga": { + "password": "", + "engine": "h2", + "port": "", + "host": "", + "name": "social_ma", + "username": "" + } + }, "cors": [ { "enabled": true, diff --git a/dbs/social_ma.mv.db b/dbs/social_ma.mv.db index 611341e332718bb11355f03b01e1c23d6f6b7cf8..705181f5d57ad167c1e78ed130a49afb0bb6a5eb 100644 GIT binary patch delta 3632 zcmcInYj6|S72bQLwS|rRij^9IEeRZZVq~*VX;*}YZGnwIGR7~gnmDUn$+j%XFJWxb z#L$wYlTIAMhS{`*luk-ZlWAj*0JYN$%?u=^=_8r8X$z!Hpl*RQDdb0)JOKBuWUN(7 zGUZ1!Bb_~a?!D*S^WFQMqg}hQcOAm_F4GC5|LKZK6B4#yI1m$i1H(?nFA}ss_@{;E z^7j?|A7d=pXdPa;It5C)NR|=^TexpDuvzE{j5ry)Eg}p$B}PDU%t^95Mc4*YCeAiI zFc5Rn0nW}41VIM~iQ{dtzDU5yvvklQ*n_sw!0<@lK-3vjJxs3v%W85k3|sxlqdGmn zRzJ2D!??1f)cX!3Wp?82q|7gwNGOZ0guR`C8Y-nmU@teGTh&`dsd?FC_KHcR%6*?Sf<>Q#Fni)Mw%N&g-(B6(9tq1 zgo1R>Mn})aVf*NIVyvx4xf%kl>T#dT8}hlDW8RR|=N%^qud9tg;V_*$`(vH0-iUW+ zGv#shhP|yKrF{1xKu!2UUKCgaN)#%2c8fz|_YPvXfflwjhMPPcLw6Gd+;JAP>%b8?r0o#=o0&kTuCQmntB8N^ZaO zl#abCOX)fDPWzHh!) z*=q!)a_{w5^oxFBNo%m|&vMm`ccA%WIrrvYvKAQczP7APovFu5@v^vO_IS23`D5^_ z*1`q)vf}G*zVS~1&z|Gw4^}__yDJY@6x^7doy~V$K=)$qaRwdnTzUVRU0-{-^35}a z$;Wq<`>y`2B=?#9Yo0)FpWSDzMG5&qakJvf28W?(uL2C96q@3S1xa91RvSQ>&h+me zDpmtn0&|L$hgEy-yNLq^@EXwN{&HHG%mEe9P^3JW11fcfhvIWDT*^D>1vLCfG30_u zupmL?g69Fu+ors=5ZGYeON!12Y#>h|jG!9kom9G!s>?V1T6xe2s&q>JUzML3!G2Hv zMV}5UgjNcDY4l}K!0KnwLhQ?*VOZ34I|DdiOe7BGfp39Q<8R)F>X4;mAzX$QEvHgz zVvCLc{6L8ofG)-5qq~s`)d#E{|D@_m*leYT(eo044p;F9ftZJ>+s1k=Jr{_vRTD!6o6tr;!)*}QoqXUFPYi0;eyG4eQw4NB6718mA zZ(aQ~amWGyn3!uE7&^cQ(jjoXgA+BXh&G>Ac@%(FWe7&AIygSPb+l2AW9R3R6i;z< zTAiT%f|xeb63b}wCOP<2(o;E?IFz{g$+V;fKd+JuPm1KcN{fCnBdesqX>(55)x=EP z>YOB+%rMg#c|*5QYb8jYv1>dLBAbqb799aC*dmuPSL7)%9Y+&7HyNHpA>*VF2tN%j zghR}TgJZRx2riHyUIv?W)4M9cK1+5L>iFjFJEi3VKHaIJ#0}?V5#KnqRIg(q#0c%Cu*1XtBdix+GP%XayrG6uV9$#PIz+FJ+nW_ph-SW zlY&ZgdE$#~oJZ%K33C~u`MC_Kow^4#=E_eIU)SAg)9u`?CY?$%sCs;F zlRa9SJt4)QiIXfiwP1M$BAQNK`)7kCcwX|eYSul<>T8Xsh4^ a7a~|R3D&?Orf(J_l6F4ecO+o}IsXA6(iyA( delta 4965 zcmeHLYitzP6`nh@W3L^1yr&*oVDEP1{BdBs}{pvwIEef)tYLb}RsE@2$oy(>T$>6N9*&yCkjbT{N zE4HMh-8nCBPXkDpKr>lR(E#s4@|7+mpou=9ZB z!`-l1~Lqk(R&0*L4Q~Wj<>eb=y3K)Xh_Z72w zglXTGt^n?Lgzuf^L}>FRBQwc%3`<70BnoRrT9TD>S3Li0#Z1i1(+QZQlrI27nR9;E zTbT9GuX=57cg{U-u06RJ?;R-|JlPHKc`@_y+cA9pQS;_gF?>;Nq36^Ke!P39Nu24& zy9smP%#ZM%6o!^4f zIrHH87*5xiZ$c5x9=MRH_r<@~KHYjb3|cLX0MGdn%cF>jPp7S<54=^C3{IPl)#EYR zT1tS3l_bHhEBx86d*dy3D=@`q1$d?sCUL7Tcx8Niyl%l^>r^d>gSl2k04%Y;Z*P00 z^?m?6j<*M`opqp<2wvE0?WzMUAZWc_2ik~WVV|Sp!JSql2wL&_{Y5bdUIcjP0c*S- z%pgK559|nmBpw>H?h1h!WXSh)sKVME22FJd4u&W_v!=Xd?SXa>Djo@eJpd0kSVLiu z!oxGHN1y}^){!u{g=l!-i1mjs=p-7x^m}{JL0Ap1S<4&14~fRzE3IfF2$NWI<9F_H zmOi*Nt@cLHgg1>BrAF{DXz{=K9!|itOrz`ZI9rb=n9>%e`uA98n?Qu{fA_3)t_d^| z{@gix(Z~<`+c45?m+twEPP@#>{mGF%ecyBC_kZBXTkm#dZ_>&}KzB=_b`ciGs?}8+ zvTM5xNjJ(%gSB3afPWD1|Ew+s7U<8-AoOKbQ$GqPGU~NB!E?GuAvmEM-*Cd&kin)h z137gqgq_rYo=scFnnBA#Rnwdp8IDS2^-b&3v@n54Wk6ExKorGDk_SjKCn`J=$Y6_O zQ^C)1JaD2y&i6=Hmg90Tb zTApNPDAdewvWk2nBj{)(Mif-o*Z8adJXq|W2>{5KCJZAQGLlt6lO)yKf=I(HAu1Wcc!Q7aT`1 zY{6?c1ddN#`2q@#2IqkzZ-e87Y7faAc9s7$+117}YVxHFu~I2RHl14x*_(sW^Cq|) zgpm?%GG*M;Z%_V`4%!_A-^>#ELQ`VpYMA-iFnuG#lZyVYnE90czu zAxELiBi)15>&%RggEgX!dOySC*gLy$tZFh%G+erwcO`({as8- z9nqEb`f~4LEM7|}JIQ-??Z!Haml7ZX>H@ZhuCfO!kOZe8zcdI{M+W+Tmt*D;V)4J= zm<#PcIQ%C#raAN}a7-5qc}1ihn&_w=$8=Se&$t}ZRr73ylRh!WbbWE6B>kUbjtws% aAjgEG5E*L7D3p* { + const dbPessoa = _db.queryFirst( + ` + SELECT * + FROM pessoa + WHERE usuario_id = ? + `, _user.id() + ) + return dbPessoa +} diff --git a/server/services/api/communities/follow.options.js b/server/services/api/communities/follow.options.js new file mode 100644 index 0000000..472b23f --- /dev/null +++ b/server/services/api/communities/follow.options.js @@ -0,0 +1,2 @@ + +_out.json(_val.map().set("result", true)) diff --git a/server/services/api/communities/follow.put.js b/server/services/api/communities/follow.put.js new file mode 100644 index 0000000..d2eed98 --- /dev/null +++ b/server/services/api/communities/follow.put.js @@ -0,0 +1,12 @@ +// _core : social/userPessoa + +const dbComunidade = _db.get('comunidade', _req.getString("uid")) + +_db.insert( + "pessoa_comunidade", + _val.map() + .set("pessoa_id", userPessoa().getInt("id")) + .set("comunidade_id", dbComunidade.getInt("id")) +) + +_out.json(_val.map().set("result", true)) diff --git a/server/services/api/communities/get.js b/server/services/api/communities/get.js new file mode 100644 index 0000000..b6bf4e1 --- /dev/null +++ b/server/services/api/communities/get.js @@ -0,0 +1,24 @@ + +const dbComunidades = _db.query(` + SELECT + uid, + nome, + descricao, + imagem + FROM comunidade + WHERE active = true + ORDER BY nome +`) + +const data = _val.list() + +for (const dbComunidade of dbComunidades) { + data.add( + _val.map() + .set("uid", dbComunidade.getString("uid")) + .set("name", dbComunidade.getString("nome")) + .set("description", dbComunidade.getString("descricao")) + ) +} + +_out.json(data) diff --git a/server/services/api/communities/image.get.js b/server/services/api/communities/image.get.js new file mode 100644 index 0000000..56c3ce3 --- /dev/null +++ b/server/services/api/communities/image.get.js @@ -0,0 +1,10 @@ + +const dbComunidade = _db.get('comunidade', _req.getString("uid")) + +_header.contentTypeJPG() +_header.noCache() + +if (dbComunidade != null && dbComunidade.getString("imagem") != '') { + const storageImage = _storage.database('comunidade', 'imagem', dbComunidade.getString("imagem")) + _out.copy(storageImage.inputStream()) +} diff --git a/server/services/api/communities/options.js b/server/services/api/communities/options.js new file mode 100644 index 0000000..472b23f --- /dev/null +++ b/server/services/api/communities/options.js @@ -0,0 +1,2 @@ + +_out.json(_val.map().set("result", true)) diff --git a/server/services/test-antiga.js b/server/services/test-antiga.js new file mode 100644 index 0000000..18861db --- /dev/null +++ b/server/services/test-antiga.js @@ -0,0 +1,3 @@ +const dbAntiga = _db.init("antiga") + +_out.json(dbAntiga.query("select * from cidade")) \ No newline at end of file diff --git a/server/setup/002-cidades.js b/server/setup/002-cidades.js new file mode 100644 index 0000000..f7157ae --- /dev/null +++ b/server/setup/002-cidades.js @@ -0,0 +1,30 @@ +// ----------------------------------------------------------- +// +// CIDADE +// +// ----------------------------------------------------------- +// +// CODE GENERATED AUTOMATICALLY +// + + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "2b63f424-eadf-4192-903d-0c45fc3b9a8f") + .set("nome", "Natal") +); + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "9b41eb5c-0e08-40e1-8d2b-d519fcf0d2e5") + .set("nome", "S\u00E3o Lu\u00EDs") +); + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "2e758e73-eae6-4eb8-afdd-0107f90d92e2") + .set("nome", "Fortaleza") +); \ No newline at end of file diff --git a/server/setup/003-comunidades.js b/server/setup/003-comunidades.js new file mode 100644 index 0000000..24275ee --- /dev/null +++ b/server/setup/003-comunidades.js @@ -0,0 +1,40 @@ +// ----------------------------------------------------------- +// +// COMUNIDADE +// +// ----------------------------------------------------------- +// +// CODE GENERATED AUTOMATICALLY +// + + +_db.insertIfNotExists( + "comunidade", + _val.init() + .set("uid", "587aa840-51c8-4d65-ba9d-4512d6d3ab9f") + .set("nome", "Paraquedismo") + .set("cidade_id", "2b63f424-eadf-4192-903d-0c45fc3b9a8f") + .set("descricao", "Teste...") + .set("imagem", "1_WznPMI5w0yRUNAS7Nswh-A-T6SHzKFr.jpeg") +); + +_db.insertIfNotExists( + "comunidade", + _val.init() + .set("uid", "660c2dc5-37d6-4b19-8e22-9a106801f477") + .set("nome", "Mergulho") + .set("cidade_id", "2e758e73-eae6-4eb8-afdd-0107f90d92e2") + .set("descricao", "Mergulho em mar aberto e pesca subaqu\u00E1tica.") + .set("imagem", "20180227002111_escolas-de-mergulho-em-sesimbra_portugal-1WgWunkr.jpg") +); + +_db.insertIfNotExists( + "comunidade", + _val.init() + .set("uid", "1a446247-40d8-4960-90b8-8845a2e62686") + .set("nome", "BTT") + .set("cidade_id", "9b41eb5c-0e08-40e1-8d2b-d519fcf0d2e5") + .set("descricao", "

Pedalada de bicicleta no mato, na cidade e na praia!

") + .set("imagem", "btt-chapada-mesa-cvVKi0a6.jpg") +); + diff --git a/website/src/App.js b/website/src/App.js index 388eda3..a68c871 100644 --- a/website/src/App.js +++ b/website/src/App.js @@ -13,6 +13,7 @@ import { import Home from './pages/Home'; import Login from './pages/Login'; import Register from './pages/Register'; +import Communities from './pages/Communities'; import Main from './pages/Main'; import Core from './Core'; @@ -54,6 +55,9 @@ function App() { Principal + + Comunidades + ; } else { menu = <> @@ -85,6 +89,9 @@ function App() { + + +
diff --git a/website/src/pages/Communities/Item/index.js b/website/src/pages/Communities/Item/index.js new file mode 100644 index 0000000..e5a1c86 --- /dev/null +++ b/website/src/pages/Communities/Item/index.js @@ -0,0 +1,34 @@ +import React, { useEffect, useState} from 'react'; + +import _service from '@netuno/service-client'; + +import { Button, notification } from 'antd'; + +import "./index.less"; + +export default ({ data })=> { + const [following, setFollowing] = useState(false); + const onFollow = ()=> { + _service({ + method: 'PUT', + url: "api/communities/follow", + data: {uid: data.uid}, + success: (response) => { + setFollowing(response.json.result); + }, + fail: (e) => { + console.log("Service Error", e); + notification["error"]({ + message: 'Informações', + description: 'Não foi possível carregar a informação.', + }); + } + }); + }; + const servicePrefix = _service.config().prefix; + return ( +
  • +

    { data.name }

    +
  • + ); +}; diff --git a/website/src/pages/Communities/Item/index.less b/website/src/pages/Communities/Item/index.less new file mode 100644 index 0000000..327cda4 --- /dev/null +++ b/website/src/pages/Communities/Item/index.less @@ -0,0 +1,8 @@ + +.communities { + &__list { + list-style: none; + padding: 0; + margin: 0; + } +} diff --git a/website/src/pages/Communities/index.js b/website/src/pages/Communities/index.js new file mode 100644 index 0000000..4106d5b --- /dev/null +++ b/website/src/pages/Communities/index.js @@ -0,0 +1,49 @@ +import React, { useEffect, useState} from 'react'; + +import { Redirect } from "react-router-dom"; + +import _auth from '@netuno/auth-client'; + +import _service from '@netuno/service-client'; + +import { Button, notification } from 'antd'; + +import Item from "./Item"; + +import "./index.less"; + +export default ()=> { + const [loading, setLoading] = useState(false); + const [communities, setCommunities] = useState([]); + if (!_auth.isLogged()) { + return ; + } + useEffect(()=> { + _service({ + url: "api/communities", + success: (response) => { + setCommunities(response.json); + }, + fail: (e) => { + console.log("Service Error", e); + notification["error"]({ + message: 'Informações', + description: 'Não foi possível carregar a informação.', + }); + } + }); + }, []); + const servicePrefix = _service.config().prefix; + return ( +
    +

    Comunidades...

    {servicePrefix} +
      + { communities.length > 0 && communities.map( + (community) => { + return ; + } + ) } +
    +
    + ); +}; diff --git a/website/src/pages/Communities/index.less b/website/src/pages/Communities/index.less new file mode 100644 index 0000000..fff6d62 --- /dev/null +++ b/website/src/pages/Communities/index.less @@ -0,0 +1,18 @@ + +.communities { + &__list { + list-style: none; + padding: 0; + margin: 0; + > li { + background-size: cover; + background-repeat: no-repeat; + background-position: 50% 50%; + height: 300px; + h1 { + background-color: rgba(0, 0, 0, 0.75); + padding: 10px; + } + } + } +}