@@ -15,10 +15,7 @@ import {
1515 usersToCommunitiesSchema ,
1616} from "~/datasources/db/schema" ;
1717import { applicationError , ServiceErrors } from "~/errors" ;
18- import {
19- sendActualUserTicketQREmails ,
20- sendTicketInvitationEmails ,
21- } from "~/notifications/tickets" ;
18+ import { sendActualUserTicketQREmails } from "~/notifications/tickets" ;
2219import { UserRef } from "~/schema/shared/refs" ;
2320import { pronounsEnum } from "~/schema/user/types" ;
2421import { usersFetcher } from "~/schema/user/userFetcher" ;
@@ -276,6 +273,13 @@ const placeHolderUsersInput = builder.inputType("placeHolderUsersInput", {
276273 fields : ( t ) => ( {
277274 email : t . string ( { required : true } ) ,
278275 name : t . string ( { required : true } ) ,
276+ pais : t . string ( ) ,
277+ ciudad : t . string ( ) ,
278+ trabajasEnOrganizacion : t . string ( ) ,
279+ nombreOrganizacion : t . string ( ) ,
280+ rolEnOrganizacion : t . string ( ) ,
281+ foodAllergies : t . string ( ) ,
282+ emergencyPhoneNumber : t . string ( ) ,
279283 } ) ,
280284} ) ;
281285
@@ -306,15 +310,56 @@ builder.mutationField("createPlaceholderdUsers", (t) =>
306310 throw new Error ( "User not found" ) ;
307311 }
308312
309- const cleanedUsers = users . map ( ( u ) =>
310- insertUsersSchema . parse ( {
311- name : u . name . trim ( ) ,
312- email : u . email . trim ( ) . toLowerCase ( ) ,
313- username : `${ slugify ( u . name , { lower : true } ) } ${ Math . floor (
314- Math . random ( ) * 10 ,
315- ) } `,
316- } ) ,
317- ) ;
313+ const usersMap = new Map <
314+ string ,
315+ {
316+ id : string | undefined ;
317+ name : string ;
318+ email : string ;
319+ pais : string | undefined ;
320+ ciudad : string | undefined ;
321+ username : string ;
322+ trabajasEnOrganizacion : boolean ;
323+ nombreOrganizacion : string | undefined ;
324+ rolEnOrganizacion : string | undefined ;
325+ foodAllergies : string | undefined ;
326+ emergencyPhoneNumber : string | undefined ;
327+ }
328+ > ( ) ;
329+
330+ const cleanedUsers = users . map ( ( u ) => {
331+ const lowerCaseEmail = u . email . trim ( ) . toLowerCase ( ) ;
332+
333+ const name = u . name . trim ( ) ;
334+ const email = u . email . trim ( ) . toLowerCase ( ) ;
335+ const username = `${ slugify ( name , { lower : true } ) } ${ Math . floor (
336+ Math . random ( ) * 100 ,
337+ ) } `;
338+ const trabajasEnOrganizacion =
339+ u . trabajasEnOrganizacion ?. toLowerCase ( ) === 'sí"' ;
340+
341+ if ( ! usersMap . has ( lowerCaseEmail ) ) {
342+ usersMap . set ( lowerCaseEmail , {
343+ id : undefined ,
344+ name,
345+ email,
346+ username,
347+ pais : u . pais ?? undefined ,
348+ ciudad : u . ciudad ?? undefined ,
349+ trabajasEnOrganizacion,
350+ nombreOrganizacion : u . nombreOrganizacion ?? undefined ,
351+ rolEnOrganizacion : u . rolEnOrganizacion ?? undefined ,
352+ foodAllergies : u . foodAllergies ?? undefined ,
353+ emergencyPhoneNumber : u . emergencyPhoneNumber ?? undefined ,
354+ } ) ;
355+ }
356+
357+ return insertUsersSchema . parse ( {
358+ name,
359+ email,
360+ username,
361+ } ) ;
362+ } ) ;
318363
319364 const createdUsers = await DB . insert ( usersSchema )
320365 . values ( cleanedUsers )
@@ -324,6 +369,32 @@ builder.mutationField("createPlaceholderdUsers", (t) =>
324369 const emails = cleanedUsers . map ( ( u ) => u . email ) ;
325370 const ids = createdUsers . map ( ( u ) => u . id ) ;
326371
372+ const insertUserData = createdUsers
373+ . map ( ( u ) => {
374+ const user = usersMap . get ( u . email ) ;
375+
376+ if ( ! user ) {
377+ return null ;
378+ }
379+
380+ return insertUserDataSchema . parse ( {
381+ userId : u . id ,
382+ countryOfResidence : user . pais ?? "" ,
383+ city : user . ciudad ?? "" ,
384+ worksInOrganization : user . trabajasEnOrganizacion ,
385+ organizationName : user . nombreOrganizacion ?? "" ,
386+ roleInOrganization : user . rolEnOrganizacion ?? "" ,
387+ foodAllergies : user . foodAllergies ?? "" ,
388+ emergencyPhoneNumber : user . emergencyPhoneNumber ?? "" ,
389+ } ) ;
390+ } )
391+ . filter ( Boolean ) ;
392+
393+ await DB . insert ( userDataSchema )
394+ . values ( insertUserData )
395+ . onConflictDoNothing ( )
396+ . returning ( ) ;
397+
327398 const foundUsers = await DB . query . usersSchema . findMany ( {
328399 where : ( u , { inArray, or } ) =>
329400 or ( inArray ( u . email , emails ) , inArray ( u . id , ids ) ) ,
0 commit comments