diff --git a/backend/src/mongodb/speaker.go b/backend/src/mongodb/speaker.go index f7c6e77b..667fa2f6 100644 --- a/backend/src/mongodb/speaker.go +++ b/backend/src/mongodb/speaker.go @@ -127,7 +127,9 @@ func (s *SpeakersType) CreateSpeaker(data CreateSpeakerData) (*models.Speaker, e ctx := context.Background() contact := bson.M{ - "phones": []models.ContactPhone{}, + "gender": data.Contact.Gender, + "language": data.Contact.Language, + "phones": []models.ContactPhone{}, "socials": bson.M{ "facebook": "", "skype": "", diff --git a/frontend/public/templates/speakers/33-pt.html b/frontend/public/templates/speakers/33-pt.html index 6a195f66..28a8f777 100644 --- a/frontend/public/templates/speakers/33-pt.html +++ b/frontend/public/templates/speakers/33-pt.html @@ -236,20 +236,16 @@ " >

- Caro/a/e {{.Speaker}}, + Car{{.SpeakerArticle}} {{.Speaker}},

- Sou o/a/e {{.Member}}, um - orgulhoso membro da SINFO. Em nome da equipa organizadora da - SINFO {{.Edition}}, convidamo-lo/a/e - a participar como orador(a) de uma - palestra no nosso evento. Ficaríamos muito gratos pela - oportunidade de recebê-lo/a/e se - aceitar este convite. + Sou {{.MemberArticle}} {{.Member}}, um{{.MemberSuffix}} + orgulhos{{.MemberArticle}} membro da SINFO. Em nome da + equipa organizadora da SINFO {{.Edition}}, + convidamo-l{{.SpeakerArticle}} a participar como + orador{{.SpeakerSuffix}} de uma palestra no nosso evento. + Ficaríamos muito gratos pela oportunidade de + recebê-l{{.SpeakerArticle}} se aceitar este convite.

@@ -409,9 +405,8 @@ {{if .Paragraph}} {{.Paragraph}} {{else}} A maioria dos nossos visitantes são estudantes de Informática ansiosos por começar as suas carreiras e seria com muito prazer que iam - ouvi-lo/a falar sobre o seu - percurso profissional e aprender com a sua experiência! - {{end}} + ouvi-l{{.SpeakerArticle}} falar sobre o seu percurso + profissional e aprender com a sua experiência! {{end}}


diff --git a/frontend/src/components/BulkEmailDialogTrigger.vue b/frontend/src/components/BulkEmailDialogTrigger.vue index 31adcccb..d02edcff 100644 --- a/frontend/src/components/BulkEmailDialogTrigger.vue +++ b/frontend/src/components/BulkEmailDialogTrigger.vue @@ -450,7 +450,7 @@ import { import { humanReadableParticipationStatus } from "@/dto/index"; import type { ParticipationStatus } from "@/dto/index"; import type { CompanyWithParticipation } from "@/dto/companies"; -import type { SpeakerWithParticipation } from "@/dto/speakers"; +import type { SpeakerWithContactAndParticipation } from "@/dto/speakers"; import { useBulkCompanyEmails, useBulkSpeakerEmails, @@ -462,7 +462,7 @@ interface Props { size?: "sm" | "default" | "lg" | "icon"; buttonClass?: string; companies?: CompanyWithParticipation[]; - speakers?: SpeakerWithParticipation[]; + speakers?: SpeakerWithContactAndParticipation[]; entityType: "companies" | "speakers"; } @@ -499,7 +499,7 @@ const speakerBulk = useBulkSpeakerEmails(); const processBulkEmails = async ( templateCategory: EmailTemplateCategory, statuses: ParticipationStatus[], - entities: CompanyWithParticipation[] | SpeakerWithParticipation[], + entities: CompanyWithParticipation[] | SpeakerWithContactAndParticipation[], ) => { if (props.entityType === "companies") { return companyBulk.processBulkEmails( @@ -511,7 +511,7 @@ const processBulkEmails = async ( return speakerBulk.processBulkEmails( templateCategory, statuses, - entities as SpeakerWithParticipation[], + entities as SpeakerWithContactAndParticipation[], ); }; diff --git a/frontend/src/components/Communications.vue b/frontend/src/components/Communications.vue index e238268f..91ec5706 100644 --- a/frontend/src/components/Communications.vue +++ b/frontend/src/components/Communications.vue @@ -154,7 +154,8 @@ {{ getKindLabel(thread.kind) }} -
+ + {{ formatDate(thread.posted) }}
@@ -350,7 +351,7 @@ import { ref, computed, watch, nextTick } from "vue"; import { useQuery } from "@pinia/colada"; import { getAllEvents } from "@/api/events"; import { getAllMembers } from "@/api/members"; -import { ThreadKind, ThreadStatus } from "@/dto/threads"; +import { ThreadKind } from "@/dto/threads"; import type { ParticipationCommunications, ThreadWithEntry, @@ -704,7 +705,7 @@ const getKindColor = (kind: ThreadKind): string => { } }; -const getStatusLabel = (status: ThreadStatus): string => { +/*const getStatusLabel = (status: ThreadStatus): string => { switch (status) { case ThreadStatus.ThreadStatusApproved: return "Approved"; @@ -728,7 +729,7 @@ const getStatusColor = (status: ThreadStatus): string => { default: return "bg-gray-400"; } -}; +};*/ const formatDate = (dateString: string): string => { const date = new Date(dateString); diff --git a/frontend/src/components/companies/ContactForm.vue b/frontend/src/components/companies/ContactForm.vue index 44311468..a90a8555 100644 --- a/frontend/src/components/companies/ContactForm.vue +++ b/frontend/src/components/companies/ContactForm.vue @@ -16,7 +16,7 @@
- +
- +
-
@@ -266,6 +269,13 @@ const isStep1Valid = computed(() => { ); }); +const isStep3Valid = computed(() => { + return ( + contactData.value.gender != undefined && + contactData.value.language != undefined + ); +}); + // Step navigation const nextStep = () => { if (currentStep.value === 1 && validateStep1()) { @@ -352,6 +362,8 @@ const createSpeakerAndFinish = async () => { (phone) => phone.phone && phone.phone.trim().length > 0, ), socials: contactData.value.socials || {}, + gender: contactData.value.gender, + language: contactData.value.language, }; const createData: CreateSpeakerData = { diff --git a/frontend/src/components/speakers/SpeakerCommunications.vue b/frontend/src/components/speakers/SpeakerCommunications.vue index 1d8fb89d..4737af5c 100644 --- a/frontend/src/components/speakers/SpeakerCommunications.vue +++ b/frontend/src/components/speakers/SpeakerCommunications.vue @@ -13,7 +13,7 @@