diff --git a/.jhipster/Faq.json b/.jhipster/Faq.json new file mode 100644 index 000000000..69b477c43 --- /dev/null +++ b/.jhipster/Faq.json @@ -0,0 +1,32 @@ +{ + "fluentMethods": true, + "relationships": [], + "fields": [ + { + "fieldName": "domanda", + "fieldType": "String", + "fieldValidateRules": [ + "required" + ] + }, + { + "fieldName": "risposta", + "fieldType": "String", + "fieldValidateRules": [ + "required" + ] + }, + { + "fieldName": "isReadable", + "fieldType": "Boolean", + "fieldValidateRules": [ + "required" + ] + } + ], + "changelogDate": "20190723085228", + "dto": "no", + "service": "no", + "entityTableName": "faq", + "pagination": "no" +} diff --git a/src/main/java/it/cnr/si/domain/Faq.java b/src/main/java/it/cnr/si/domain/Faq.java index 4d14bd0b0..b8e3d2158 100644 --- a/src/main/java/it/cnr/si/domain/Faq.java +++ b/src/main/java/it/cnr/si/domain/Faq.java @@ -4,7 +4,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy; import javax.persistence.*; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.io.Serializable; import java.util.Objects; @@ -23,8 +23,12 @@ public class Faq implements Serializable { private Long id; @NotNull - @Column(name = "testo", nullable = false) - private String testo; + @Column(name = "domanda", nullable = false) + private String domanda; + + @NotNull + @Column(name = "risposta", nullable = false) + private String risposta; @NotNull @Column(name = "is_readable", nullable = false) @@ -38,17 +42,30 @@ public void setId(Long id) { this.id = id; } - public String getTesto() { - return testo; + public String getDomanda() { + return domanda; + } + + public Faq domanda(String domanda) { + this.domanda = domanda; + return this; + } + + public void setDomanda(String domanda) { + this.domanda = domanda; + } + + public String getRisposta() { + return risposta; } - public Faq testo(String testo) { - this.testo = testo; + public Faq risposta(String risposta) { + this.risposta = risposta; return this; } - public void setTesto(String testo) { - this.testo = testo; + public void setRisposta(String risposta) { + this.risposta = risposta; } public Boolean isIsReadable() { @@ -88,7 +105,8 @@ public int hashCode() { public String toString() { return "Faq{" + "id=" + id + - ", testo='" + testo + "'" + + ", domanda='" + domanda + "'" + + ", risposta='" + risposta + "'" + ", isReadable='" + isReadable + "'" + '}'; } diff --git a/src/main/java/it/cnr/si/repository/FaqRepository.java b/src/main/java/it/cnr/si/repository/FaqRepository.java index 16b6ee2c4..64a60dca5 100644 --- a/src/main/java/it/cnr/si/repository/FaqRepository.java +++ b/src/main/java/it/cnr/si/repository/FaqRepository.java @@ -1,8 +1,8 @@ package it.cnr.si.repository; import it.cnr.si.domain.Faq; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; + +import org.springframework.data.jpa.repository.*; import java.util.List; @@ -12,7 +12,7 @@ @SuppressWarnings("unused") public interface FaqRepository extends JpaRepository { - @Query("select faq from Faq faq where faq.isReadable = TRUE") public List getReadableFaq(); + } diff --git a/src/main/resources/config/liquibase/cnr/base-faq.csv b/src/main/resources/config/liquibase/cnr/base-faq.csv index 753263618..6f121e924 100644 --- a/src/main/resources/config/liquibase/cnr/base-faq.csv +++ b/src/main/resources/config/liquibase/cnr/base-faq.csv @@ -1 +1 @@ -id;testo;is_readable +id;domanda;risposta;is_readable diff --git a/src/main/resources/config/liquibase/cnr/changelog/20190723085228_added_entity_Faq.xml b/src/main/resources/config/liquibase/cnr/changelog/20190723085228_added_entity_Faq.xml index 6173d9a62..5da1ebcda 100644 --- a/src/main/resources/config/liquibase/cnr/changelog/20190723085228_added_entity_Faq.xml +++ b/src/main/resources/config/liquibase/cnr/changelog/20190723085228_added_entity_Faq.xml @@ -21,7 +21,10 @@ - + + + + diff --git a/src/main/resources/config/liquibase/cnr/new/faq.csv b/src/main/resources/config/liquibase/cnr/new/faq.csv index d7583c2b1..9141c2150 100644 --- a/src/main/resources/config/liquibase/cnr/new/faq.csv +++ b/src/main/resources/config/liquibase/cnr/new/faq.csv @@ -1,4 +1,4 @@ -id;testo;is_readable -1;Prova FAQ 1;TRUE -2;Prova FAQ 2;TRUE -3;Prova FAQ non leggibile;FALSE +id;domanda;risposta;is_readable +1;Domanda 1?;Risposta 1;TRUE +2;Domanda 2?;Risposta 2;TRUE +3;Domanda 3?;Risposta 3;FALSE diff --git a/src/main/webapp/app/entities/faq/faq-delete-dialog.controller.js b/src/main/webapp/app/entities/faq/faq-delete-dialog.controller.js new file mode 100644 index 000000000..7846500d5 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-delete-dialog.controller.js @@ -0,0 +1,28 @@ +(function() { + 'use strict'; + + angular + .module('sprintApp') + .controller('FaqDeleteController',FaqDeleteController); + + FaqDeleteController.$inject = ['$uibModalInstance', 'entity', 'Faq']; + + function FaqDeleteController($uibModalInstance, entity, Faq) { + var vm = this; + + vm.faq = entity; + vm.clear = clear; + vm.confirmDelete = confirmDelete; + + function clear () { + $uibModalInstance.dismiss('cancel'); + } + + function confirmDelete (id) { + Faq.delete({id: id}, + function () { + $uibModalInstance.close(true); + }); + } + } +})(); diff --git a/src/main/webapp/app/entities/faq/faq-delete-dialog.html b/src/main/webapp/app/entities/faq/faq-delete-dialog.html new file mode 100644 index 000000000..f81cb2834 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-delete-dialog.html @@ -0,0 +1,19 @@ +
+ + + +
diff --git a/src/main/webapp/app/entities/faq/faq-detail.controller.js b/src/main/webapp/app/entities/faq/faq-detail.controller.js new file mode 100644 index 000000000..a17e26fc0 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-detail.controller.js @@ -0,0 +1,21 @@ +(function() { + 'use strict'; + + angular + .module('sprintApp') + .controller('FaqDetailController', FaqDetailController); + + FaqDetailController.$inject = ['$scope', '$rootScope', '$stateParams', 'previousState', 'entity', 'Faq']; + + function FaqDetailController($scope, $rootScope, $stateParams, previousState, entity, Faq) { + var vm = this; + + vm.faq = entity; + vm.previousState = previousState.name; + + var unsubscribe = $rootScope.$on('sprintApp:faqUpdate', function(event, result) { + vm.faq = result; + }); + $scope.$on('$destroy', unsubscribe); + } +})(); diff --git a/src/main/webapp/app/entities/faq/faq-detail.html b/src/main/webapp/app/entities/faq/faq-detail.html new file mode 100644 index 000000000..914a1a70d --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-detail.html @@ -0,0 +1,31 @@ + +
+

Faq {{vm.faq.id}}

+
+ +
+
Domanda
+
+ {{vm.faq.domanda}} +
+
Risposta
+
+ {{vm.faq.risposta}} +
+
Is Readable
+
+ {{vm.faq.isReadable}} +
+
+ + + + +
diff --git a/src/main/webapp/app/entities/faq/faq-dialog.controller.js b/src/main/webapp/app/entities/faq/faq-dialog.controller.js new file mode 100644 index 000000000..957d73f40 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-dialog.controller.js @@ -0,0 +1,46 @@ +(function() { + 'use strict'; + + angular + .module('sprintApp') + .controller('FaqDialogController', FaqDialogController); + + FaqDialogController.$inject = ['$timeout', '$scope', '$stateParams', '$uibModalInstance', 'entity', 'Faq']; + + function FaqDialogController ($timeout, $scope, $stateParams, $uibModalInstance, entity, Faq) { + var vm = this; + + vm.faq = entity; + vm.clear = clear; + vm.save = save; + + $timeout(function (){ + angular.element('.form-group:eq(1)>input').focus(); + }); + + function clear () { + $uibModalInstance.dismiss('cancel'); + } + + function save () { + vm.isSaving = true; + if (vm.faq.id !== null) { + Faq.update(vm.faq, onSaveSuccess, onSaveError); + } else { + Faq.save(vm.faq, onSaveSuccess, onSaveError); + } + } + + function onSaveSuccess (result) { + $scope.$emit('sprintApp:faqUpdate', result); + $uibModalInstance.close(result); + vm.isSaving = false; + } + + function onSaveError () { + vm.isSaving = false; + } + + + } +})(); diff --git a/src/main/webapp/app/entities/faq/faq-dialog.html b/src/main/webapp/app/entities/faq/faq-dialog.html new file mode 100644 index 000000000..9ecf00d40 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq-dialog.html @@ -0,0 +1,62 @@ + +
+ + + + +
diff --git a/src/main/webapp/app/entities/faq/faq.controller.js b/src/main/webapp/app/entities/faq/faq.controller.js new file mode 100644 index 000000000..e29d476a1 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq.controller.js @@ -0,0 +1,23 @@ +(function() { + 'use strict'; + + angular + .module('sprintApp') + .controller('FaqController', FaqController); + + FaqController.$inject = ['$scope', '$state', 'Faq']; + + function FaqController ($scope, $state, Faq) { + var vm = this; + + vm.faqs = []; + + loadAll(); + + function loadAll() { + Faq.query(function(result) { + vm.faqs = result; + }); + } + } +})(); diff --git a/src/main/webapp/app/entities/faq/faq.service.js b/src/main/webapp/app/entities/faq/faq.service.js new file mode 100644 index 000000000..a34f09b22 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq.service.js @@ -0,0 +1,26 @@ +(function() { + 'use strict'; + angular + .module('sprintApp') + .factory('Faq', Faq); + + Faq.$inject = ['$resource']; + + function Faq ($resource) { + var resourceUrl = 'api/faqs/:id'; + + return $resource(resourceUrl, {}, { + 'query': { method: 'GET', isArray: true}, + 'get': { + method: 'GET', + transformResponse: function (data) { + if (data) { + data = angular.fromJson(data); + } + return data; + } + }, + 'update': { method:'PUT' } + }); + } +})(); diff --git a/src/main/webapp/app/entities/faq/faq.state.js b/src/main/webapp/app/entities/faq/faq.state.js new file mode 100644 index 000000000..351ffb4cf --- /dev/null +++ b/src/main/webapp/app/entities/faq/faq.state.js @@ -0,0 +1,172 @@ +(function() { + 'use strict'; + + angular + .module('sprintApp') + .config(stateConfig); + + stateConfig.$inject = ['$stateProvider']; + + function stateConfig($stateProvider) { + $stateProvider + .state('faq', { + parent: 'entity', + url: '/faq', + data: { + authorities: ['ROLE_USER'], + pageTitle: 'sprintApp.faq.home.title' + }, + views: { + 'content@': { + templateUrl: 'app/entities/faq/faqs.html', + controller: 'FaqController', + controllerAs: 'vm' + } + }, + resolve: { + translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) { + $translatePartialLoader.addPart('faq'); + $translatePartialLoader.addPart('global'); + return $translate.refresh(); + }] + } + }) + .state('faq-detail', { + parent: 'entity', + url: '/faq/{id}', + data: { + authorities: ['ROLE_USER'], + pageTitle: 'sprintApp.faq.detail.title' + }, + views: { + 'content@': { + templateUrl: 'app/entities/faq/faq-detail.html', + controller: 'FaqDetailController', + controllerAs: 'vm' + } + }, + resolve: { + translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) { + $translatePartialLoader.addPart('faq'); + return $translate.refresh(); + }], + entity: ['$stateParams', 'Faq', function($stateParams, Faq) { + return Faq.get({id : $stateParams.id}).$promise; + }], + previousState: ["$state", function ($state) { + var currentStateData = { + name: $state.current.name || 'faq', + params: $state.params, + url: $state.href($state.current.name, $state.params) + }; + return currentStateData; + }] + } + }) + .state('faq-detail.edit', { + parent: 'faq-detail', + url: '/detail/edit', + data: { + authorities: ['ROLE_USER'] + }, + onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) { + $uibModal.open({ + templateUrl: 'app/entities/faq/faq-dialog.html', + controller: 'FaqDialogController', + controllerAs: 'vm', + backdrop: 'static', + size: 'lg', + resolve: { + entity: ['Faq', function(Faq) { + return Faq.get({id : $stateParams.id}).$promise; + }] + } + }).result.then(function() { + $state.go('^', {}, { reload: false }); + }, function() { + $state.go('^'); + }); + }] + }) + .state('faq.new', { + parent: 'faq', + url: '/new', + data: { + authorities: ['ROLE_USER'] + }, + onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) { + $uibModal.open({ + templateUrl: 'app/entities/faq/faq-dialog.html', + controller: 'FaqDialogController', + controllerAs: 'vm', + backdrop: 'static', + size: 'lg', + resolve: { + entity: function () { + return { + domanda: null, + risposta: null, + isReadable: false, + id: null + }; + } + } + }).result.then(function() { + $state.go('faq', null, { reload: 'faq' }); + }, function() { + $state.go('faq'); + }); + }] + }) + .state('faq.edit', { + parent: 'faq', + url: '/{id}/edit', + data: { + authorities: ['ROLE_USER'] + }, + onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) { + $uibModal.open({ + templateUrl: 'app/entities/faq/faq-dialog.html', + controller: 'FaqDialogController', + controllerAs: 'vm', + backdrop: 'static', + size: 'lg', + resolve: { + entity: ['Faq', function(Faq) { + return Faq.get({id : $stateParams.id}).$promise; + }] + } + }).result.then(function() { + $state.go('faq', null, { reload: 'faq' }); + }, function() { + $state.go('^'); + }); + }] + }) + .state('faq.delete', { + parent: 'faq', + url: '/{id}/delete', + data: { + authorities: ['ROLE_USER'] + }, + onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) { + $uibModal.open({ + templateUrl: 'app/entities/faq/faq-delete-dialog.html', + controller: 'FaqDeleteController', + controllerAs: 'vm', + size: 'md', + resolve: { + entity: ['Faq', function(Faq) { + return Faq.get({id : $stateParams.id}).$promise; + }] + } + }).result.then(function() { + $state.go('faq', null, { reload: 'faq' }); + }, function() { + $state.go('^'); + }); + }] + }); + } + +})(); diff --git a/src/main/webapp/app/entities/faq/faqs.html b/src/main/webapp/app/entities/faq/faqs.html new file mode 100644 index 000000000..c887c1b93 --- /dev/null +++ b/src/main/webapp/app/entities/faq/faqs.html @@ -0,0 +1,60 @@ +
+

