From 5a7a10158f9d49f74f58615bbcc5ee34fdae84c2 Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 10:35:09 -0300 Subject: [PATCH 01/69] feat: Add CreateForm view and route #43 --- frontend/eventsync_front/src/router/index.ts | 5 +++++ .../eventsync_front/src/views/CreateForm.vue | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 frontend/eventsync_front/src/views/CreateForm.vue diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 1c2055d..7454eac 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -15,6 +15,11 @@ const router = createRouter({ name: 'create-event', component: () => import('../views/CreateEventPage.vue') }, + { + path: '/create-form', + name: 'create-form', + component: () => import('../views/CreateForm.vue') + }, { path: '/about', name: 'about', diff --git a/frontend/eventsync_front/src/views/CreateForm.vue b/frontend/eventsync_front/src/views/CreateForm.vue new file mode 100644 index 0000000..9ae656f --- /dev/null +++ b/frontend/eventsync_front/src/views/CreateForm.vue @@ -0,0 +1,16 @@ + + + + \ No newline at end of file From 9e4c791d44dd8b3f20857f4b9a6fc15f2a511a56 Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 12:13:48 -0300 Subject: [PATCH 02/69] feat: Add EventForm component for creating forms #43 --- .../src/components/EventForm.vue | 30 +++++++++++++++++++ .../eventsync_front/src/views/CreateForm.vue | 22 ++++++++------ 2 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 frontend/eventsync_front/src/components/EventForm.vue diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue new file mode 100644 index 0000000..ac0e2cb --- /dev/null +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/frontend/eventsync_front/src/views/CreateForm.vue b/frontend/eventsync_front/src/views/CreateForm.vue index 9ae656f..a73c400 100644 --- a/frontend/eventsync_front/src/views/CreateForm.vue +++ b/frontend/eventsync_front/src/views/CreateForm.vue @@ -1,16 +1,20 @@ + + +
+ +
+ \ No newline at end of file From c247bddff340337dab35f96970abfe9e1d1dc4b4 Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 12:36:19 -0300 Subject: [PATCH 03/69] feat: add of insert questions #43 --- .../src/components/EventForm.vue | 37 ++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue index ac0e2cb..d7b8118 100644 --- a/frontend/eventsync_front/src/components/EventForm.vue +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -2,9 +2,22 @@ - + -

Criar Formulário

+

Criar formulário

+ +
+ + +
+ + Adicionar Pergunta + Salvar Formulário
@@ -16,14 +29,28 @@ From ba1298ed6793b88f205d39f9450aa69ba0b47c0d Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 13:41:01 -0300 Subject: [PATCH 04/69] feat: add question deletion and changed style #43 --- .../src/components/EventForm.vue | 56 +++++++++++++++---- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue index d7b8118..8b3c903 100644 --- a/frontend/eventsync_front/src/components/EventForm.vue +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -7,16 +7,28 @@

Criar formulário

- - + + + Pergunta {{ index + 1 }} + + mdi-delete + + + + + + + + +
- - Adicionar Pergunta + + Adicionar Pergunta Salvar Formulário @@ -37,6 +49,10 @@ const addQuestion = () => { questions.value.push({ text: '', type: 'text', options: [], optionList: [] }) } +const removeQuestion = (index) => { + questions.value.splice(index, 1) +} + - \ No newline at end of file + +.question-card { + width: 100%; + margin-top: 16px; +} + +.mt-4 { + margin-top: 16px; +} + +.mb-4 { + margin-bottom: 16px; +} + +.ml-2 { + color: red; +} + + \ No newline at end of file From 2529484d471db15408fca1f9176a2dda53833e05 Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 15:40:28 -0300 Subject: [PATCH 05/69] feat: Add question deletion functionality and update style #43 --- .../src/components/EventForm.vue | 59 +++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue index 8b3c903..f5daf07 100644 --- a/frontend/eventsync_front/src/components/EventForm.vue +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -7,23 +7,59 @@

Criar formulário

