diff --git a/panels/cadastro_jogos-desktop.xml b/panels/cadastro_jogos-desktop.xml
index 122c6a2..f2846a9 100644
--- a/panels/cadastro_jogos-desktop.xml
+++ b/panels/cadastro_jogos-desktop.xml
@@ -20,7 +20,6 @@
'GENERO',
'ANO_LANCAMENTO',
'PRODUTORA',
- 'NOTA_MEDIA',
'DESCRICAO'
],
camposTable: [
@@ -29,7 +28,6 @@
'GENERO',
'ANO_LANCAMENTO',
'PRODUTORA',
- 'NOTA_MEDIA',
'DESCRICAO'
],
},
@@ -39,7 +37,6 @@
['GENERO', 'cbbGenero', 'String'],
['ANO_LANCAMENTO', 'txfAnoLancamento', 'Number'],
['PRODUTORA', 'txfProdutora', 'String'],
- ['NOTA_MEDIA', 'txfNotaMedia', 'Number'],
['DESCRICAO', 'txaDescricao', 'String']
],
validacaoExclusao: [],
@@ -106,7 +103,7 @@
engine.getField("txfEmail").setValue("");
engine.getField("txfComentario").setValue("");
engine.getField("dcfNota").setValue("");
-
+ engine.getField("dtfDataAvaliacao").setValue(null);
}
function resetPanelGames(){
@@ -119,29 +116,26 @@
engine.getField("txfNotaMedia").setValue("");
}
+ /*
+ * Gerencia apenas os campos de negócio obrigatórios.
+ * Os campos de ID (CODIGO) NÃO entram aqui, pois são
+ * gerados automaticamente e ficariam vazios em uma inclusão.
+ */
function organizeRequiredFields(whichForm, isToRequest) {
var fields = [];
if(whichForm === "jogos"){
- fields = ["txfCodigo", "txfTitulo", "cbbGenero", "txfAnoLancamento", "txfProdutora", "txaDescricao"];
+ fields = ["txfTitulo", "cbbGenero", "txfAnoLancamento", "txfProdutora", "txaDescricao"];
} else if(whichForm === "avaliacoes") {
- fields = ["txfCodigoAvaliacao", "txfCodigoJogo", "txfNome", "txfEmail", "txfComentario", "dcfNota"];
- }
+ fields = ["txfNome", "txfEmail", "txfComentario", "dcfNota"];
+ }
- if(isToRequest) {
- fields.forEach(function(fieldId) {
- var field = engine.getField(fieldId);
- if (field) {
- field.setRequired(true);
- }
- });
- } else {
- fields.forEach(function(fieldId) {
- var field = engine.getField(fieldId);
- if (field) {
- field.setRequired(false);
- }
- });
- }};
+ fields.forEach(function(fieldId) {
+ var field = engine.getField(fieldId);
+ if (field) {
+ field.setRequired(isToRequest);
+ }
+ });
+ }
function showTableReviews(gameId) {
if(!gameId) {
@@ -195,13 +189,37 @@
caption="Comentário" required="true" />
+ required="true">
+
+
+
+
@@ -255,7 +276,11 @@
var sqlBase = "SELECT * FROM TB_MATHEUS_MEDEIROS_AVALIACOES ORDER BY CODIGO";
var id_jogo = engine.getField("dbtJogos").getValue();
if(id_jogo != null){
- sqlBase = "SELECT * FROM TB_MATHEUS_MEDEIROS_AVALIACOES WHERE ID_JOGO = " + id_jogo + " ORDER BY CODIGO";
+ /* Cast numérico para evitar injeção via concatenação */
+ id_jogo = parseInt(id_jogo, 10);
+ if(!isNaN(id_jogo)){
+ sqlBase = "SELECT * FROM TB_MATHEUS_MEDEIROS_AVALIACOES WHERE ID_JOGO = " + id_jogo + " ORDER BY CODIGO";
+ }
}
return sqlBase;
}
@@ -350,7 +375,7 @@
-
+ Lista de jogos
Cadastro de jogos
@@ -382,7 +407,7 @@
-
+
@@ -529,7 +558,7 @@
-
+
@@ -540,19 +569,32 @@
-
-
-
+
+
+
@@ -583,14 +625,14 @@
diff --git a/patches/example.xml b/patches/example.xml
index 100033b..f61a7fb 100644
--- a/patches/example.xml
+++ b/patches/example.xml
@@ -5,13 +5,78 @@
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-
+
+
+
-
+
- CREATE TABLE tabela ()
+
+ CREATE TABLE TB_MATHEUS_MEDEIROS_JOGOS (
+ CODIGO NUMBER(10) NOT NULL,
+ TITULO VARCHAR2(150) NOT NULL,
+ GENERO VARCHAR2(30) NOT NULL,
+ ANO_LANCAMENTO NUMBER(4) NOT NULL,
+ PRODUTORA VARCHAR2(50) NOT NULL,
+ DESCRICAO VARCHAR2(500) NOT NULL,
+ CONSTRAINT PK_MM_JOGOS PRIMARY KEY (CODIGO),
+ CONSTRAINT CK_MM_JOGOS_ANO
+ CHECK (ANO_LANCAMENTO BETWEEN 1970 AND EXTRACT(YEAR FROM SYSDATE)),
+ CHECK (TITULO BETWEEN 3 AND 100)
+);
+
+
+
+
+
+
+
+
+
+ CREATE SEQUENCE TB_MATHEUS_MEDEIROS_JOGOS_SEQ
+ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE TABLE TB_MATHEUS_MEDEIROS_AVALIACOES (
+ CODIGO NUMBER(10) NOT NULL,
+ NOME VARCHAR2(100) NOT NULL,
+ EMAIL VARCHAR2(150) NOT NULL,
+ COMENTARIO VARCHAR2(1000) NOT NULL,
+ NOTA NUMBER(4,2) NOT NULL,
+ DATA_AVALIACAO DATE NOT NULL,
+ ID_JOGO NUMBER(10) NOT NULL,
+ CONSTRAINT PK_MM_AVALIACOES PRIMARY KEY (CODIGO),
+ CONSTRAINT FK_MM_AVAL_JOGO
+ FOREIGN KEY (ID_JOGO)
+ REFERENCES TB_MATHEUS_MEDEIROS_JOGOS (CODIGO),
+ CONSTRAINT CK_MM_AVAL_NOTA
+ CHECK (NOTA BETWEEN 0 AND 10)
+);
+
+
+
+
+
+
+
+
+
+ CREATE SEQUENCE TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ
+ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
+
+
\ No newline at end of file