Faqs

+ +
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
IDDomandaRispostaIs Readable
{{faq.id}}{{faq.domanda}}{{faq.risposta}}{{faq.isReadable}} +
+ + + +
+
+
+
diff --git a/src/main/webapp/app/pages/manualistica/manualistica.html b/src/main/webapp/app/pages/manualistica/manualistica.html index f46820775..73e97b8b1 100644 --- a/src/main/webapp/app/pages/manualistica/manualistica.html +++ b/src/main/webapp/app/pages/manualistica/manualistica.html @@ -1,7 +1,6 @@
-
-

Manualistica

+

Manualistica

-

Faq

+

Faq

  • - {{faq.testo}} + {{faq.domanda}}
    + {{faq.risposta}}
  • -
-
-
\ No newline at end of file diff --git a/src/main/webapp/i18n/en/faq.json b/src/main/webapp/i18n/en/faq.json new file mode 100644 index 000000000..9687a576b --- /dev/null +++ b/src/main/webapp/i18n/en/faq.json @@ -0,0 +1,24 @@ +{ + "sprintApp": { + "faq" : { + "home": { + "title": "Faqs", + "createLabel": "Create a new Faq", + "createOrEditLabel": "Create or edit a Faq", + "search": "Search for Faq" + }, + "created": "A new Faq is created with identifier {{ param }}", + "updated": "A Faq is updated with identifier {{ param }}", + "deleted": "A Faq is deleted with identifier {{ param }}", + "delete": { + "question": "Are you sure you want to delete Faq {{ id }}?" + }, + "detail": { + "title": "Faq" + }, + "domanda": "Domanda", + "risposta": "Risposta", + "isReadable": "Is Readable" + } + } +} diff --git a/src/main/webapp/i18n/it/faq.json b/src/main/webapp/i18n/it/faq.json new file mode 100644 index 000000000..1d7816957 --- /dev/null +++ b/src/main/webapp/i18n/it/faq.json @@ -0,0 +1,24 @@ +{ + "sprintApp": { + "faq" : { + "home": { + "title": "Faqs", + "createLabel": "Genera un nuovo Faq", + "createOrEditLabel": "Genera o modifica un Faq", + "search": "Cerca Faq" + }, + "created": "È stato generato un nuovo Faq con identificatore { param }}", + "updated": "È stato aggiornato Faq identificato da {{ param }}", + "deleted": "È stato eliminato Faq con identificatore {{ param }}", + "delete": { + "question": "Sei sicuro di volere eliminare Faq {{ id }}?" + }, + "detail": { + "title": "Faq" + }, + "domanda": "Domanda", + "risposta": "Risposta", + "isReadable": "Is Readable" + } + } +} diff --git a/src/test/java/it/cnr/si/web/rest/FaqResourceIntTest.java b/src/test/java/it/cnr/si/web/rest/FaqResourceIntTest.java index a57bd30d1..29695dcb8 100644 --- a/src/test/java/it/cnr/si/web/rest/FaqResourceIntTest.java +++ b/src/test/java/it/cnr/si/web/rest/FaqResourceIntTest.java @@ -37,8 +37,10 @@ @RunWith(SpringRunner.class) @SpringBootTest(classes = SprintApp.class) public class FaqResourceIntTest { - private static final String DEFAULT_TESTO = "AAAAA"; - private static final String UPDATED_TESTO = "BBBBB"; + private static final String DEFAULT_DOMANDA = "AAAAA"; + private static final String UPDATED_DOMANDA = "BBBBB"; + private static final String DEFAULT_RISPOSTA = "AAAAA"; + private static final String UPDATED_RISPOSTA = "BBBBB"; private static final Boolean DEFAULT_IS_READABLE = false; private static final Boolean UPDATED_IS_READABLE = true; @@ -78,7 +80,8 @@ public void setup() { public static Faq createEntity(EntityManager em) { Faq faq = new Faq(); faq = new Faq() - .testo(DEFAULT_TESTO) + .domanda(DEFAULT_DOMANDA) + .risposta(DEFAULT_RISPOSTA) .isReadable(DEFAULT_IS_READABLE); return faq; } @@ -104,16 +107,35 @@ public void createFaq() throws Exception { List faqs = faqRepository.findAll(); assertThat(faqs).hasSize(databaseSizeBeforeCreate + 1); Faq testFaq = faqs.get(faqs.size() - 1); - assertThat(testFaq.getTesto()).isEqualTo(DEFAULT_TESTO); + assertThat(testFaq.getDomanda()).isEqualTo(DEFAULT_DOMANDA); + assertThat(testFaq.getRisposta()).isEqualTo(DEFAULT_RISPOSTA); assertThat(testFaq.isIsReadable()).isEqualTo(DEFAULT_IS_READABLE); } @Test @Transactional - public void checkTestoIsRequired() throws Exception { + public void checkDomandaIsRequired() throws Exception { int databaseSizeBeforeTest = faqRepository.findAll().size(); // set the field null - faq.setTesto(null); + faq.setDomanda(null); + + // Create the Faq, which fails. + + restFaqMockMvc.perform(post("/api/faqs") + .contentType(TestUtil.APPLICATION_JSON_UTF8) + .content(TestUtil.convertObjectToJsonBytes(faq))) + .andExpect(status().isBadRequest()); + + List faqs = faqRepository.findAll(); + assertThat(faqs).hasSize(databaseSizeBeforeTest); + } + + @Test + @Transactional + public void checkRispostaIsRequired() throws Exception { + int databaseSizeBeforeTest = faqRepository.findAll().size(); + // set the field null + faq.setRisposta(null); // Create the Faq, which fails. @@ -155,7 +177,8 @@ public void getAllFaqs() throws Exception { .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.[*].id").value(hasItem(faq.getId().intValue()))) - .andExpect(jsonPath("$.[*].testo").value(hasItem(DEFAULT_TESTO.toString()))) + .andExpect(jsonPath("$.[*].domanda").value(hasItem(DEFAULT_DOMANDA.toString()))) + .andExpect(jsonPath("$.[*].risposta").value(hasItem(DEFAULT_RISPOSTA.toString()))) .andExpect(jsonPath("$.[*].isReadable").value(hasItem(DEFAULT_IS_READABLE.booleanValue()))); } @@ -170,7 +193,8 @@ public void getFaq() throws Exception { .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.id").value(faq.getId().intValue())) - .andExpect(jsonPath("$.testo").value(DEFAULT_TESTO.toString())) + .andExpect(jsonPath("$.domanda").value(DEFAULT_DOMANDA.toString())) + .andExpect(jsonPath("$.risposta").value(DEFAULT_RISPOSTA.toString())) .andExpect(jsonPath("$.isReadable").value(DEFAULT_IS_READABLE.booleanValue())); } @@ -192,7 +216,8 @@ public void updateFaq() throws Exception { // Update the faq Faq updatedFaq = faqRepository.findOne(faq.getId()); updatedFaq - .testo(UPDATED_TESTO) + .domanda(UPDATED_DOMANDA) + .risposta(UPDATED_RISPOSTA) .isReadable(UPDATED_IS_READABLE); restFaqMockMvc.perform(put("/api/faqs") @@ -204,7 +229,8 @@ public void updateFaq() throws Exception { List faqs = faqRepository.findAll(); assertThat(faqs).hasSize(databaseSizeBeforeUpdate); Faq testFaq = faqs.get(faqs.size() - 1); - assertThat(testFaq.getTesto()).isEqualTo(UPDATED_TESTO); + assertThat(testFaq.getDomanda()).isEqualTo(UPDATED_DOMANDA); + assertThat(testFaq.getRisposta()).isEqualTo(UPDATED_RISPOSTA); assertThat(testFaq.isIsReadable()).isEqualTo(UPDATED_IS_READABLE); }