diff --git a/dbs/social_interno.mv.db b/dbs/social_interno.mv.db index 91b85c3..708268a 100644 Binary files a/dbs/social_interno.mv.db and b/dbs/social_interno.mv.db differ diff --git a/server/services/public/register/options.js b/server/services/public/register/options.js new file mode 100644 index 0000000..f731105 --- /dev/null +++ b/server/services/public/register/options.js @@ -0,0 +1 @@ +_out.json(_val.map().set("result", true)) \ No newline at end of file diff --git a/server/services/public/register/post.js b/server/services/public/register/post.js new file mode 100644 index 0000000..3b588e1 --- /dev/null +++ b/server/services/public/register/post.js @@ -0,0 +1,61 @@ + +const name = _req.getString("name") +const surname = _req.getString("surname") +const email = _req.getString("email") +const username = _req.getString("username") +const password = _req.getString("password") +const city_uid = _req.getString("city_uid") + +const userEmailExists = _user.firstByMail(email) +const usernameExists = _user.firstByUser(username) + +const dbCidade = _db.get("cidade", city_uid) + +if (userEmailExists) { + _header.status(409) + _out.json( + _val.map() + .set("result", false) + .set("error", "email-exists") + ) +} else if (usernameExists) { + _header.status(409) + _out.json( + _val.map() + .set("result", false) + .set("error", "username-exists") + ) +} else if (dbCidade == null) { + _header.status(409) + _out.json( + _val.map() + .set("result", false) + .set("error", "city-not-found") + ) +} else { + const dbNetunoGroup = _group.firstByCode("utilizador") + + const user_id = _user.create( + _val.map() + .set("name", name) + .set("mail", email) + .set("user", username) + .set("pass", password) + .set("group_id", dbNetunoGroup.getInt("id")) + ) + + _db.insertIfNotExists( + "pessoa", + _val.map() + .set("nome", name) + .set("apelido", surname) + .set("email", email) + .set("cidade_id", dbCidade.getInt("id")) + .set("utilizador_id", user_id) + ) + + _out.json( + _val.map() + .set("result", true) + ) +} diff --git a/server/setup/001-group.js b/server/setup/001-group.js new file mode 100644 index 0000000..0f9a49f --- /dev/null +++ b/server/setup/001-group.js @@ -0,0 +1,5 @@ +_group.createIfNotExists( + _val.map() + .set("name", "Utilizador Comum") + .set("code", "utilizador") +) diff --git a/server/setup/002-cidade.js b/server/setup/002-cidade.js new file mode 100644 index 0000000..bd00a25 --- /dev/null +++ b/server/setup/002-cidade.js @@ -0,0 +1,32 @@ + + +// ----------------------------------------------------------- +// +// CIDADE +// +// ----------------------------------------------------------- +// +// CODE GENERATED AUTOMATICALLY +// + + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "606091f3-ec3e-42f7-a0b1-ee1eb5f7a3ce") + .set("nome", "Lisboa") +); + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "629c6068-ac2a-427a-969b-a85948ef154f") + .set("nome", "Montijo") +); + +_db.insertIfNotExists( + "cidade", + _val.init() + .set("uid", "277ea7a2-6d16-4a89-8831-851177ef1471") + .set("nome", "Set\u00FAbal") +); diff --git a/server/setup/_schema-form-3-pessoa.js b/server/setup/_schema-form-3-pessoa.js index 6740430..716464a 100644 --- a/server/setup/_schema-form-3-pessoa.js +++ b/server/setup/_schema-form-3-pessoa.js @@ -175,3 +175,33 @@ _form.createComponentIfNotExists( .set("x", 1) .set("y", 1) ) +_form.createComponentIfNotExists( + "cd6f536f-7e70-42cb-9c2d-f733a6c60a64", + _val.init() + .set("colspan", 0) + .set("displayname", "Utilizador") + .set("firebase", "") + .set("group_id", 0) + .set("height", 0) + .set("max", 0) + .set("min", 0) + .set("name", "utilizador_id") + .set("notnull", false) + .set("primarykey", false) + .set("properties", "{\"ALLOW_USER_LOGGED\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"GROUPS\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"},\"GROUPS_MODE\":{\"default\":\"all|exclude|only\",\"type\":\"CHOICE\",\"value\":\"all\"},\"USERS_MODE\":{\"default\":\"all|exclude|only\",\"type\":\"CHOICE\",\"value\":\"all\"},\"USERS\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"}}") + .set("rowspan", 0) + .set("tdheight", 0) + .set("tdwidth", 0) + .set("type", "user") + .set("uid", "08254eb0-76f7-4051-b73a-b7c31709fbee") + .set("user_id", 0) + .set("whenedit", true) + .set("whenexport", true) + .set("whenfilter", true) + .set("whennew", true) + .set("whenresult", true) + .set("whenview", true) + .set("width", 0) + .set("x", 1) + .set("y", 6) +) diff --git a/website/src/pages/Register/index.js b/website/src/pages/Register/index.js index c35ee10..791b4c7 100644 --- a/website/src/pages/Register/index.js +++ b/website/src/pages/Register/index.js @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; -import { Form, Input, Button, Select } from 'antd'; +import { Form, Input, Button, Select, notification } from 'antd'; import _service from '@netuno/service-client'; @@ -29,8 +29,27 @@ export default ()=> { }, []); const onFinish = (values) => { - console.log('Success:', values); + _service({ + method: 'POST', + url: 'public/register', + data: values, + success: (response) => { + if (response.result) { + notification["success"]({ + message: 'Registado', + description: 'Foi registado com sucesso.', + }); + } + }, + fail: (e) => { + console.error('Service Register Error', e); + notification["error"]({ + message: 'Não Registado', + description: 'Não foi possível registar, tente mais tarde.', + }); + } + }); }; const onFinishFailed = (errorInfo) => { @@ -60,6 +79,16 @@ export default ()=> {