import { prismaClient as prisma } from '../../prismaClient' const getManagingCompanyData = async (managingCompanyId) => { const managingCompanyProjectsData = [] const selectedManagingCompanyProjects = await prisma.managingCompany .findOne({ where: { id: managingCompanyId } }) .projects() for (const projectForManagingCompany of selectedManagingCompanyProjects) { const { id } = projectForManagingCompany const buildingsOfProject = await prisma.project.findOne({ where: { id } }).buildings() const projectFolders = await prisma.project.findOne({ where: { id } }).folders() const [ projectHasAtLeastOne, projectHasBuildingWithAtLeastOneUnit, projectHasFolderWithAtLeastOneFile, ] = await Promise.all([ prisma.project.findOne({ where: { id }, include: { amenities: { select: { id: true } }, contacts: { select: { id: true } }, rules: { select: { id: true } }, posts: { select: { id: true } }, events: { select: { id: true } }, tasks: { select: { id: true } }, segments: { select: { id: true } }, users: { where: { role: { equals: 'RESIDENT' } } }, }, }), buildingsOfProject.filter(async (building) => { return (await prisma.property.count({ where: { buildingId: building.id } })) > 0 }), projectFolders.filter(async (project) => { return (await prisma.file.count({ where: { folders: { some: { id: project.id } } } })) > 0 }), ]) const projectData = { use_amenities: projectHasAtLeastOne.amenities.length > 0, use_contacts: projectHasAtLeastOne.contacts.length > 0, use_rules: projectHasAtLeastOne.rules.length > 0, use_residents: projectHasAtLeastOne.users.length > 0, use_posts: projectHasAtLeastOne.posts.length > 0, use_events: projectHasAtLeastOne.events.length > 0, use_tasks: projectHasAtLeastOne.tasks.length > 0, use_groups: projectHasAtLeastOne.segments.length > 0, use_units: projectHasBuildingWithAtLeastOneUnit.length > 0, use_files: projectHasFolderWithAtLeastOneFile.length > 0, } managingCompanyProjectsData.push(projectData) } return managingCompanyProjectsData }