import { prismaClient as prisma } from '../../../prismaClient' import { condoManagerLogger } from '../../logger' // Here, maybe we could have use the prisma utils function that we created that compare 2 objects and // based on the fields it will create the final data to upload export default async function updateManagingCompanyInformation({ managingCompanyId, shortName, longName, email, mainPhoneNumber, emergencyPhoneNumber, address1, city, state, country, apartmentNumber, zip, }: { managingCompanyId: string shortName: string longName: string email: string mainPhoneNumber: string emergencyPhoneNumber: string address1: string city: string state: string country: string apartmentNumber?: string zip: string }) { condoManagerLogger.info('Updating managing company information') const existingManagingCompany = await prisma.managingCompany.findOne({ where: { id: managingCompanyId }, select: { id: true, shortName: true, email: true, phone: { select: { number: true } }, emergencyPhone: { select: { number: true } }, address: { select: { address1: true, apartmentNumber: true, zip: true, city: true, state: true, country: true, }, }, }, }) const updateData: any = {} if ( shortName && (!existingManagingCompany.shortName || existingManagingCompany.shortName === 'Managing company ABC') ) { updateData.shortName = shortName updateData.longName = longName } if (email && !existingManagingCompany.email) { updateData.email = email } if (address1) { if (existingManagingCompany.address) { updateData.address = { update: { address1, city, state, country, apartmentNumber, zip, }, } } else { updateData.address = { create: { address1, city, state, country, apartmentNumber, zip, }, } } } if (mainPhoneNumber) { if (existingManagingCompany.phone) { updateData.phone = { update: { number: mainPhoneNumber, }, } } else { updateData.phone = { create: { number: mainPhoneNumber, }, } } } if (emergencyPhoneNumber) { if (existingManagingCompany.emergencyPhone) { updateData.emergencyPhone = { update: { number: emergencyPhoneNumber, }, } } else { updateData.emergencyPhone = { create: { number: emergencyPhoneNumber, }, } } } if (Object.keys(updateData).length > 0) { await prisma.managingCompany.update({ where: { id: existingManagingCompany.id }, data: updateData, }) } condoManagerLogger.info('Done Updating managing company information') }