diff --git a/imports/ui/Codis.jsx b/imports/ui/Codis.jsx index 5fe280f..5e92269 100644 --- a/imports/ui/Codis.jsx +++ b/imports/ui/Codis.jsx @@ -15,9 +15,9 @@ import CreatableSelect from 'react-select/creatable'; // import { BarraNav } from "./BarraNav/BarraNav"; // import InfiniteCalendar from 'react-infinite-calendar'; -import 'react-infinite-calendar/styles.css'; +// import 'react-infinite-calendar/styles.css'; -function generaCodi() { +function generaCodi() {0 return Random.id().slice(0, 5); } diff --git a/imports/ui/Login.tsx b/imports/ui/Login.tsx index d4e8c2c..5ebdd71 100644 --- a/imports/ui/Login.tsx +++ b/imports/ui/Login.tsx @@ -53,7 +53,9 @@ export const Login = () => { }; if (isLogin) { - return
+ return
@@ -66,24 +68,103 @@ export const Login = () => { } return ( - + { + + // let userId, codi; + + try { + + const username = d.get('username'); + const email = d.get('email'); + const tel = d.get('tel'); + const password = d.get('password'); + const password2 = d.get('password2'); + const codi = d.get('codi'); + + if (password !== password2) { + console.error("Passwords do not match!"); + return null; + } + + console.log("username: ", username); + console.log("email: ", email); + console.log("tel: ", tel); + console.log("password: ", password); + console.log("password2: ", password2); + console.log("codi: ", codi); + + const uObj = { + username, + email, + tel, + password, + password2 + }; + + Meteor.callAsync('creaUsuariAmbCodi', uObj, codi); + + // userId = await Accounts.createUser({ + // username, + // email, + // password + // }); + + + // userId && await Roles.addUsersToRolesAsync(userId, [ROLS_GLOBALS.USUARI]); + + // console.log("userId deL NOU USUARI: ", userId); + + + + } catch (err) { + alert(err); + console.error(err); + } + + // try { + // userId && await Meteor.callAsync('usaCodiAmbUsuari', userId, codi); + // navigate('/'); + // } catch (err2) { + // alert(err2); + // console.error(err2); + // } + + + + // Meteor.callAsync('editaOAfigCodi', { + // ...codiGenerat || [], + // codi: codiGenerat, + // ambit: d.get('selAmbit') || "", + // rol: d.get('selRol'), + // act_abs: d.get('activ_abs'), + // act_cond: d.get('activ_cond'), + // periode_validesa_ini: d.get('periode_validesa_ini'), + // periode_validesa_fi: d.get('periode_validesa_fi') + // }) + // .then(() => setAmbitSeleccionat(null)) + // .catch(err => console.error(err)) + // ; + + }} + > - +
- +
- +
- +
- +
- + ev.target.value = (ev.currentTarget.value.length <= 5 && ev.currentTarget.value.toUpperCase()) || ev.currentTarget.value.slice(0, 5) } />
diff --git a/server/main.js b/server/main.js index 9b6925e..7b7b869 100644 --- a/server/main.js +++ b/server/main.js @@ -7,6 +7,7 @@ import { ROLS_GLOBALS, ROLS_DE_POBLE } from '../imports/roles'; import { NecessitatsCollection } from '../imports/api/necessitats'; import { TipusCollection } from '../imports/api/tipus'; import { CodisCollection } from '../imports/api/codis'; +// import { Codis } from '../imports/ui/Codis'; async function insertPoble({ nomPoble, cp, comarca }) { await PoblesCollection.insertAsync({ nomPoble, cp, comarca, createdAt: new Date() }); @@ -425,6 +426,80 @@ Meteor.methods({ } catch (e) { console.error(e); } + + }, + + 'creaUsuariAmbCodi': async function (uObj, codi) { + + const codiObj = await CodisCollection.find({codi}).fetchAsync(); + + + const userId = await Accounts.createUserAsync(uObj); + + const ara = new Date(); + const dataIni = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_ini) : null; + const dataFi = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_fi) : null; + + console.log("codiObj: ", codiObj); + console.log("ara: ", ara); + console.log("dataIni: ", dataIni); + console.log("dataFi: ", dataFi); + console.log(`codiObj.act_cond === "on"`, codiObj.act_cond === "on"); + + try { + console.log(`APLICANT CODI "${codi}" sobre "${userId}".`); // Comprovant si ${Meteor.userId()} és Admin: `, esAdmin); + + if ((codiObj.act_cond==="on" && (ara >= dataIni && ara <= dataFi)) || codiObj.act_abs) { + Roles.addUsersToRolesAsync(userId, codiObj.rol, codiObj.ambit); + } + + } catch (e) { + console.error(e); + } + + }, + + 'usaCodiAmbUsuari': async function (userId, codi) { + // const esAdmin = await Roles.userIsInRoleAsync(Meteor.userId(), "admin"); + const codiObj = await CodisCollection.find({codi}).fetchAsync(); + const ara = new Date(); + const dataIni = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_ini) : null; + const dataFi = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_fi) : null; + + + + console.log("codiObj: ", codiObj); + + try { + console.log(`APLICANT CODI "${codi}" sobre "${userId}".`); // Comprovant si ${Meteor.userId()} és Admin: `, esAdmin); + + if ((codiObj.act_cond==="on" && (ara >= dataIni || ara <= dataFi)) || codiObj.act_abs) { + Roles.addUsersToRolesAsync(userId, codiObj.rol, codiObj.ambit); + } + + + + + + // if (esAdmin && codiObj.codi) { + // return await CodisCollection.upsertAsync( + // { + // _id: codiObj._id + // }, { + // $set: { + // ...codiObj, + // usuari: Meteor.userId(), + // editedAt: new Date() + // } + // } + // ); + // } else { + // throw new Error("El valor del codi no és vàlid"); + // } + } catch (e) { + console.error(e); + } + }, });