- + - Pergunta {{ index + 1 }} + + mdi-delete + + +
+ + + Adicionar Opção + +
+ + + + mdi-delete + +
+ +
+
+
@@ -43,16 +79,29 @@ import FooterVue from '../components/Footer.vue' import { ref } from 'vue' -const questions = ref([{ text: '', type: 'text', options: [], optionList: [] }]) +const questions = ref([{ text: '', type: 'Discursiva', options: [], optionList: [] }]) const addQuestion = () => { - questions.value.push({ text: '', type: 'text', options: [], optionList: [] }) + questions.value.push({ text: '', type: 'Discursiva', options: [], optionList: [] }) } const removeQuestion = (index) => { questions.value.splice(index, 1) } +const addOption = (index) => { + if (questions.value[index].optionInput.trim()) { + questions.value[index].optionList.push(questions.value[index].optionInput.trim()) + questions.value[index].optionInput = '' + } else { + alert('Digite uma opção válida') + } +} + +const removeOption = (questionIndex, optionIndex) => { + questions.value[questionIndex].optionList.splice(optionIndex, 1) +} + \ No newline at end of file From 408defe90f7090767f3e80a5f78c51e87e3d3e92 Mon Sep 17 00:00:00 2001 From: DayXL Date: Wed, 24 Jul 2024 16:55:17 -0300 Subject: [PATCH 07/69] feat: reordering functionality and improve style #43 --- .../src/components/EventForm.vue | 169 ++++++------------ 1 file changed, 54 insertions(+), 115 deletions(-) diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue index 36fc28a..3474f02 100644 --- a/frontend/eventsync_front/src/components/EventForm.vue +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -1,125 +1,76 @@ \ No newline at end of file + From c6c13a9860156ec015545cc3e8a42be788dddeb3 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 30 Jul 2024 21:17:16 -0300 Subject: [PATCH 08/69] :sparkles:feat: theme room router #42 --- frontend/eventsync_front/src/components/Home.vue | 1 + frontend/eventsync_front/src/router/index.ts | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/frontend/eventsync_front/src/components/Home.vue b/frontend/eventsync_front/src/components/Home.vue index 21d655c..5644cc5 100644 --- a/frontend/eventsync_front/src/components/Home.vue +++ b/frontend/eventsync_front/src/components/Home.vue @@ -5,6 +5,7 @@ + Ver mais Eventos
diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 7454eac..51d548f 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -27,6 +27,11 @@ const router = createRouter({ // this generates a separate chunk (About.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import('../views/AboutView.vue') + }, + { + path: '/events/:id/theme-room', + name: 'theme-room', + component: () => import('../views/ThemeRoomView.vue') } ] }) From cdb271fb00f318065e375973ac4829637216fba8 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 30 Jul 2024 21:17:33 -0300 Subject: [PATCH 09/69] :sparkles:feat: theme room page and view #42 --- .../src/components/ThemeRoom.vue | 31 +++++++++++++++++++ .../src/views/ThemeRoomView.vue | 20 ++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 frontend/eventsync_front/src/components/ThemeRoom.vue create mode 100644 frontend/eventsync_front/src/views/ThemeRoomView.vue diff --git a/frontend/eventsync_front/src/components/ThemeRoom.vue b/frontend/eventsync_front/src/components/ThemeRoom.vue new file mode 100644 index 0000000..dcd7f93 --- /dev/null +++ b/frontend/eventsync_front/src/components/ThemeRoom.vue @@ -0,0 +1,31 @@ + + + + \ No newline at end of file diff --git a/frontend/eventsync_front/src/views/ThemeRoomView.vue b/frontend/eventsync_front/src/views/ThemeRoomView.vue new file mode 100644 index 0000000..3809f9f --- /dev/null +++ b/frontend/eventsync_front/src/views/ThemeRoomView.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file From 3ac8395734a2c017d20f6cbe4c191f71d213ce01 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 30 Jul 2024 21:18:30 -0300 Subject: [PATCH 10/69] :test: test page #42 --- .../src/tests/ThemeRoom.test.ts | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 frontend/eventsync_front/src/tests/ThemeRoom.test.ts diff --git a/frontend/eventsync_front/src/tests/ThemeRoom.test.ts b/frontend/eventsync_front/src/tests/ThemeRoom.test.ts new file mode 100644 index 0000000..c5ebd50 --- /dev/null +++ b/frontend/eventsync_front/src/tests/ThemeRoom.test.ts @@ -0,0 +1,50 @@ +import { mount } from "@vue/test-utils"; +import { describe, it, expect } from "vitest"; +import ThemeRoom from "@/components/ThemeRoom.vue"; + +describe("ThemeRoom.vue", () => { + const wrapper = mount(ThemeRoom); + + it("renders correctly", () => { + expect(wrapper.html()).toMatchSnapshot(); + }); + it('contains the event title', () => { + const title = wrapper.find('h1'); + expect(title.exists()).toBe(true); + expect(title.text()).toBe('Evento: Nome do Evento'); + }); + + it('contains the form title', () => { + const formTitle = wrapper.find('h1.text-center'); + expect(formTitle.exists()).toBe(true); + expect(formTitle.text()).toBe('Criar sala temática.'); + }); + + it('contains all form fields', () => { + const labels = [ + 'Local da sala', + 'Nome da sala', + 'Descrição', + 'Público Alvo', + 'Data', + 'Horário', + 'Número Min. de Participantes', + 'Número Máx. de Participantes' + ]; + + labels.forEach(label => { + expect(wrapper.find(`input[label="${label}"]`).exists()) + }); + }); + + it('contains create and back buttons', () => { + const createButton = wrapper.find('v-btn[color="primary"]'); + const backButton = wrapper.find('v-btn[color="secondary"]'); + + expect(createButton.exists()).toBe(true); + expect(createButton.text()).toBe('Criar'); + + expect(backButton.exists()).toBe(true); + expect(backButton.text()).toBe('Voltar'); + }); +}) \ No newline at end of file From 27ac422f1cc21aa97a67dbf76d29d853f457b14e Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 30 Jul 2024 21:18:50 -0300 Subject: [PATCH 11/69] :test: snap test #42 --- .../src/tests/__snapshots__/Home.test.ts.snap | 9 +++---- .../tests/__snapshots__/NavBar.test.ts.snap | 8 +++---- .../__snapshots__/ThemeRoom.test.ts.snap | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 frontend/eventsync_front/src/tests/__snapshots__/ThemeRoom.test.ts.snap diff --git a/frontend/eventsync_front/src/tests/__snapshots__/Home.test.ts.snap b/frontend/eventsync_front/src/tests/__snapshots__/Home.test.ts.snap index 9fc50eb..4ffcf02 100644 --- a/frontend/eventsync_front/src/tests/__snapshots__/Home.test.ts.snap +++ b/frontend/eventsync_front/src/tests/__snapshots__/Home.test.ts.snap @@ -10,14 +10,14 @@ exports[`Home.vue > renders correctly 1`] = ` - + - + - - Crie seu evento + + Crie seu evento Acesse sua conta Cadastre-se @@ -169,6 +169,7 @@ exports[`Home.vue > renders correctly 1`] = ` + Ver mais Eventos diff --git a/frontend/eventsync_front/src/tests/__snapshots__/NavBar.test.ts.snap b/frontend/eventsync_front/src/tests/__snapshots__/NavBar.test.ts.snap index 2ccf933..68a1418 100644 --- a/frontend/eventsync_front/src/tests/__snapshots__/NavBar.test.ts.snap +++ b/frontend/eventsync_front/src/tests/__snapshots__/NavBar.test.ts.snap @@ -9,14 +9,14 @@ exports[`NavBar.vue > renders correctly 1`] = ` - + - + - - Crie seu evento + + Crie seu evento Acesse sua conta Cadastre-se diff --git a/frontend/eventsync_front/src/tests/__snapshots__/ThemeRoom.test.ts.snap b/frontend/eventsync_front/src/tests/__snapshots__/ThemeRoom.test.ts.snap new file mode 100644 index 0000000..118f4ef --- /dev/null +++ b/frontend/eventsync_front/src/tests/__snapshots__/ThemeRoom.test.ts.snap @@ -0,0 +1,24 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ThemeRoom.vue > renders correctly 1`] = ` +" + +

Evento: Nome do Evento

+

Criar sala temática.

+ + + + + + + + + + + Criar + Voltar + + +
+
" +`; From a4e919f59cd13334822952dd9163f49ea80107bc Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 4 Aug 2024 15:23:56 -0300 Subject: [PATCH 12/69] feat: init page theme room --- .../src/components/ThemeRoom.vue | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom.vue b/frontend/eventsync_front/src/components/ThemeRoom.vue index dcd7f93..4f9ed0f 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom.vue @@ -3,27 +3,45 @@

Evento: Nome do Evento

Criar sala temática.

- - - - - - - - - - - Criar - Voltar - - + + + + + + + + + + + + + Criar + Voltar + +
- \ No newline at end of file From d342e7492011a907e41a97f6a09d54a6b7323300 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 12 Aug 2024 21:05:20 -0300 Subject: [PATCH 19/69] fix: fixing router theme room #42 --- frontend/eventsync_front/src/router/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 561b6ef..46e30a5 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -35,7 +35,6 @@ const router = createRouter({ component: SponsorsView }, { - path: '/events/:id/theme-room', name: 'theme-room', component: () => import('../views/ThemeRoomView.vue') From 9d77e032254e35927cd799842f06a84f3d0dae2e Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 12 Aug 2024 21:00:45 -0300 Subject: [PATCH 20/69] fix: models #42 --- backend/eventsync_api/core/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/eventsync_api/core/models.py b/backend/eventsync_api/core/models.py index 99c5747..24f70e5 100644 --- a/backend/eventsync_api/core/models.py +++ b/backend/eventsync_api/core/models.py @@ -147,3 +147,4 @@ class Meta: def __str__(self): return f"{self.sponsor.name} - {self.event.name}" + From b04e618d4f3b56da018890fb99b9b3b3aa896d21 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 12 Aug 2024 21:06:28 -0300 Subject: [PATCH 21/69] fix: fixing admin theme room #42 --- backend/eventsync_api/core/admin.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/eventsync_api/core/admin.py b/backend/eventsync_api/core/admin.py index f67a4f9..7ea1283 100644 --- a/backend/eventsync_api/core/admin.py +++ b/backend/eventsync_api/core/admin.py @@ -2,6 +2,10 @@ from django.contrib.auth.admin import UserAdmin from django.utils.translation import gettext_lazy as _ from .models import ESUser, Local, Event, ThemeRoom, Sponsor, Sponsorship +<<<<<<< HEAD +======= + +>>>>>>> 56323fd (fix: admin #42) from .forms import CustomUserCreationForm, CustomUserChangeForm @@ -52,7 +56,6 @@ class SponsorAdmin(admin.ModelAdmin): list_display = ('name', 'phone', 'email') search_fields = ('name', 'phone', 'email') - @admin.register(Sponsorship) class SponsorshipAdmin(admin.ModelAdmin): list_display = ('event', 'sponsor') @@ -64,4 +67,4 @@ class ThemeRoomAdmin(admin.ModelAdmin): list_display = ('event', 'start_time', 'name', 'start_date', 'end_date', 'local', 'status', 'event_type') list_filter = ('status', 'event_type', 'local') search_fields = ('name', 'description',) - date_hierarchy = 'start_date' \ No newline at end of file + date_hierarchy = 'start_date' From c2737455346dbac1e74a2be76d119674c4905613 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 12 Aug 2024 21:03:14 -0300 Subject: [PATCH 22/69] fix: fixing url #42 --- backend/eventsync_api/api/urls.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/eventsync_api/api/urls.py b/backend/eventsync_api/api/urls.py index 92766a2..3824e2f 100644 --- a/backend/eventsync_api/api/urls.py +++ b/backend/eventsync_api/api/urls.py @@ -11,6 +11,7 @@ from .views import theme_room_view as themerv from .views import sponsor_view as spview from .views import sponsorship_view as spsview +from .views import theme_room_view as themerv urlpatterns = [ path('', ApiRootView.as_view(), name='api-root'), @@ -29,6 +30,9 @@ name='sponsorship_list'), path('sponsorships//', spsview.SponsorShipDetailView.as_view(), name='sponsorship_detail'), + path('themeRoom/', themerv.ThemeRoomListView.as_view(), name='theme_room_list'), + path('themeRoom//', themerv.ThemeRoomDetailView.as_view(), name='theme_room_detail'), + ] # auth urls From bf23d7c64a517fccd9bcc4779f984d22a21c7c6c Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 12 Aug 2024 21:47:00 -0300 Subject: [PATCH 23/69] fix: fixing admin theme room #42 --- frontend/eventsync_front/src/components/EventForm.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/eventsync_front/src/components/EventForm.vue b/frontend/eventsync_front/src/components/EventForm.vue index 3474f02..4aac7c1 100644 --- a/frontend/eventsync_front/src/components/EventForm.vue +++ b/frontend/eventsync_front/src/components/EventForm.vue @@ -78,6 +78,16 @@ const submitForm = () => { text-align: center; margin-bottom: 30px; font-size: 2.8rem; +<<<<<<< HEAD +======= +} + +.field-size { + max-width: 100%; + width: 100%; + margin-bottom: auto; + font-size: 1.2rem; +>>>>>>> c247bdd (feat: add of insert questions #43) } .question-card { From 9c62278503548dfe73881a55215047a96b71c43a Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 19:08:22 -0300 Subject: [PATCH 24/69] chore: removing code duplication #42 --- backend/eventsync_api/api/urls.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/eventsync_api/api/urls.py b/backend/eventsync_api/api/urls.py index 3824e2f..a71be85 100644 --- a/backend/eventsync_api/api/urls.py +++ b/backend/eventsync_api/api/urls.py @@ -30,8 +30,6 @@ name='sponsorship_list'), path('sponsorships//', spsview.SponsorShipDetailView.as_view(), name='sponsorship_detail'), - path('themeRoom/', themerv.ThemeRoomListView.as_view(), name='theme_room_list'), - path('themeRoom//', themerv.ThemeRoomDetailView.as_view(), name='theme_room_detail'), ] From a5c03b35df699850e57f795ff489b1a5385d0151 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 19:08:44 -0300 Subject: [PATCH 25/69] chore: removing code duplication #42 --- backend/eventsync_api/core/admin.py | 9 +-------- frontend/eventsync_front/src/router/index.ts | 5 ----- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/backend/eventsync_api/core/admin.py b/backend/eventsync_api/core/admin.py index 3dcb61b..94ed14d 100644 --- a/backend/eventsync_api/core/admin.py +++ b/backend/eventsync_api/core/admin.py @@ -63,11 +63,4 @@ class SponsorAdmin(admin.ModelAdmin): class SponsorshipAdmin(admin.ModelAdmin): list_display = ('event', 'sponsor') list_filter = ('event', 'sponsor') - search_fields = ('event_name', 'sponsor_name') - -@admin.register(ThemeRoom) -class ThemeRoomAdmin(admin.ModelAdmin): - list_display = ('event', 'start_time', 'name', 'start_date', 'end_date', 'local', 'status', 'event_type') - list_filter = ('status', 'event_type', 'local') - search_fields = ('name', 'description',) - date_hierarchy = 'start_date' + search_fields = ('event_name', 'sponsor_name') \ No newline at end of file diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index f253a5f..46e30a5 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -34,11 +34,6 @@ const router = createRouter({ name: 'sponsors', component: SponsorsView }, - { - path: '/sponsors', - name: 'sponsors', - component: SponsorsView - }, { path: '/events/:id/theme-room', name: 'theme-room', From c9a369d21395cce6643eeb886229ddb752c27a94 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 22:30:46 -0300 Subject: [PATCH 26/69] feat: new room fields #42 --- backend/eventsync_api/core/models.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/eventsync_api/core/models.py b/backend/eventsync_api/core/models.py index 9f9a87f..080aedc 100644 --- a/backend/eventsync_api/core/models.py +++ b/backend/eventsync_api/core/models.py @@ -94,16 +94,21 @@ class Meta: class ThemeRoom(models.Model): event = models.ForeignKey(Event, on_delete=models.CASCADE) - start_time = models.TimeField() - name = models.CharField(max_length=150) start_date = models.DateField() end_date = models.DateField() + start_time = models.TimeField() + + speaker = models.CharField(max_length=100) + name = models.CharField(max_length=150) + description = models.TextField() + hours_quantity = models.IntegerField() + audiences = models.TextField() + max_quantity = models.IntegerField() min_quantity = models.IntegerField() - hours_quantity = models.IntegerField() - description = models.TextField() local = models.ForeignKey(Local, on_delete=models.CASCADE) + status = models.CharField(max_length=20, choices=EVENT_STATUS_CHOICES, default='upcoming') event_type = models.CharField(max_length=20, choices=EVENT_TYPE_CHOICES, default='conference') From 3d428ff81277a0faa26c7e90dd95b74283a85183 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 22:31:37 -0300 Subject: [PATCH 27/69] feat: new tables #42 --- ... => 0006_sponsor_sponsorship_themeroom.py} | 27 +++++++++++++- .../core/migrations/0006_themeroom.py | 37 ------------------- 2 files changed, 26 insertions(+), 38 deletions(-) rename backend/eventsync_api/core/migrations/{0006_sponsor_sponsorship.py => 0006_sponsor_sponsorship_themeroom.py} (51%) delete mode 100644 backend/eventsync_api/core/migrations/0006_themeroom.py diff --git a/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship.py b/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py similarity index 51% rename from backend/eventsync_api/core/migrations/0006_sponsor_sponsorship.py rename to backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py index 651e311..be9393a 100644 --- a/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship.py +++ b/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.4 on 2024-07-30 22:19 +# Generated by Django 5.0.4 on 2024-08-14 01:23 import django.core.validators import django.db.models.deletion @@ -41,4 +41,29 @@ class Migration(migrations.Migration): 'ordering': ['id'], }, ), + migrations.CreateModel( + name='ThemeRoom', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('start_date', models.DateField()), + ('end_date', models.DateField()), + ('start_time', models.TimeField()), + ('speaker', models.CharField(max_length=100)), + ('name', models.CharField(max_length=150)), + ('description', models.TextField()), + ('hours_quantity', models.IntegerField()), + ('audiences', models.TextField()), + ('max_quantity', models.IntegerField()), + ('min_quantity', models.IntegerField()), + ('status', models.CharField(choices=[('upcoming', 'Upcoming'), ('ongoing', 'Ongoing'), ('completed', 'Completed'), ('cancelled', 'Cancelled')], default='upcoming', max_length=20)), + ('event_type', models.CharField(choices=[('conference', 'Conference'), ('workshop', 'Workshop'), ('seminar', 'Seminar'), ('meetup', 'Meetup')], default='conference', max_length=20)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.event')), + ('local', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.local')), + ], + options={ + 'verbose_name': 'Theme Room', + 'verbose_name_plural': 'Theme Rooms', + 'ordering': ['id'], + }, + ), ] diff --git a/backend/eventsync_api/core/migrations/0006_themeroom.py b/backend/eventsync_api/core/migrations/0006_themeroom.py deleted file mode 100644 index eb32f80..0000000 --- a/backend/eventsync_api/core/migrations/0006_themeroom.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 5.0.4 on 2024-08-05 14:44 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0005_event'), - ] - - operations = [ - migrations.CreateModel( - name='ThemeRoom', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('start_time', models.TimeField()), - ('name', models.CharField(max_length=150)), - ('start_date', models.DateField()), - ('end_date', models.DateField()), - ('max_quantity', models.IntegerField()), - ('min_quantity', models.IntegerField()), - ('hours_quantity', models.IntegerField()), - ('description', models.TextField()), - ('status', models.CharField(choices=[('upcoming', 'Upcoming'), ('ongoing', 'Ongoing'), ('completed', 'Completed'), ('cancelled', 'Cancelled')], default='upcoming', max_length=20)), - ('event_type', models.CharField(choices=[('conference', 'Conference'), ('workshop', 'Workshop'), ('seminar', 'Seminar'), ('meetup', 'Meetup')], default='conference', max_length=20)), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.event')), - ('local', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.local')), - ], - options={ - 'verbose_name': 'Theme Room', - 'verbose_name_plural': 'Theme Rooms', - 'ordering': ['id'], - }, - ), - ] From 54a93e98fbca1f7258a27ae727c2e445cf7dd97c Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 22:32:03 -0300 Subject: [PATCH 28/69] package-lock.json #42 --- frontend/eventsync_front/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/eventsync_front/package-lock.json b/frontend/eventsync_front/package-lock.json index bdb7254..bbc0531 100644 --- a/frontend/eventsync_front/package-lock.json +++ b/frontend/eventsync_front/package-lock.json @@ -1179,9 +1179,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", From 18cbfc93417f91a3b7901e2983bef71ba5507001 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 22:32:41 -0300 Subject: [PATCH 29/69] feat: themeRoom dto #42 --- .../eventsync_front/src/types/themeRoom.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 frontend/eventsync_front/src/types/themeRoom.ts diff --git a/frontend/eventsync_front/src/types/themeRoom.ts b/frontend/eventsync_front/src/types/themeRoom.ts new file mode 100644 index 0000000..d4fe6b7 --- /dev/null +++ b/frontend/eventsync_front/src/types/themeRoom.ts @@ -0,0 +1,20 @@ +export interface ThemeRoom { + id?: number + event?: number, + star_time: string, + name: string, + speaker: string, + start_date: string, + end_date: string, + max_quantity: number, + min_quantity: number, + hours_quantity: number, + description: string + local: number, + status: string, + event_type: string, + audiences: string +} + +// audiences = models.TextField() +// event_type = models.CharField(max_length=20, choices=EVENT_TYPE_CHOICES, default='conference') \ No newline at end of file From 11d5c31d673408c1cc9351e11ec990cce07d046f Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 22:33:54 -0300 Subject: [PATCH 30/69] feat: new fields #42 --- .../src/components/ThemeRoom.vue | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom.vue b/frontend/eventsync_front/src/components/ThemeRoom.vue index 4f9ed0f..b0a5998 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom.vue @@ -4,26 +4,24 @@

Evento: Nome do Evento

Criar sala temática.

- - - - - + + + + + + + + Criar Voltar @@ -35,13 +33,7 @@ \ No newline at end of file diff --git a/frontend/eventsync_front/src/tests/ThemeRoom.test.ts b/frontend/eventsync_front/src/tests/ThemeRoom.test.ts index c5ebd50..96fabed 100644 --- a/frontend/eventsync_front/src/tests/ThemeRoom.test.ts +++ b/frontend/eventsync_front/src/tests/ThemeRoom.test.ts @@ -1,6 +1,6 @@ import { mount } from "@vue/test-utils"; import { describe, it, expect } from "vitest"; -import ThemeRoom from "@/components/ThemeRoom.vue"; +import ThemeRoom from "@/components/ThemeRoom/CreateComponentTR.vue"; describe("ThemeRoom.vue", () => { const wrapper = mount(ThemeRoom); diff --git a/frontend/eventsync_front/src/views/ThemeRoomView.vue b/frontend/eventsync_front/src/views/ThemeRoomView.vue deleted file mode 100644 index 3809f9f..0000000 --- a/frontend/eventsync_front/src/views/ThemeRoomView.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - - - \ No newline at end of file From 944c4fe198758e62ec2f26d511f1f1cb9aa00400 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 23:46:46 -0300 Subject: [PATCH 32/69] feat: Rename component #42 --- .../ThemeRoom/CreateComponentTR.vue | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue diff --git a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue new file mode 100644 index 0000000..c5abc58 --- /dev/null +++ b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue @@ -0,0 +1,41 @@ + + + + \ No newline at end of file From e5750a5e2d873554ece8919b72597aa9ee8058b3 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 23:47:07 -0300 Subject: [PATCH 33/69] feat: api acess #42 --- .../src/services/themRoomService.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 frontend/eventsync_front/src/services/themRoomService.ts diff --git a/frontend/eventsync_front/src/services/themRoomService.ts b/frontend/eventsync_front/src/services/themRoomService.ts new file mode 100644 index 0000000..f7c27bd --- /dev/null +++ b/frontend/eventsync_front/src/services/themRoomService.ts @@ -0,0 +1,27 @@ +import api from '@/services/api' + +export const fetchThemeRooms = (page: number, pageSize: number) => { + return api.get('themeRoom/', { + params: { page, page_size: pageSize } + }) +} + +export const fetchThemeRoom = (id: number) => { + return api.get(`themeRoom/${id}/`) +} + +export const addThemeRoom = (formData: FormData) => { + return api.post('themeRoom/', formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +export const updateThemeRoom = (id: number, formData: FormData) => { + return api.patch(`themeRoom/${id}/`, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +export const deleteThemeRoom = (id: number) => { + return api.delete(`themeRoom/${id}/`) +} From 4c130e1ac049d5b2220d5682dc5d33e8f284b84f Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 23:47:35 -0300 Subject: [PATCH 34/69] feat: Theme Room routers #42 --- frontend/eventsync_front/src/router/index.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 46e30a5..5a4a7f8 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -35,10 +35,20 @@ const router = createRouter({ component: SponsorsView }, { - path: '/events/:id/theme-room', - name: 'theme-room', - component: () => import('../views/ThemeRoomView.vue') - } + path: '/events/:id/create/theme-room', + name: 'create-theme-room', + component: () => import('../views/ThemeRoomViews/CreateViewTR.vue') + }, + { + path: '/events/:id/list/theme-room', + name: 'list-theme-room', + component: () => import('../views/ThemeRoomViews/ListViewTR.vue') + }, + { + path: '/events/:id/edit/theme-room/:id', + name: 'edit-theme-room', + component: () => import('../views/ThemeRoomViews/EditViewTR.vue') + }, ] }) From 526f1fe1cfcb33d2c9fbfd3d533b595a9ee7cb21 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 23:48:04 -0300 Subject: [PATCH 35/69] feat: Rename file themeRoomView #42 --- .../src/views/ThemeRoomViews/CreateViewTR.vue | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue new file mode 100644 index 0000000..6653447 --- /dev/null +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file From 43fb6e0e9d1b3cbe3e77061ec88275d9c26aeca6 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 13 Aug 2024 23:48:21 -0300 Subject: [PATCH 36/69] feat: all view #42 --- .../src/views/ThemeRoomViews/EditViewTR.vue | 13 +++++++++++++ .../src/views/ThemeRoomViews/ListViewTR.vue | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue create mode 100644 frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue new file mode 100644 index 0000000..9428c2e --- /dev/null +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue new file mode 100644 index 0000000..aa92bd4 --- /dev/null +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file From 3ceaf10576c7009dddcba4737bced579b39c9a6b Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:10:49 -0300 Subject: [PATCH 37/69] feat: local textfield #42 --- backend/eventsync_api/core/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/eventsync_api/core/models.py b/backend/eventsync_api/core/models.py index f5d4f44..f4f2036 100644 --- a/backend/eventsync_api/core/models.py +++ b/backend/eventsync_api/core/models.py @@ -107,7 +107,7 @@ class ThemeRoom(models.Model): max_quantity = models.IntegerField() min_quantity = models.IntegerField() - local = models.ForeignKey(Local, on_delete=models.CASCADE) + local = models.TextField() status = models.CharField(max_length=20, choices=EVENT_STATUS_CHOICES, default='upcoming') event_type = models.CharField(max_length=20, choices=EVENT_TYPE_CHOICES, default='conference') From 7a35ee632363e90bc73702c40e75dd5aa1202cae Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:11:23 -0300 Subject: [PATCH 38/69] feat: script init rooms #42 --- .../core/management/commands/initrooms.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 backend/eventsync_api/core/management/commands/initrooms.py diff --git a/backend/eventsync_api/core/management/commands/initrooms.py b/backend/eventsync_api/core/management/commands/initrooms.py new file mode 100644 index 0000000..ed4e621 --- /dev/null +++ b/backend/eventsync_api/core/management/commands/initrooms.py @@ -0,0 +1,41 @@ +import random +from datetime import datetime, timedelta + +from django.core.management.base import BaseCommand +from django.utils import timezone + +from core.models import ThemeRoom, Event + +class Command(BaseCommand): + help = 'Create 5 Local and 20 Event records for testing' + + def handle(self, *args, **kwargs): + # Criar 5 Locais + + # Criar 20 Eventos + event_statuses = ['upcoming', 'ongoing', 'completed', 'cancelled'] + event_types = ['conference', 'workshop', 'seminar', 'meetup'] + + for i in range(20): + start_date = timezone.now().date() + timedelta(days=random.randint(1, 30)) + end_date = start_date + timedelta(days=random.randint(1, 5)) + start_time= timezone.now() + + ThemeRoom.objects.create( + event = Event.objects.get(pk=1), + name=f'Event {i+1}', + speaker=f'Speaker {i+1}', + start_date=start_date, + end_date=end_date, + start_time=start_time, + max_quantity=random.randint(10, 100), + min_quantity=random.randint(1, 10), + hours_quantity=random.randint(1, 8), + description=f'Description for Event {i+1}', + local=f'Bloco A, Sala A34', + audiences='Alunos', + status=random.choice(event_statuses), + event_type=random.choice(event_types) + ) + + self.stdout.write(self.style.SUCCESS('Successfully 20 rooms in your dev database event 1')) \ No newline at end of file From 7f2d58a14ddc070a191afc4aa9759cde085d51bf Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:11:50 -0300 Subject: [PATCH 39/69] feat: new migrations #42 --- ...egister_question_sponsorship_themeroom.py} | 35 +++++++- .../migrations/0007_formsregister_question.py | 89 ------------------- 2 files changed, 33 insertions(+), 91 deletions(-) rename backend/eventsync_api/core/migrations/{0006_sponsor_sponsorship_themeroom.py => 0006_sponsor_formsregister_question_sponsorship_themeroom.py} (65%) delete mode 100644 backend/eventsync_api/core/migrations/0007_formsregister_question.py diff --git a/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py b/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py similarity index 65% rename from backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py rename to backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py index be9393a..100b9f5 100644 --- a/backend/eventsync_api/core/migrations/0006_sponsor_sponsorship_themeroom.py +++ b/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py @@ -1,7 +1,8 @@ -# Generated by Django 5.0.4 on 2024-08-14 01:23 +# Generated by Django 5.0.4 on 2024-08-16 00:00 import django.core.validators import django.db.models.deletion +from django.conf import settings from django.db import migrations, models @@ -28,6 +29,36 @@ class Migration(migrations.Migration): 'ordering': ['id'], }, ), + migrations.CreateModel( + name='FormsRegister', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=150)), + ('description', models.TextField()), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.event')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'Form', + 'verbose_name_plural': 'Forms', + 'ordering': ['id'], + }, + ), + migrations.CreateModel( + name='Question', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('text', models.TextField()), + ('type', models.CharField(choices=[('Discursiva', 'Discursiva'), ('Múltipla escolha', 'Múltipla escolha'), ('Objetiva', 'Objetiva')], default='Discursiva', max_length=20)), + ('options', models.JSONField(blank=True, default=list)), + ('form', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.formsregister')), + ], + options={ + 'verbose_name': 'Question', + 'verbose_name_plural': 'Questions', + 'ordering': ['id'], + }, + ), migrations.CreateModel( name='Sponsorship', fields=[ @@ -55,10 +86,10 @@ class Migration(migrations.Migration): ('audiences', models.TextField()), ('max_quantity', models.IntegerField()), ('min_quantity', models.IntegerField()), + ('local', models.TextField()), ('status', models.CharField(choices=[('upcoming', 'Upcoming'), ('ongoing', 'Ongoing'), ('completed', 'Completed'), ('cancelled', 'Cancelled')], default='upcoming', max_length=20)), ('event_type', models.CharField(choices=[('conference', 'Conference'), ('workshop', 'Workshop'), ('seminar', 'Seminar'), ('meetup', 'Meetup')], default='conference', max_length=20)), ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.event')), - ('local', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.local')), ], options={ 'verbose_name': 'Theme Room', diff --git a/backend/eventsync_api/core/migrations/0007_formsregister_question.py b/backend/eventsync_api/core/migrations/0007_formsregister_question.py deleted file mode 100644 index 43a18ce..0000000 --- a/backend/eventsync_api/core/migrations/0007_formsregister_question.py +++ /dev/null @@ -1,89 +0,0 @@ -# Generated by Django 5.0.4 on 2024-08-11 17:43 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("core", "0006_sponsor_sponsorship"), - ] - - operations = [ - migrations.CreateModel( - name="FormsRegister", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=150)), - ("description", models.TextField()), - ( - "event", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="core.event" - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "verbose_name": "Form", - "verbose_name_plural": "Forms", - "ordering": ["id"], - }, - ), - migrations.CreateModel( - name="Question", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("text", models.TextField()), - ( - "type", - models.CharField( - choices=[ - ("Discursiva", "Discursiva"), - ("Múltipla escolha", "Múltipla escolha"), - ("Objetiva", "Objetiva"), - ], - default="Discursiva", - max_length=20, - ), - ), - ("options", models.JSONField(blank=True, default=list)), - ( - "form", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="core.formsregister", - ), - ), - ], - options={ - "verbose_name": "Question", - "verbose_name_plural": "Questions", - "ordering": ["id"], - }, - ), - ] From b3f01419cba59ef848f51dd83eac5ef20463fde9 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:13:22 -0300 Subject: [PATCH 40/69] feat: router rooms #42 --- frontend/eventsync_front/src/router/index.ts | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 77b6633..859b8b4 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -39,21 +39,21 @@ const router = createRouter({ // para views que sejam privadas usar esse exemplo // meta: { requiresAuth: true } }, - { - path: '/events/:id/create/theme-room', - name: 'create-theme-room', - component: () => import('../views/ThemeRoomViews/CreateViewTR.vue') - }, - { - path: '/events/:id/list/theme-room', - name: 'list-theme-room', - component: () => import('../views/ThemeRoomViews/ListViewTR.vue') - }, - { - path: '/events/:id/edit/theme-room/:id', - name: 'edit-theme-room', - component: () => import('../views/ThemeRoomViews/EditViewTR.vue') - }, + { + path: '/events/:id/create/theme-room', + name: 'create-theme-room', + component: () => import('../views/ThemeRoomViews/CreateViewTR.vue') + }, + { + path: '/events/:id/list/theme-room', + name: 'list-theme-room', + component: () => import('../views/ThemeRoomViews/ListViewTR.vue') + }, + { + path: '/events/:id/edit/theme-room/:id', + name: 'edit-theme-room', + component: () => import('../views/ThemeRoomViews/EditViewTR.vue') + }, { path: '/login', name: 'login', From 7be9479f4c5a466453faafca393c05ec8cd356f3 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:16:58 -0300 Subject: [PATCH 41/69] feat: init cards in list --- .../ThemeRoom/ListCardTRComponent.vue | 123 ++++++++++++++++++ .../components/ThemeRoom/ListComponentTR.vue | 17 +++ 2 files changed, 140 insertions(+) create mode 100644 frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue create mode 100644 frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue new file mode 100644 index 0000000..c837eed --- /dev/null +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue @@ -0,0 +1,123 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue new file mode 100644 index 0000000..339b9a3 --- /dev/null +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file From 6014d4841336aeb4d63f0286a642d45d04f50a9c Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sat, 17 Aug 2024 19:18:15 -0300 Subject: [PATCH 42/69] feat: rename view files --- frontend/eventsync_front/src/router/index.ts | 6 +++--- .../{CreateViewTR.vue => CreateTrView.vue} | 0 .../{EditViewTR.vue => EditTrView.vue} | 0 .../src/views/ThemeRoomViews/ListTrView.vue | 13 +++++++++++++ .../src/views/ThemeRoomViews/ListViewTR.vue | 13 ------------- 5 files changed, 16 insertions(+), 16 deletions(-) rename frontend/eventsync_front/src/views/ThemeRoomViews/{CreateViewTR.vue => CreateTrView.vue} (100%) rename frontend/eventsync_front/src/views/ThemeRoomViews/{EditViewTR.vue => EditTrView.vue} (100%) create mode 100644 frontend/eventsync_front/src/views/ThemeRoomViews/ListTrView.vue delete mode 100644 frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 859b8b4..92c8f69 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -42,17 +42,17 @@ const router = createRouter({ { path: '/events/:id/create/theme-room', name: 'create-theme-room', - component: () => import('../views/ThemeRoomViews/CreateViewTR.vue') + component: () => import('../views/ThemeRoomViews/CreateTrView.vue') }, { path: '/events/:id/list/theme-room', name: 'list-theme-room', - component: () => import('../views/ThemeRoomViews/ListViewTR.vue') + component: () => import('../views/ThemeRoomViews/ListTrView.vue') }, { path: '/events/:id/edit/theme-room/:id', name: 'edit-theme-room', - component: () => import('../views/ThemeRoomViews/EditViewTR.vue') + component: () => import('../views/ThemeRoomViews/EditTrView.vue') }, { path: '/login', diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue similarity index 100% rename from frontend/eventsync_front/src/views/ThemeRoomViews/CreateViewTR.vue rename to frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue similarity index 100% rename from frontend/eventsync_front/src/views/ThemeRoomViews/EditViewTR.vue rename to frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/ListTrView.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/ListTrView.vue new file mode 100644 index 0000000..c5c2cac --- /dev/null +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/ListTrView.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue deleted file mode 100644 index aa92bd4..0000000 --- a/frontend/eventsync_front/src/views/ThemeRoomViews/ListViewTR.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - \ No newline at end of file From 57d4e856a405b9c6ea913920ccf6fc95c4347ac0 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 12:53:53 -0300 Subject: [PATCH 43/69] feat: event-based rooms #42 --- .../api/views/theme_room_view.py | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index ae57bdf..de2b121 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -2,7 +2,6 @@ from django.http import Http404 from drf_spectacular.utils import OpenApiParameter, extend_schema from rest_framework import status -from rest_framework.pagination import PageNumberPagination from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView @@ -13,41 +12,58 @@ class ThemeRoomListView(APIView): """ - List all Themes Rooms, or create a new Theme Room. + List all Theme Rooms for a specific Event, or create a new Theme Room for that Event. """ # permission_classes = [IsAuthenticated | ReadOnly] - pagination_class = PageNumberPagination @extend_schema( responses={200: ThemeRoomSerializer(many=True)}, parameters=[ + OpenApiParameter(name='event_id', description='Event ID', required=True, type=int), OpenApiParameter(name='page', description='Page number', required=False, type=int), OpenApiParameter(name='page_size', description='Page size', required=False, type=int), ], ) - def get(self, request, format=None): - themeRoom = ThemeRoom.objects.all().order_by("id") - paginator = self.pagination_class() - result_page = paginator.paginate_queryset(themeRoom, request) - serializer = ThemeRoomSerializer(result_page, many=True) - return paginator.get_paginated_response(serializer.data) + # Obtenha o ID do evento da query string + event_id = request.query_params.get('event_id') + + if not event_id: + return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) + + # Filtrar as Theme Rooms pelo evento específico + theme_rooms = ThemeRoom.objects.filter(event__id=event_id).order_by("id") + + # Serializar os dados + serializer = ThemeRoomSerializer(theme_rooms, many=True) + + return Response(serializer.data) + @extend_schema( request=ThemeRoomSerializer, responses={201: ThemeRoomSerializer}, ) def post(self, request, format=None): - # print("oi lucas", request.data) + # Obtenha o ID do evento da query string ou do corpo da requisição + event_id = request.data.get('event_id') + + if not event_id: + return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) + + # Adicione o evento aos dados de criação + request.data['event'] = event_id serializer = ThemeRoomSerializer(data=request.data) + if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class ThemeRoomDetailView(APIView): """ - Retrieve, update or delete an Theme Room. + Retrieve, update or delete a Theme Room. """ permission_classes = [IsAuthenticated | ReadOnly] From 046ea9f2323f2ee3023c26a85dd3006104d9485b Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 12:55:07 -0300 Subject: [PATCH 44/69] feat: id as a parameter in the route #42 --- frontend/eventsync_front/src/router/index.ts | 2 +- frontend/eventsync_front/src/services/themRoomService.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/eventsync_front/src/router/index.ts b/frontend/eventsync_front/src/router/index.ts index 2080fdc..0f96ec1 100644 --- a/frontend/eventsync_front/src/router/index.ts +++ b/frontend/eventsync_front/src/router/index.ts @@ -51,7 +51,7 @@ const router = createRouter({ component: () => import('../views/ThemeRoomViews/ListTrView.vue') }, { - path: '/events/:id/edit/theme-room/:id', + path: '/events/:id/edit/theme-room/:room_id', name: 'edit-theme-room', component: () => import('../views/ThemeRoomViews/EditTrView.vue') }, diff --git a/frontend/eventsync_front/src/services/themRoomService.ts b/frontend/eventsync_front/src/services/themRoomService.ts index f7c27bd..b7faf19 100644 --- a/frontend/eventsync_front/src/services/themRoomService.ts +++ b/frontend/eventsync_front/src/services/themRoomService.ts @@ -1,9 +1,10 @@ import api from '@/services/api' -export const fetchThemeRooms = (page: number, pageSize: number) => { +export const fetchThemeRooms = (eventId: number) => { return api.get('themeRoom/', { - params: { page, page_size: pageSize } + params: { event_id: eventId } }) + } export const fetchThemeRoom = (id: number) => { From 45fa3dbe09c9231bb02e9e308469b33167c59775 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 12:56:07 -0300 Subject: [PATCH 45/69] feat: final form #42 --- .../ThemeRoom/ListCardTRComponent.vue | 175 ++++++++++-------- 1 file changed, 95 insertions(+), 80 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue index c837eed..f7877c0 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue @@ -1,90 +1,93 @@ - From adb84093a78a60057d0d412ab56e34e37f3913df Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 12:57:03 -0300 Subject: [PATCH 46/69] feat: leaving it in just one component #42 --- frontend/eventsync_front/src/components/Home.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/eventsync_front/src/components/Home.vue b/frontend/eventsync_front/src/components/Home.vue index 5644cc5..25c254e 100644 --- a/frontend/eventsync_front/src/components/Home.vue +++ b/frontend/eventsync_front/src/components/Home.vue @@ -5,7 +5,7 @@ - Ver mais Eventos + Ver mais Eventos From 8a4687f3893672529a6151c57b2a9fe970c839e6 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 17:48:27 -0300 Subject: [PATCH 47/69] feat: update view and migrations #42 --- backend/eventsync_api/api/views/theme_room_view.py | 2 +- ...0006_sponsor_formsregister_question_sponsorship_themeroom.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index de2b121..a5722ae 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -14,7 +14,7 @@ class ThemeRoomListView(APIView): """ List all Theme Rooms for a specific Event, or create a new Theme Room for that Event. """ - # permission_classes = [IsAuthenticated | ReadOnly] + permission_classes = [IsAuthenticated | ReadOnly] @extend_schema( responses={200: ThemeRoomSerializer(many=True)}, diff --git a/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py b/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py index 100b9f5..5f07a14 100644 --- a/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py +++ b/backend/eventsync_api/core/migrations/0006_sponsor_formsregister_question_sponsorship_themeroom.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.4 on 2024-08-16 00:00 +# Generated by Django 5.0.4 on 2024-08-18 17:36 import django.core.validators import django.db.models.deletion From af1e3e5f8ed7eafb8971ed616ab610dcc3d4ac08 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 17:48:57 -0300 Subject: [PATCH 48/69] delete component file :42 --- .../ThemeRoom/ListCardTRComponent.vue | 138 ------------------ 1 file changed, 138 deletions(-) delete mode 100644 frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue deleted file mode 100644 index f7877c0..0000000 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListCardTRComponent.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - \ No newline at end of file From 3e5e5b426690d48236d0d2e03c00cc5a112f2989 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 17:50:10 -0300 Subject: [PATCH 49/69] feat: adding button create room --- .../components/ThemeRoom/ListComponentTR.vue | 146 ++++++++++++++++-- 1 file changed, 137 insertions(+), 9 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue index 339b9a3..c50fd94 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue @@ -1,17 +1,145 @@ + - \ No newline at end of file + \ No newline at end of file From adc06835df57c57ac1dd45e7670028d25eeadde8 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 17:51:34 -0300 Subject: [PATCH 50/69] fix: nao sei pq o valor nao muda para true para entrar no form --- .../ThemeRoom/CreateComponentTR.vue | 239 ++++++++++++++++-- 1 file changed, 215 insertions(+), 24 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue index c5abc58..ba91bc1 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue @@ -1,41 +1,232 @@ - - \ No newline at end of file + From cb3a494340fa3adb3b097c584c9c3b9cf5a9c525 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 17:52:16 -0300 Subject: [PATCH 51/69] feat: update type and validator #42 --- .../src/stores/validatorRoom.ts | 55 +++++++++++++++++++ .../eventsync_front/src/types/themeRoom.ts | 9 +-- 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 frontend/eventsync_front/src/stores/validatorRoom.ts diff --git a/frontend/eventsync_front/src/stores/validatorRoom.ts b/frontend/eventsync_front/src/stores/validatorRoom.ts new file mode 100644 index 0000000..306f67b --- /dev/null +++ b/frontend/eventsync_front/src/stores/validatorRoom.ts @@ -0,0 +1,55 @@ +import type { ThemeRoom } from '@/types/themeRoom' +import { ref } from 'vue' + + +export const snackbar = ref(false) +export const snackbarText = ref('') +export const snackbarColor = ref('') + +const showSnackbar = (message: string, type: string) => { + snackbarText.value = message + snackbarColor.value = type === 'success' ? 'green' : 'red' + snackbar.value = true +} + +export const validateFields = (formValues: ThemeRoom): boolean => { + const { name, start_time, start_date, end_date, local, min_quantity, max_quantity, hours_quantity, event_type, description, status } = formValues + + const fields = [ + { value: name, message: 'Nome da Sala Temática é obrigatório' }, + { value: start_time, message: 'Horário da Sala Temática é obrigatório' }, + { value: start_date, message: 'Data de Início da Sala Temática é obrigatória' }, + { value: end_date, message: 'Data de Fim da Sala Temática é obrigatória' }, + { value: local, message: 'Local da Sala Temática é obrigatório' }, + { value: min_quantity && min_quantity > 0, message: 'Quantidade Mínima de Participantes é obrigatória e deve ser maior que 0' }, + { value: max_quantity && max_quantity > 0, message: 'Quantidade Máxima de Participantes é obrigatória e deve ser maior que 0' }, + { value: hours_quantity && hours_quantity > 0, message: 'Quantidade de Horas é obrigatória e deve ser maior que 0' }, + { value: event_type, message: 'Tipo da Sala Temática é obrigatório' }, + { value: description, message: 'Descrição da Sala Temática é obrigatória' }, + ] + + + for (const field of fields) { + if (!field.value) { + showSnackbar(field.message, 'error') + return false + } + } + + + const startDate = new Date(start_date) + const endDate = new Date(end_date) + if (startDate > endDate) { + showSnackbar('A Data de Início da Sala Temática deve ser anterior à Data de Fim', 'error') + return false + } + + return true +} + +export const validateNumberInput = (event: KeyboardEvent) => { + const key = event.key + if (!/[0-9]/.test(key)) { + event.preventDefault() + } +} diff --git a/frontend/eventsync_front/src/types/themeRoom.ts b/frontend/eventsync_front/src/types/themeRoom.ts index d4fe6b7..1b54dbb 100644 --- a/frontend/eventsync_front/src/types/themeRoom.ts +++ b/frontend/eventsync_front/src/types/themeRoom.ts @@ -1,7 +1,7 @@ export interface ThemeRoom { id?: number event?: number, - star_time: string, + start_time: string, name: string, speaker: string, start_date: string, @@ -13,8 +13,5 @@ export interface ThemeRoom { local: number, status: string, event_type: string, - audiences: string -} - -// audiences = models.TextField() -// event_type = models.CharField(max_length=20, choices=EVENT_TYPE_CHOICES, default='conference') \ No newline at end of file + audiences: string, +} \ No newline at end of file From bd799f8b1c4ea2e489fd5a069966b2d802f0de37 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 21:48:20 -0300 Subject: [PATCH 52/69] feat: removing the id parameter on push #42 --- .../eventsync_api/api/views/theme_room_view.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index a5722ae..31e9d81 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -14,7 +14,7 @@ class ThemeRoomListView(APIView): """ List all Theme Rooms for a specific Event, or create a new Theme Room for that Event. """ - permission_classes = [IsAuthenticated | ReadOnly] + #permission_classes = [IsAuthenticated | ReadOnly] @extend_schema( responses={200: ThemeRoomSerializer(many=True)}, @@ -44,20 +44,13 @@ def get(self, request, format=None): responses={201: ThemeRoomSerializer}, ) def post(self, request, format=None): - # Obtenha o ID do evento da query string ou do corpo da requisição - event_id = request.data.get('event_id') - - if not event_id: - return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) - - # Adicione o evento aos dados de criação - request.data['event'] = event_id + # Deixe a serialização lidar com o campo event_id se estiver no corpo da requisição serializer = ThemeRoomSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) - + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -65,7 +58,7 @@ class ThemeRoomDetailView(APIView): """ Retrieve, update or delete a Theme Room. """ - permission_classes = [IsAuthenticated | ReadOnly] + #permission_classes = [IsAuthenticated | ReadOnly] def get_object(self, pk): try: From dfb8820f978558751ec4731896c180cf83bf460b Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Sun, 18 Aug 2024 21:49:16 -0300 Subject: [PATCH 53/69] feat: create room #42 --- .../ThemeRoom/CreateComponentTR.vue | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue index ba91bc1..438f4d5 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue @@ -4,8 +4,8 @@

Evento: Nome do Evento

Criar sala temática.

@@ -74,7 +74,7 @@ required> Criar {{ submitting }} {{ !isFormValid }} + >Criar Voltar
@@ -122,19 +122,19 @@ import { const router = useRouter(); class ThemeRoomForm { - name: string = ''; - start_time: string = ''; - start_date: string = ''; - end_date: string = ''; - local: string = ''; - min_quantity: number = 0; - max_quantity: number = 0; - speaker: string = ''; - description: string = ''; - hours_quantity: number = 0; - audiences: string = ''; - event_type: string = ''; - status: string = 'upcoming'; + name = ""; + start_time = ""; + start_date = ""; + end_date = ""; + local = ""; + min_quantity = ''; + max_quantity = ''; + speaker = ""; + description = ""; + hours_quantity = ''; + audiences = ""; + event_type = ""; + status = "upcoming"; } const roomForm = ref(new ThemeRoomForm()); @@ -159,19 +159,19 @@ const submitForm = async () => { max_quantity: roomForm.value.max_quantity, speaker: roomForm.value.speaker, description: roomForm.value.description, - hours_quantity: roomForm.value.certification_hours, + hours_quantity: roomForm.value.hours_quantity, audiences: roomForm.value.audiences, event_type: roomForm.value.event_type, status: 'upcoming' }) ) { + // console.log('Campos validados:', validateFields(roomForm.value.value)); errorMessage.value = 'Por favor, preencha todos os campos obrigatórios.' submitting.value = false return } - + console.log('174'); const form = new FormData(); - form.append('event', roomForm.value.event.toString()); form.append('name', roomForm.value.name); form.append('start_time', roomForm.value.start_time); form.append('start_date', roomForm.value.start_date); @@ -184,9 +184,12 @@ const submitForm = async () => { form.append('hours_quantity', roomForm.value.hours_quantity.toString()); form.append('audiences', roomForm.value.audiences); form.append('event_type', roomForm.value.event_type); - console.log(form.values()) + form.append('status', 'upcoming'); + form.append('event', router.currentRoute.value.params.id.toString()); try { + console.log('teste'); await addThemeRoom(form); + console.log('Sala criada com sucesso'); showSnackbar('Sala criada com sucesso', 'success'); resetForm(); // console.log('Sala criada com sucesso:', response.data); @@ -227,6 +230,7 @@ const isFormValid = computed(() => { const goBack = () => { router.back(); // Volta para a página anterior }; + From 39cf1045584b62397b261e9891b4fd841bb46d3b Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 19 Aug 2024 21:18:22 -0300 Subject: [PATCH 54/69] feat: validations dates #42 --- .../api/views/theme_room_view.py | 84 ++++++++++++++++--- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index 31e9d81..f9b76f0 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -1,4 +1,4 @@ -from core.models import ThemeRoom +from core.models import ThemeRoom, Event from django.http import Http404 from drf_spectacular.utils import OpenApiParameter, extend_schema from rest_framework import status @@ -8,13 +8,14 @@ from ..permissions import ReadOnly from ..serializers.theme_room_serializers import ThemeRoomSerializer +from datetime import date class ThemeRoomListView(APIView): """ List all Theme Rooms for a specific Event, or create a new Theme Room for that Event. """ - #permission_classes = [IsAuthenticated | ReadOnly] + # permission_classes = [IsAuthenticated | ReadOnly] @extend_schema( responses={200: ThemeRoomSerializer(many=True)}, @@ -22,21 +23,21 @@ class ThemeRoomListView(APIView): OpenApiParameter(name='event_id', description='Event ID', required=True, type=int), OpenApiParameter(name='page', description='Page number', required=False, type=int), OpenApiParameter(name='page_size', description='Page size', required=False, type=int), - ], + ], ) def get(self, request, format=None): # Obtenha o ID do evento da query string event_id = request.query_params.get('event_id') - + if not event_id: return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) - + # Filtrar as Theme Rooms pelo evento específico theme_rooms = ThemeRoom.objects.filter(event__id=event_id).order_by("id") - + # Serializar os dados serializer = ThemeRoomSerializer(theme_rooms, many=True) - + return Response(serializer.data) @extend_schema( @@ -44,21 +45,51 @@ def get(self, request, format=None): responses={201: ThemeRoomSerializer}, ) def post(self, request, format=None): - # Deixe a serialização lidar com o campo event_id se estiver no corpo da requisição + # Obtenha o ID do evento do corpo da requisição + event_id = request.data.get('event_id') + + if not event_id: + return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) + + try: + # Busque o evento pelo ID + event = Event.objects.get(id=event_id) + except Event.DoesNotExist: + return Response({"detail": "Event not found."}, status=status.HTTP_404_NOT_FOUND) + + # Obtenha as datas do evento + event_start_date = event.start_date + event_end_date = event.end_date + + # Obtenha a data de início e fim da Theme Room + theme_room_start_date = request.data.get('start_date') + theme_room_end_date = request.data.get('end_date') + + # Valide se as datas da Theme Room estão dentro do intervalo do evento + if theme_room_start_date and theme_room_end_date: + # Converta as datas para objetos date, se necessário + theme_room_start_date = date.fromisoformat(theme_room_start_date) + theme_room_end_date = date.fromisoformat(theme_room_end_date) + + if theme_room_start_date < event_start_date or theme_room_end_date > event_end_date: + return Response( + {"detail": "Theme room dates must be within the event's date range."}, + status=status.HTTP_400_BAD_REQUEST, + ) + + # Serializar e salvar os dados serializer = ThemeRoomSerializer(data=request.data) - + if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - class ThemeRoomDetailView(APIView): """ Retrieve, update or delete a Theme Room. """ - #permission_classes = [IsAuthenticated | ReadOnly] + # permission_classes = [IsAuthenticated | ReadOnly] def get_object(self, pk): try: @@ -80,10 +111,37 @@ def get(self, request, pk, format=None): ) def patch(self, request, pk, format=None): themeRoom = self.get_object(pk) + + # Obtenha o evento associado a esta Theme Room + event = themeRoom.event + + # Obtenha as datas do evento + event_start_date = event.start_date + event_end_date = event.end_date + + # Obtenha a data de início e fim da Theme Room do request + theme_room_start_date = request.data.get('start_date', themeRoom.start_date) + theme_room_end_date = request.data.get('end_date', themeRoom.end_date) + + # Valide se as novas datas da Theme Room estão dentro do intervalo do evento + if theme_room_start_date and theme_room_end_date: + # Converta as datas para objetos date, se necessário + theme_room_start_date = date.fromisoformat(theme_room_start_date) if isinstance(theme_room_start_date, str) else theme_room_start_date + theme_room_end_date = date.fromisoformat(theme_room_end_date) if isinstance(theme_room_end_date, str) else theme_room_end_date + + if theme_room_start_date < event_start_date or theme_room_end_date > event_end_date: + return Response( + {"detail": "Theme room dates must be within the event's date range."}, + status=status.HTTP_400_BAD_REQUEST, + ) + + # Atualize a Theme Room com os dados do request serializer = ThemeRoomSerializer(themeRoom, data=request.data, partial=True) + if serializer.is_valid(): serializer.save() return Response(serializer.data) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @extend_schema( @@ -92,4 +150,4 @@ def patch(self, request, pk, format=None): def delete(self, request, pk, format=None): themeRoom = self.get_object(pk) themeRoom.delete() - return Response(status=status.HTTP_204_NO_CONTENT) + return Response(status=status.HTTP_204_NO_CONTENT) \ No newline at end of file From 2dda42fc6321b023b6509ea65da9881be7c535f2 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 19 Aug 2024 21:19:16 -0300 Subject: [PATCH 55/69] feat: post and patch in rooms #42 --- .../ThemeRoom/CreateComponentTR.vue | 159 ++++++++---------- 1 file changed, 74 insertions(+), 85 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue index 438f4d5..f7535d9 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/CreateComponentTR.vue @@ -103,24 +103,26 @@ Voltar + + + + {{ snackbarText }} + + + + From 59fd178f8b89a8eea5d7d52586e5f393eb57f814 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 19 Aug 2024 21:19:40 -0300 Subject: [PATCH 56/69] feat: correct router #42 --- .../src/components/ThemeRoom/ListComponentTR.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue index c50fd94..cb63aa6 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue @@ -4,14 +4,17 @@

Evento {{ EventId }}

Programação:

- - Cadastrar Sala Tematica + Cadastrar Sala Tematica +

Nenhuma Sala Cadastrada ainda...

- Editar + Editar Exluir {{ room.name }} From 89cb5e305c5bbe7cacf366cca52507df96259d04 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 19 Aug 2024 21:20:07 -0300 Subject: [PATCH 57/69] feat: patch component #42 --- .../src/views/ThemeRoomViews/EditTrView.vue | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue index 9428c2e..6653447 100644 --- a/frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/EditTrView.vue @@ -1,13 +1,20 @@ - @@ -168,7 +168,7 @@ const buildFormData = () => { form.append(key, value.toString()); console.log(key, value); }); - form.append('event_id', router.currentRoute.value.params.id.toString()); + form.append('event', router.currentRoute.value.params.id.toString()); return form; }; diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue index cb63aa6..58ea9c5 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListComponentTR.vue @@ -58,7 +58,8 @@ Público Alvo: {{ room.audiences }} -
+
+ Descrição: {{ room.description }}
From 23226fab162169f09833daee0ff99be7a2ac3099 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Mon, 19 Aug 2024 22:07:16 -0300 Subject: [PATCH 59/69] feat: correct event field name and spaces between lines #42 --- .../api/views/theme_room_view.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index f9b76f0..fd61f69 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -21,7 +21,9 @@ class ThemeRoomListView(APIView): responses={200: ThemeRoomSerializer(many=True)}, parameters=[ OpenApiParameter(name='event_id', description='Event ID', required=True, type=int), + OpenApiParameter(name='page', description='Page number', required=False, type=int), + OpenApiParameter(name='page_size', description='Page size', required=False, type=int), ], ) @@ -42,33 +44,40 @@ def get(self, request, format=None): @extend_schema( request=ThemeRoomSerializer, + responses={201: ThemeRoomSerializer}, ) def post(self, request, format=None): # Obtenha o ID do evento do corpo da requisição - event_id = request.data.get('event_id') + event_id = request.data.get('event') - if not event_id: - return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) + # if not event_id: + # return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) try: # Busque o evento pelo ID event = Event.objects.get(id=event_id) + except Event.DoesNotExist: + return Response({"detail": "Event not found."}, status=status.HTTP_404_NOT_FOUND) # Obtenha as datas do evento event_start_date = event.start_date + event_end_date = event.end_date # Obtenha a data de início e fim da Theme Room theme_room_start_date = request.data.get('start_date') + theme_room_end_date = request.data.get('end_date') # Valide se as datas da Theme Room estão dentro do intervalo do evento if theme_room_start_date and theme_room_end_date: + # Converta as datas para objetos date, se necessário theme_room_start_date = date.fromisoformat(theme_room_start_date) + theme_room_end_date = date.fromisoformat(theme_room_end_date) if theme_room_start_date < event_start_date or theme_room_end_date > event_end_date: @@ -85,6 +94,8 @@ def post(self, request, format=None): return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + class ThemeRoomDetailView(APIView): """ Retrieve, update or delete a Theme Room. @@ -94,6 +105,7 @@ class ThemeRoomDetailView(APIView): def get_object(self, pk): try: return ThemeRoom.objects.get(pk=pk) + except ThemeRoom.DoesNotExist: raise Http404 @@ -105,6 +117,7 @@ def get(self, request, pk, format=None): serializer = ThemeRoomSerializer(themeRoom) return Response(serializer.data) + @extend_schema( request=ThemeRoomSerializer, responses={200: ThemeRoomSerializer}, @@ -117,16 +130,19 @@ def patch(self, request, pk, format=None): # Obtenha as datas do evento event_start_date = event.start_date + event_end_date = event.end_date # Obtenha a data de início e fim da Theme Room do request theme_room_start_date = request.data.get('start_date', themeRoom.start_date) + theme_room_end_date = request.data.get('end_date', themeRoom.end_date) # Valide se as novas datas da Theme Room estão dentro do intervalo do evento if theme_room_start_date and theme_room_end_date: # Converta as datas para objetos date, se necessário theme_room_start_date = date.fromisoformat(theme_room_start_date) if isinstance(theme_room_start_date, str) else theme_room_start_date + theme_room_end_date = date.fromisoformat(theme_room_end_date) if isinstance(theme_room_end_date, str) else theme_room_end_date if theme_room_start_date < event_start_date or theme_room_end_date > event_end_date: From a3b9262c09b215efc04c8ae0656e37c1d523a822 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 13:59:56 -0300 Subject: [PATCH 60/69] feat: activate permission_classes #42 --- backend/eventsync_api/api/views/theme_room_view.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/eventsync_api/api/views/theme_room_view.py b/backend/eventsync_api/api/views/theme_room_view.py index fd61f69..dd49634 100644 --- a/backend/eventsync_api/api/views/theme_room_view.py +++ b/backend/eventsync_api/api/views/theme_room_view.py @@ -15,7 +15,7 @@ class ThemeRoomListView(APIView): """ List all Theme Rooms for a specific Event, or create a new Theme Room for that Event. """ - # permission_classes = [IsAuthenticated | ReadOnly] + permission_classes = [IsAuthenticated | ReadOnly] @extend_schema( responses={200: ThemeRoomSerializer(many=True)}, @@ -50,7 +50,7 @@ def get(self, request, format=None): def post(self, request, format=None): # Obtenha o ID do evento do corpo da requisição event_id = request.data.get('event') - + # if not event_id: # return Response({"detail": "Event ID is required."}, status=status.HTTP_400_BAD_REQUEST) @@ -100,7 +100,7 @@ class ThemeRoomDetailView(APIView): """ Retrieve, update or delete a Theme Room. """ - # permission_classes = [IsAuthenticated | ReadOnly] + permission_classes = [IsAuthenticated | ReadOnly] def get_object(self, pk): try: @@ -142,7 +142,7 @@ def patch(self, request, pk, format=None): if theme_room_start_date and theme_room_end_date: # Converta as datas para objetos date, se necessário theme_room_start_date = date.fromisoformat(theme_room_start_date) if isinstance(theme_room_start_date, str) else theme_room_start_date - + theme_room_end_date = date.fromisoformat(theme_room_end_date) if isinstance(theme_room_end_date, str) else theme_room_end_date if theme_room_start_date < event_start_date or theme_room_end_date > event_end_date: From 6d1250157b8729de7d57a86839e8d490546a4507 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 14:02:46 -0300 Subject: [PATCH 61/69] feat: add list rooms of event #42 --- frontend/eventsync_front/src/views/EventDetailView.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/eventsync_front/src/views/EventDetailView.vue b/frontend/eventsync_front/src/views/EventDetailView.vue index 4757676..ebfd415 100644 --- a/frontend/eventsync_front/src/views/EventDetailView.vue +++ b/frontend/eventsync_front/src/views/EventDetailView.vue @@ -6,6 +6,7 @@
+
@@ -15,6 +16,7 @@ import EventDetail from '@/components/events/EventDetail.vue' import FooterVue from '../components/Footer.vue' import NavBar from '../components/NavBar.vue' +import ListRooms from '@/components/ThemeRoom/ListRooms.vue'; \ No newline at end of file diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue new file mode 100644 index 0000000..b1cb417 --- /dev/null +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file From d2519a8f098dbc4604415ee5901f9d6f08e83898 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 14:05:19 -0300 Subject: [PATCH 64/69] feat: add acesses token #42 --- .../eventsync_front/src/services/themRoomService.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/frontend/eventsync_front/src/services/themRoomService.ts b/frontend/eventsync_front/src/services/themRoomService.ts index b7faf19..7697e70 100644 --- a/frontend/eventsync_front/src/services/themRoomService.ts +++ b/frontend/eventsync_front/src/services/themRoomService.ts @@ -1,10 +1,10 @@ import api from '@/services/api' +import { useAuthStore } from '@/stores/auth' export const fetchThemeRooms = (eventId: number) => { return api.get('themeRoom/', { params: { event_id: eventId } }) - } export const fetchThemeRoom = (id: number) => { @@ -12,17 +12,22 @@ export const fetchThemeRoom = (id: number) => { } export const addThemeRoom = (formData: FormData) => { + const { token } = useAuthStore() return api.post('themeRoom/', formData, { - headers: { 'Content-Type': 'multipart/form-data' } + headers: { Authorization: `Bearer ${token}` } }) } export const updateThemeRoom = (id: number, formData: FormData) => { + const { token } = useAuthStore() return api.patch(`themeRoom/${id}/`, formData, { - headers: { 'Content-Type': 'multipart/form-data' } + headers: { Authorization: `Bearer ${token}` } }) } export const deleteThemeRoom = (id: number) => { - return api.delete(`themeRoom/${id}/`) + const { token } = useAuthStore() + return api.delete(`themeRoom/${id}/`, { + headers: { Authorization: `Bearer ${token}` } + }) } From b913088d6fecdc8cddb44c5516cc4d9dfab01dd3 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 14:05:34 -0300 Subject: [PATCH 65/69] renames file --- .../eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue | 2 +- .../eventsync_front/src/views/ThemeRoomViews/EditTrView.vue | 2 +- .../eventsync_front/src/views/ThemeRoomViews/ListTrView.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue b/frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue index 6653447..f299fce 100644 --- a/frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue +++ b/frontend/eventsync_front/src/views/ThemeRoomViews/CreateTrView.vue @@ -13,7 +13,7 @@ From 25bf1860125ba78066c853d5e4ee037dcd33a0d2 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 17:44:42 -0300 Subject: [PATCH 66/69] feat: working properly #42 --- .../src/components/ThemeRoom/ListRooms.vue | 73 ++++++++++++++++--- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue index b1cb417..0b5a9c2 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue @@ -1,16 +1,14 @@ @@ -71,15 +78,59 @@ import { ref, onMounted } from 'vue' import { fetchThemeRooms, deleteThemeRoom } from '@/services/themRoomService'; +import { useAuthStore } from '@/stores/auth'; +import { + signupForEvent, + cancelSubscription, + checkUserSubscription +} from '@/services/eventService'; import { type ThemeRoom } from '@/types/themeRoom'; -import { useRoute } from 'vue-router'; +import { useRoute, useRouter } from 'vue-router'; const route = useRoute() +const router = useRouter() const EventId = Number(route.params.id) const rooms = ref([]) const loading = ref(false) const errorMessage = ref(null) -const admin = true +const admin = false +const authStore = useAuthStore() +const isSubscribed = ref(false) +const showSnackbar = ref(false) +const snackbarMessage = ref('') +const snackbarColor = ref('') + +const checkSubscriptionStatus = async () => { + if (authStore.isAuthenticated) { + try { + console.log(authStore.token) + const response = await checkUserSubscription(rooms.value.id, authStore.getUser.id) + console.log('Subscription status:', response.data) + isSubscribed.value = await checkUserSubscription(rooms.value.id, authStore.getUser.id) + } catch (error) { + console.error('Error checking subscription status:', error) + } + } +} + +const handleSubscription = async () => { + if (authStore.isAuthenticated) { + try { + await signupForEvent(rooms.value.id, authStore.getUser.id) + snackbarMessage.value = 'Inscrição realizada com sucesso!' + snackbarColor.value = 'success' + isSubscribed.value = true + } catch (error) { + console.error('Error subscribing:', error) + } + } else { + snackbarMessage.value = 'Você precisa estar logado para se inscrever.' + snackbarColor.value = 'error' + setTimeout(() => { + router.push('/login') + }, 2000) + } +} // Função para alternar o estado 'showDetails' para cada sala individualmente const toggleDetails = (id: number) => { From 4f10ea783572c63e80e9d3578b3dd8dcc6c13a27 Mon Sep 17 00:00:00 2001 From: Tallys-Aureliano Date: Tue, 20 Aug 2024 17:46:20 -0300 Subject: [PATCH 67/69] style: revert tab #42 --- .../src/components/ThemeRoom/ListRooms.vue | 142 +++++++++--------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue index 0b5a9c2..3cb9edd 100644 --- a/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue +++ b/frontend/eventsync_front/src/components/ThemeRoom/ListRooms.vue @@ -1,77 +1,77 @@