import { schema } from 'nexus' import * as Auth from '../../utils/auth' import { logger } from '../../utils/logger' import * as ManagingCompanyController from '../../controllers/managingCompany' import { syncCondoManger } from '../../queues' export const ManagingCompany = schema.objectType({ name: 'ManagingCompany', definition(t) { t.model.id() t.model.createdAt() t.model.updatedAt() t.model.active() t.model.shortName() t.model.longName() t.model.email() t.model.automaticChatMessage() t.model.automaticChatMessageFr() t.model.isUsingV2() t.model.stripeAccountAccessToken() t.model.condoManagerApiKey() t.model.address() t.model.emailHeaderImage() t.model.emergencyPhone() t.model.logo() t.model.logoAvatar() t.model.phone() t.model.roles() t.model.serviceRequestCategories() t.model.tasksCategories() t.model.tasksStatuses() t.model.users() t.model.businessHours() t.model.projects() t.model.offenseCategories() t.model.serviceRequestPriorities() t.model.specialDates() t.model.zoomAccessToken() t.model.zoomAccessTokenExpiresIn() t.model.zoomRefreshToken() t.model.condoManagerId() }, }) export const ManagingCompanyMutation = schema.extendType({ type: 'Mutation', definition: (t) => { t.crud.deleteOneManagingCompany({ alias: 'deleteManagingCompany' }) t.crud.updateOneManagingCompany({ alias: 'updateManagingCompany' }) t.crud.createOneManagingCompany({ alias: 'createManagingCompany' }) t.field('syncAllManagingCompanyProjectsWithCondoManager', { type: 'Boolean', args: { managingCompanyId: schema.stringArg({ required: true }), }, resolve: async (parent, { managingCompanyId }, ctx) => { await syncCondoManger({ managingCompanyId }) return true }, }) t.field('createManagingCompany', { type: 'ManagingCompany', args: { data: schema.arg({ type: 'ManagingCompanyCreateInput' }), }, resolve: async (_, { data }) => { const createdManagingCompany = await ManagingCompanyController.createManagingCompany({ data, }) return createdManagingCompany }, }) }, }) export const ManagingCompanyQuery = schema.extendType({ type: 'Query', definition(t) { t.crud.managingCompany() t.crud.managingCompanies({ filtering: true, ordering: true }) }, })