| @ -0,0 +1,11 @@ | |||||
| const userPessoa = ()=> { | |||||
| const dbPessoa = _db.queryFirst( | |||||
| ` | |||||
| SELECT * | |||||
| FROM pessoa | |||||
| WHERE usuario_id = ? | |||||
| `, _user.id() | |||||
| ) | |||||
| return dbPessoa | |||||
| } | |||||
| @ -0,0 +1,2 @@ | |||||
| _out.json(_val.map().set("result", true)) | |||||
| @ -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)) | |||||
| @ -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) | |||||
| @ -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()) | |||||
| } | |||||
| @ -0,0 +1,2 @@ | |||||
| _out.json(_val.map().set("result", true)) | |||||
| @ -0,0 +1,3 @@ | |||||
| const dbAntiga = _db.init("antiga") | |||||
| _out.json(dbAntiga.query("select * from cidade")) | |||||
| @ -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") | |||||
| ); | |||||
| @ -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", "<p>Pedalada de bicicleta no mato, na cidade e na praia!</p>") | |||||
| .set("imagem", "btt-chapada-mesa-cvVKi0a6.jpg") | |||||
| ); | |||||
| @ -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 ( | |||||
| <li style={{ backgroundImage: `url(${ servicePrefix }/api/communities/image?uid=${ data.uid })` }}> | |||||
| <h1>{ data.name } <Button type="link" onClick={onFollow}>Seguir</Button></h1> | |||||
| </li> | |||||
| ); | |||||
| }; | |||||
| @ -0,0 +1,8 @@ | |||||
| .communities { | |||||
| &__list { | |||||
| list-style: none; | |||||
| padding: 0; | |||||
| margin: 0; | |||||
| } | |||||
| } | |||||
| @ -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 <Redirect to="/login" />; | |||||
| } | |||||
| 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 ( | |||||
| <div className="communities"> | |||||
| <h1>Comunidades...</h1>{servicePrefix} | |||||
| <ul className="communities__list"> | |||||
| { communities.length > 0 && communities.map( | |||||
| (community) => { | |||||
| return <Item data={ community }/>; | |||||
| } | |||||
| ) } | |||||
| </ul> | |||||
| </div> | |||||
| ); | |||||
| }; | |||||
| @ -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; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||