@placeshakr/config 10.20.6-alpha.0 → 10.20.6-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"config.cjs.development.js","sources":["../src/auth/index.ts","../src/auth/policy.ts","../src/environment/base.ts","../src/environment/decorators.ts","../src/environment/index.ts","../src/helpers/index.ts","../src/helpers/uid.ts","../src/path/index.ts","../src/plans/base.ts","../src/plans/index.ts","../src/types.ts","../src/utils/flatten.ts","../src/events/index.ts"],"sourcesContent":["import { Environment } from '../index';\n\nexport enum ROLE {\n CLIENT = 'client',\n SELLER = 'seller',\n PRO = 'pro',\n AGENT = 'agent',\n ADMIN = 'admin',\n OWNER = 'owner',\n SUPERADMIN = 'superadmin',\n}\n\nexport type SecurityContext = {\n getRole: (claims: any) => ROLE;\n getRoles: (claims: any) => ROLE[];\n canActAs: (role: ROLE, claims: any) => boolean;\n is: (role: ROLE, claims: any) => boolean;\n};\n\n/**\n * security context\n */\nexport default (env: Environment): SecurityContext => {\n const orderedAccess = [\n ROLE.CLIENT,\n ROLE.PRO,\n ROLE.AGENT,\n ROLE.ADMIN,\n ROLE.SUPERADMIN,\n ];\n\n const hasRole = (claims: any) =>\n !claims || !claims[env.security.claims.role] ? false : true;\n\n const is = (claims: any, role: ROLE): boolean => {\n if (!hasRole(claims)) return false;\n\n return claims[env.security.claims.role] === role;\n };\n\n /**\n * Determine if an user can act under another security role\n *\n * @param role\n * @param claims\n */\n const canActAs = (role: ROLE, claims: any): boolean => {\n const userRole = getRole(claims);\n return orderedAccess.indexOf(role) < orderedAccess.indexOf(userRole);\n };\n\n /**\n * Get user role\n * @param claims\n */\n const getRole = (claims: any) =>\n hasRole(claims) ? claims[env.security.claims.role] : null;\n\n /**\n * Get all the roles on which an user can impersonate\n * @param claims\n */\n const getRoles = (claims: any) =>\n orderedAccess.filter(role => canActAs(role, claims));\n\n return {\n is,\n canActAs,\n getRole,\n getRoles,\n };\n};\n","type ProjectPolicy =\n | 'project.view'\n | 'project.edit'\n | 'project.create'\n | 'project.delete'\n | 'project.progress.edit'\n\n // assignations\n | 'project.assign.pro'\n | 'project.assign.agent'\n | 'project.assign.client'\n | 'project.assign.seller'\n | 'project.unassign.pro'\n | 'project.unassign.agent'\n | 'project.unassign.client'\n | 'project.unassign.seller'\n\n // other actions\n | 'project.validate'\n | 'project.status.edit'\n | 'project.pro.prices.view'\n | 'project.enterprise.prices.view'\n | 'project.sync.agenda'\n | 'project.estimation'\n\n // devis\n | 'project.devis.create'\n | 'project.devis.edit'\n | 'project.devis.delete'\n\n // notes\n | 'project.note.view'\n | 'project.note.create'\n | 'project.note.edit'\n | 'project.note.delete'\n\n // documents\n | 'project.document.view'\n | 'project.document.create'\n | 'project.document.edit'\n | 'project.document.delete'\n\n // medias\n | 'project.media.view'\n | 'project.media.create'\n | 'project.media.edit'\n | 'project.media.delete'\n\n // events\n | 'project.event.view'\n | 'project.event.create'\n | 'project.event.edit';\n\n/**\n * Devis policy\n */\ntype DevisPolicy =\n | 'devis.create'\n | 'devis.view'\n | 'devis.edit'\n | 'devis.delete'\n | 'devis.status.edit'\n | 'devis.email.send'\n | 'devis.validate'\n | 'devis.from.template.create';\n\n/**\n * Configuration\n */\ntype ConfigurationPolicy =\n | 'configuration.view'\n\n // status\n | 'configuration.status.view'\n | 'configuration.status.create'\n | 'configuration.status.edit'\n | 'configuration.status.delete'\n\n // providers\n | 'configuration.provider.view'\n | 'configuration.provider.edit'\n | 'configuration.provider.delete'\n | 'configuration.provider.create'\n\n // material providers\n | 'configuration.material.provider.view'\n | 'configuration.material.provider.edit'\n | 'configuration.material.provider.delete'\n | 'configuration.material.provider.create'\n\n // materials\n | 'configuration.material.view'\n | 'configuration.material.edit'\n | 'configuration.material.delete'\n | 'configuration.material.create'\n\n // operations\n | 'configuration.operation.view'\n | 'configuration.operation.edit'\n | 'configuration.operation.delete'\n | 'configuration.operation.create'\n\n // devis templates\n | 'configuration.devis.template.view'\n | 'configuration.devis.template.edit'\n | 'configuration.devis.template.delete'\n | 'configuration.devis.template.create'\n\n // team\n | 'configuration.team.view'\n\n // users (pro)\n | 'configuration.pro.edit'\n | 'configuration.pro.delete'\n | 'configuration.pro.create'\n | 'configuration.pro.view'\n\n // users (agent)\n | 'configuration.agent.edit'\n | 'configuration.agent.delete'\n | 'configuration.agent.create'\n | 'configuration.agent.view'\n\n // users (admins)\n | 'configuration.admin.edit'\n | 'configuration.admin.delete'\n | 'configuration.admin.create'\n | 'configuration.admin.view'\n\n // enterprise\n | 'configuration.enterprise.edit'\n | 'configuration.enterprise.delete'\n | 'configuration.enterprise.create'\n | 'configuration.enterprise.view'\n | 'configuration.enterprise.payment.method.add'\n | 'configuration.enterprise.payment.method.delete'\n | 'configuration.enterprise.payment.history.view';\n\nexport type Policy = ProjectPolicy | DevisPolicy | ConfigurationPolicy;\n\nexport const acls: Policy[] = [\n 'project.view',\n 'project.edit',\n 'project.create',\n 'project.delete',\n 'project.progress.edit',\n\n // assignations\n 'project.assign.pro',\n 'project.assign.agent',\n 'project.assign.client',\n 'project.assign.seller',\n 'project.unassign.pro',\n 'project.unassign.agent',\n 'project.unassign.client',\n 'project.unassign.seller',\n\n // other actions\n 'project.validate',\n 'project.status.edit',\n 'project.pro.prices.view',\n 'project.enterprise.prices.view',\n 'project.sync.agenda',\n 'project.estimation',\n\n // devis\n 'project.devis.create',\n 'project.devis.edit',\n 'project.devis.delete',\n\n // notes\n 'project.note.view',\n 'project.note.create',\n 'project.note.edit',\n 'project.note.delete',\n\n // documents\n 'project.document.view',\n 'project.document.create',\n 'project.document.edit',\n 'project.document.delete',\n\n // medias\n 'project.media.view',\n 'project.media.create',\n 'project.media.edit',\n 'project.media.delete',\n\n // events\n 'project.event.view',\n 'project.event.create',\n 'project.event.edit',\n\n /**\n * Devis policy\n */\n\n 'devis.create',\n 'devis.view',\n 'devis.edit',\n 'devis.delete',\n 'devis.status.edit',\n 'devis.email.send',\n 'devis.validate',\n 'devis.from.template.create',\n\n /**\n * Configuration\n */\n 'configuration.view',\n\n // status\n 'configuration.status.view',\n 'configuration.status.create',\n 'configuration.status.edit',\n 'configuration.status.delete',\n\n // providers\n 'configuration.provider.view',\n 'configuration.provider.edit',\n 'configuration.provider.delete',\n 'configuration.provider.create',\n\n // material providers\n 'configuration.material.provider.view',\n 'configuration.material.provider.edit',\n 'configuration.material.provider.delete',\n 'configuration.material.provider.create',\n\n // materials\n 'configuration.material.view',\n 'configuration.material.edit',\n 'configuration.material.delete',\n 'configuration.material.create',\n\n // operations\n 'configuration.operation.view',\n 'configuration.operation.edit',\n 'configuration.operation.delete',\n 'configuration.operation.create',\n\n // devis templates\n 'configuration.devis.template.view',\n 'configuration.devis.template.edit',\n 'configuration.devis.template.delete',\n 'configuration.devis.template.create',\n\n // team\n 'configuration.team.view',\n\n // users (pro)\n 'configuration.pro.edit',\n 'configuration.pro.delete',\n 'configuration.pro.create',\n 'configuration.pro.view',\n\n // users (agent)\n 'configuration.agent.edit',\n 'configuration.agent.delete',\n 'configuration.agent.create',\n 'configuration.agent.view',\n\n // users (admins)\n 'configuration.admin.edit',\n 'configuration.admin.delete',\n 'configuration.admin.create',\n 'configuration.admin.view',\n\n // enterprise\n 'configuration.enterprise.edit',\n 'configuration.enterprise.delete',\n 'configuration.enterprise.create',\n 'configuration.enterprise.view',\n 'configuration.enterprise.payment.method.add',\n 'configuration.enterprise.payment.method.delete',\n 'configuration.enterprise.payment.history.view',\n];\n","// tslint:disable-next-line: object-literal-sort-keys\nimport { Environment } from './index';\n\nconst productionEnvironment: Environment = {\n credentials: {\n algolia: {},\n cloudinary: {},\n stripe: {},\n },\n isTest: false,\n name: 'production',\n\n security: {\n search: {\n // this field is used to set the scope of the record (the enterprise owner of record)\n scopeField: 'searchable(scope)',\n visibleBy: 'visibility',\n ownerField: 'owner',\n },\n claims: {\n enterprise: 'enterprise',\n role: 'role',\n secureSearchApiKey: 'searchKey',\n },\n },\n realtime: {\n default: 'enterprises/{enterpriseId}/indexes/{indexName}',\n projects:\n 'enterprises/{enterpriseId}/indexes/{indexName}/projects/{projectId}',\n },\n schema: {\n collections: {\n users: 'users',\n enterprises: 'enterprises',\n // tslint:disable-next-line: object-literal-sort-keys\n billing: 'enterprises/{enterpriseId}/billing',\n projects: 'enterprises/{enterpriseId}/projects',\n medias: 'enterprises/{enterpriseId}/projects/{projectId}/medias',\n events: 'enterprises/{enterpriseId}/projects/{projectId}/events',\n notes: 'enterprises/{enterpriseId}/projects/{projectId}/notes',\n visitReports:\n 'enterprises/{enterpriseId}/projects/{projectId}/visitReports',\n documents: 'enterprises/{enterpriseId}/projects/{projectId}/documents',\n devis: 'enterprises/{enterpriseId}/projects/{projectId}/devis',\n plans: 'enterprises/{enterpriseId}/projects/{projectId}/plans',\n downPayments:\n 'enterprises/{enterpriseId}/projects/{projectId}/downPayments',\n providers: 'enterprises/{enterpriseId}/providers',\n statuses: 'enterprises/{enterpriseId}/statuses',\n orders: 'enterprises/{enterpriseId}/projects/{projectId}/orders',\n bills: 'enterprises/{enterpriseId}/projects/{projectId}/bills',\n counters: 'counters',\n invoices: 'enterprises/{enterpriseId}/invoices',\n materialsProvider: 'enterprises/{enterpriseId}/materialsProvider',\n materials:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}/materials',\n invitations: 'enterprises/{enterpriseId}/invitations',\n devisTemplates: 'enterprises/{enterpriseId}/devisTemplates',\n estimations: 'enterprises/{enterpriseId}/estimations',\n userNotifications: 'users/{userId}/profiles/{enterpriseId}/notifications',\n histories: 'enterprises/{enterpriseId}/histories',\n receptionVouchers:\n 'enterprises/{enterpriseId}/projects/{projectId}/receptionVouchers',\n indexes: 'enterprises/{enterpriseId}/indexes',\n notifications: 'enterprises/{enterpriseId}/notifications',\n nomenclatures: 'enterprises/{enterpriseId}/nomenclatures',\n categories: 'enterprises/{enterpriseId}/categories',\n operationsCatalogs: 'enterprises/{enterpriseId}/operationsCatalogs',\n operationsGroups: 'enterprises/{enterpriseId}/operationsGroups',\n operations:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations',\n operationMaterials:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}/materials',\n devisVersions:\n 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}/versions',\n enterpriseDocuments: 'enterprises/{enterpriseId}/documents',\n enterpriseMedias: 'enterprises/{enterpriseId}/medias',\n configurations: 'enterprises/{enterpriseId}/configurations',\n logs: 'enterprises/{enterpriseId}/logs',\n systemVersions: 'systemVersions',\n userProfiles: 'users/{userId}/profiles',\n evaluationsConfig: 'enterprises/{enterpriseId}/evaluationsConfig',\n evaluations: 'enterprises/{enterpriseId}/evaluations',\n devisCandidates:\n 'enterprises/{enterpriseId}/projects/{projectId}/devisCandidates',\n workOrders: 'enterprises/{enterpriseId}/workOrders',\n candidatures:\n 'enterprises/{enterpriseId}/projects/{projectId}/candidatures',\n },\n docs: {\n user: 'users/{userId}',\n userProfile: 'users/{userId}/profiles/{enterpriseId}',\n billing: 'enterprises/{enterpriseId}/billing/{billingId}',\n enterprise: 'enterprises/{enterpriseId}',\n\n global: 'global/stats',\n project: 'enterprises/{enterpriseId}/projects/{projectId}',\n medias:\n 'enterprises/{enterpriseId}/projects/{projectId}/medias/{mediaId}',\n events:\n 'enterprises/{enterpriseId}/projects/{projectId}/events/{eventId}',\n notes: 'enterprises/{enterpriseId}/projects/{projectId}/notes/{noteId}',\n visitReports:\n 'enterprises/{enterpriseId}/projects/{projectId}/visitReports/{visitReportId}',\n documents:\n 'enterprises/{enterpriseId}/projects/{projectId}/documents/{documentId}',\n devis: 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}',\n plans: 'enterprises/{enterpriseId}/projects/{projectId}/plans/{planId}',\n downPayments:\n 'enterprises/{enterpriseId}/projects/{projectId}/downPayments/{downPaymentId}',\n paymentMethods:\n 'enterprises/{enterpriseId}/paymentMethods/{paymentMethodId}',\n provider: 'enterprises/{enterpriseId}/providers/{providerId}',\n status: 'enterprises/{enterpriseId}/statuses/{statusId}',\n orders:\n 'enterprises/{enterpriseId}/projects/{projectId}/orders/{orderId}',\n bills: 'enterprises/{enterpriseId}/projects/{projectId}/bills/{billId}',\n indexes:\n 'enterprises/{enterpriseId}/projects/{projectId}/indexes/{indexId}',\n counter: 'counters/{counterId}',\n invoice: 'enterprises/{enterpriseId}/invoices/{invoiceId}',\n materialsProvider:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}',\n material:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}/materials/{materialId}',\n invitation: 'enterprises/{enterpriseId}/invitations/{invitationId}',\n devisTemplate:\n 'enterprises/{enterpriseId}/devisTemplates/{devisTemplateId}',\n estimation: 'enterprises/{enterpriseId}/estimations/{estimationId}',\n userNotification:\n 'users/{userId}/profiles/{enterpriseId}/notifications/{notificationId}',\n history: 'enterprises/{enterpriseId}/histories/{historyId}',\n receptionVouchers:\n 'enterprises/{enterpriseId}/projects/{projectId}/receptionVouchers/{receptionVoucherId}',\n notification: 'enterprises/{enterpriseId}/notifications/{notificationId}',\n nomenclatures:\n 'enterprises/{enterpriseId}/nomenclatures/{nomenclatureId}',\n category: 'enterprises/{enterpriseId}/categories/{categoryId}',\n operationsCatalogs:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}',\n operationsGroups:\n 'enterprises/{enterpriseId}/operationsGroups/{operationsGroupId}',\n operation:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}',\n operationMaterial:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}/materials/{operationMaterialId}',\n devisVersion:\n 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}/versions/{versionId}',\n enterpriseDocument: 'enterprises/{enterpriseId}/documents/{documentId}',\n enterpriseMedia: 'enterprises/{enterpriseId}/medias/{mediaId}',\n configuration:\n 'enterprises/{enterpriseId}/configurations/{configurationId}',\n log: 'enterprises/{enterpriseId}/logs/{logId}',\n systemVersion: 'systemVersions/{systemVersionId}',\n evaluationConfig:\n 'enterprises/{enterpriseId}/evaluationsConfig/{evaluationConfigId}',\n evaluation: 'enterprises/{enterpriseId}/evaluations/{evaluationId}',\n devisCandidate:\n 'enterprises/{enterpriseId}/projects/{projectId}/devisCandidates/{devisCandidateId}',\n workOrder: 'enterprises/{enterpriseId}/workOrders/{workOrderId}',\n candidature:\n 'enterprises/{enterpriseId}/projects/{projectId}/candidatures/{candidatureId}',\n },\n indexes: {\n // users\n admins: 'admins',\n agents: 'agents',\n pros: 'pros',\n sellers: 'sellers',\n clients: 'clients',\n // projects\n projects: 'projects',\n medias: 'projects-medias',\n events: 'projects-events',\n devis: 'projects-devis',\n // configuration\n providers: 'providers',\n materials: 'materials',\n operations: 'operations',\n operationsMaterials: 'operations-materials',\n estimations: 'estimations',\n nomenclatures: 'nomenclatures',\n workOrders: 'workOrders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'system-status',\n systemNomenclatures: 'system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n search: {\n users: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: ['active', 'searchable(scope)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n agents: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'isLeader',\n 'leader',\n 'searchable(userId)',\n 'has_leader',\n 'searchable(email)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n pros: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'searchable(userId)',\n 'searchable(email)',\n 'searchable(specialities)',\n 'searchable(skills)',\n 'searchable(scope)',\n 'status',\n 'siren',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n admins: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n 'status',\n ],\n attributesForFaceting: [\n 'active',\n 'searchable(email)',\n 'searchable(userId)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n sellers: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'isLeader',\n 'leader',\n 'has_leader',\n 'searchable(userId)',\n 'searchable(email)',\n 'searchable(provider)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n clients: {\n searchableAttributes: ['email', 'displayName', 'address', 'phone.mobile'],\n attributesForFaceting: [\n 'active',\n 'userId',\n 'searchable(email)',\n 'searchable(scope)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n providers: {\n searchableAttributes: [\n 'name',\n 'contact.name',\n 'contact.email',\n 'address',\n 'siret',\n ],\n attributesForFaceting: [\n 'tva',\n 'commission.enterprise',\n 'commission.pro',\n 'commission.provider',\n 'searchable(scope)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n statuses: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(forDashboard)',\n 'searchable(default)',\n 'searchable(locked)',\n ],\n ranking: ['asc(order)', 'asc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n materials: {\n searchableAttributes: ['name', 'unitPrice', 'provider'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(scope)',\n 'searchable(provider)',\n 'searchable(category)',\n 'margin.id',\n 'supplier.id',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operations: {\n searchableAttributes: ['name', 'unitPrice', 'objectID'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(lot)',\n 'searchable(scope)',\n 'searchable(catalogId)',\n 'searchable(category)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operationsMaterials: {\n searchableAttributes: ['name', 'unitPrice', 'unit', 'externalId'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(provider)',\n 'searchable(optId)',\n 'searchable(externalId)',\n ],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n projects: {\n searchableAttributes: [\n 'name',\n 'address',\n 'description',\n 'price.total',\n 'client.displayName',\n 'client.email',\n 'client.address',\n 'client.phone.number',\n 'pro.displayName',\n 'pro.email',\n 'agents.displayName',\n 'agents.email',\n 'sellers.displayName',\n 'sellers.email',\n 'provider.name',\n 'status',\n 'workOrderId.region',\n 'workOrderId.skills',\n ],\n attributesForFaceting: [\n 'parent.id',\n 'price.total',\n 'searchable(type)',\n 'searchable(priority)',\n 'searchable(status)',\n 'client.userId',\n 'searchable(client.displayName)',\n 'searchable(client.email)',\n 'agents.userId',\n 'searchable(agents.displayName)',\n 'searchable(agents.email)',\n 'searchable(pro.userId)',\n 'searchable(pro.displayName)',\n 'searchable(pro.email)',\n 'searchable(sellers.userId)',\n 'searchable(sellers.displayName)',\n 'searchable(sellers.email)',\n 'searchable(provider.id)',\n 'searchable(provider.name)',\n 'searchable(category)',\n 'searchable(agentManager)',\n 'searchable(agentReference)',\n 'searchable(sellerManager)',\n 'searchable(sellerReference)',\n 'searchable(scope)',\n 'searchable(marketplaceStatus)',\n 'searchable(candidates)',\n 'searchable(workOrderId.region)',\n 'searchable(workOrderId.skills)',\n ],\n ranking: [\n 'attribute',\n 'desc(updatedAt)',\n 'proximity',\n 'typo',\n 'geo',\n 'words',\n 'filters',\n 'exact',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n workOrders: {\n searchableAttributes: [\n 'reference',\n 'address',\n 'estimatedPrice',\n 'owner.displayName',\n ],\n attributesForFaceting: [\n 'owner',\n 'searchable(scope)',\n 'searchable(priority)',\n 'searchable(status)',\n 'searchable(owner.userId)',\n ],\n ranking: ['desc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n medias: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'owner',\n 'searchable(tags)',\n 'projectId',\n 'searchable(scope)',\n 'createdDate',\n ],\n ranking: ['desc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n devis: {\n searchableAttributes: ['name', 'status'],\n attributesForFaceting: [\n 'searchable(status)',\n 'operationsCatalog',\n 'projectId',\n 'searchable(scope)',\n 'pdf_generated',\n ],\n ranking: ['desc(dateApproved)', 'desc(status)', 'desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n events: {\n searchableAttributes: ['title', 'type'],\n attributesForFaceting: [\n 'type',\n 'searchable(start)',\n 'searchable(end)',\n 'owner',\n 'projectId',\n 'searchable(scope)',\n ],\n ranking: ['desc(start)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemMaterials: {\n searchableAttributes: ['name', 'unitPrice'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(provider)',\n 'searchable(category)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemOperations: {\n searchableAttributes: ['name', 'unitPrice'],\n attributesForFaceting: ['searchable(lot)'],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemOperationsMaterials: {\n searchableAttributes: ['name', 'unitPrice', 'unit', 'externalId'],\n attributesForFaceting: ['searchable(provider)', 'searchable(optId)'],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemMaterialsProvider: {\n searchableAttributes: ['name', 'status'],\n attributesForFaceting: [\n 'searchable(status)',\n 'searchable(identifier)',\n 'searchable(addMaterials)',\n 'searchable(editable)',\n 'searchable(type)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemStatus: {\n searchableAttributes: ['name', 'color'],\n attributesForFaceting: [\n 'searchable(forDashboard)',\n 'searchable(default)',\n ],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemNomenclatures: {\n searchableAttributes: ['identifier', 'value'],\n attributesForFaceting: ['searchable(identifier)', 'searchable(status)'],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n estimations: {\n searchableAttributes: [\n 'name',\n 'address',\n 'type',\n 'typeProject',\n 'client.displayName',\n 'client.email',\n 'client.address',\n 'client.phone.mobile',\n 'sellers.displayName',\n 'sellers.email',\n 'sellers.phone.mobile',\n 'provider.name',\n ],\n attributesForFaceting: [\n 'searchable(type)',\n 'searchable(typeProject)',\n 'searchable(scope)',\n 'searchable(owner.userId)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemCategories: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(entity)',\n 'searchable(parent)',\n 'searchable(provider)',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n nomenclatures: {\n searchableAttributes: ['value'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(identifier)',\n 'searchable(status)',\n ],\n ranking: ['asc(value)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operationsGroups: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(status)',\n 'searchable(operationsCatalog)',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n workOrder: {\n searchableAttributes: ['reference'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(status)',\n 'searchable(priority)',\n 'searchable(candidates)',\n 'searchable(agenceName)',\n 'searchable(skills)',\n 'searchable(client)',\n ],\n ranking: ['asc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n },\n};\n\nexport default productionEnvironment;\n","import { Environment, EnvironmentDecorator } from './types';\n\nconst dev: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n isTest: true,\n name: 'development',\n});\n\nconst staging: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n isTest: false,\n name: 'staging',\n});\n\nconst test: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n schema: {\n ...base.schema,\n indexes: {\n // tslint:disable-next-line: object-literal-sort-keys\n clients: 'tests-clients',\n pros: 'tests-pros',\n agents: 'tests-agents',\n sellers: 'tests-sellers',\n projects: 'tests-projects',\n medias: 'tests-projects-medias',\n events: 'tests-projects-events',\n devis: 'tests-projects-devis',\n admins: 'tests-admins',\n providers: 'tests-providers',\n materials: 'tests-materials',\n operations: 'tests-operations',\n operationsMaterials: 'test-operations-materials',\n materialsProvider: 'materials-provider',\n devisTemplates: 'devis-templates',\n estimations: 'estimations',\n categories: 'categories',\n operationsCatalogs: 'operations-catalogs',\n nomenclatures: 'nomenclatures',\n operationsGroups: 'operations-groups',\n workOrders: 'work-orders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'test-system-status',\n systemNomenclatures: 'test-system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n isTest: true,\n name: 'test',\n});\n\nconst emulator: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n schema: {\n ...base.schema,\n indexes: {\n // tslint:disable-next-line: object-literal-sort-keys\n clients: 'emulator-clients',\n pros: 'emulator-pros',\n agents: 'emulator-agents',\n sellers: 'emulator-sellers',\n projects: 'emulator-projects',\n medias: 'emulator-projects-medias',\n events: 'emulator-projects-events',\n devis: 'emulator-projects-devis',\n admins: 'emulator-admins',\n providers: 'emulator-providers',\n materials: 'emulator-materials',\n operations: 'emulator-operations',\n operationsMaterials: 'emulator-operations-materials',\n materialsProvider: 'materials-provider',\n devisTemplates: 'devis-templates',\n estimations: 'estimations',\n categories: 'categories',\n operationsCatalogs: 'operations-catalogs',\n nomenclatures: 'nomenclatures',\n operationsGroups: 'operations-groups',\n workOrders: 'work-orders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'emulator-system-status',\n systemNomenclatures: 'emulator-system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n isTest: true,\n name: 'emulator',\n});\n\nexport { dev, staging, test, emulator };\n","import base from './base';\nimport { dev, staging, emulator, test } from './decorators';\nimport { Environment } from './types';\n\nexport enum Environments {\n dev = 'development',\n production = 'production',\n staging = 'staging',\n test = 'test',\n emulator = 'emulator',\n}\n\n/**\n * Load environment configuration\n *\n * @param envName\n */\nexport const getEnv = (envName?: Environments): Environment => {\n switch (envName) {\n case Environments.dev:\n return dev(base);\n case Environments.staging:\n return staging(base);\n case Environments.production:\n return base;\n case Environments.test:\n return test(base);\n case Environments.emulator:\n return emulator(base);\n default:\n return base;\n }\n};\n\nexport { Environment };\n","import * as articho from '../types';\n\nexport interface FactoryCreate<T> {\n create: (id: string, data: Partial<T>) => Partial<T>;\n}\n\nexport interface Helpers {\n projects: FactoryCreate<articho.Project>;\n users: FactoryCreate<articho.User>;\n profiles: FactoryCreate<articho.Profile>;\n notes: FactoryCreate<articho.Note>;\n visitReports: FactoryCreate<articho.VisitReport>;\n medias: FactoryCreate<articho.Media>;\n materials: FactoryCreate<articho.Material>;\n bills: FactoryCreate<articho.Bill>;\n billsIssued: FactoryCreate<articho.BillIssued>;\n billsReceived: FactoryCreate<articho.BillReceived>;\n devis: FactoryCreate<articho.Devis>;\n enterprises: FactoryCreate<articho.Enterprise>;\n providers: FactoryCreate<articho.Provider>;\n status: FactoryCreate<articho.Status>;\n payments: FactoryCreate<articho.Payment>;\n events: FactoryCreate<articho.Event>;\n documents: FactoryCreate<articho.Document>;\n orders: FactoryCreate<articho.Order>;\n plans: FactoryCreate<articho.Plan>;\n materialsProvider: FactoryCreate<articho.MaterialsProvider>;\n devisTemplate: FactoryCreate<articho.DevisTemplate>;\n paymentMethods: FactoryCreate<articho.DevisTemplate>;\n estimations: FactoryCreate<articho.Estimation>;\n invitations: FactoryCreate<articho.Invitation>;\n downPayment: FactoryCreate<articho.DownPayment>;\n histories: FactoryCreate<articho.History>;\n receptionVoucher: FactoryCreate<articho.ReceptionVoucher>;\n nomenclatures: FactoryCreate<articho.Nomenclature>;\n categories: FactoryCreate<articho.Category>;\n operationsCatalog: FactoryCreate<articho.OperationCatalog>;\n operations: FactoryCreate<articho.Operation>;\n operationMaterials: FactoryCreate<articho.OperationMaterial>;\n operationsGroups: FactoryCreate<articho.OperationsGroup>;\n devisVersions: FactoryCreate<articho.DevisVersion>;\n enterpriseDocuments: FactoryCreate<articho.EnterpriseResourse>;\n enterpriseMedias: FactoryCreate<articho.EnterpriseResourse>;\n configurations: FactoryCreate<articho.Configuration>;\n systemVersions: FactoryCreate<articho.SystemVersion>;\n evaluationConfig: FactoryCreate<articho.EvaluationConfig>;\n evaluations: FactoryCreate<articho.Evaluation>;\n devisCandidates: FactoryCreate<articho.Evaluation>;\n workOrders: FactoryCreate<articho.WorkOrder>;\n candidatures: FactoryCreate<articho.Candidatures>;\n indexes: FactoryCreate<any>;\n}\n\n/**\n * This functions adds by default objectID and createdAt, updatedAt variables\n */\nexport const FactoryCreateFunction = <T>() => ({\n create: (id: string, data: Partial<T>) => ({\n // @ts-ignore\n ...(data?.createdAt || data?.updatedAt ? {} : { createdAt: Date.now() }),\n // @ts-ignore\n ...(data?.updatedAt ? {} : { updatedAt: Date.now() }),\n objectID: id,\n id,\n ...data,\n }),\n});\n\nconst helpers: Helpers = {\n profiles: FactoryCreateFunction(),\n projects: FactoryCreateFunction(),\n notes: FactoryCreateFunction(),\n visitReports: FactoryCreateFunction(),\n materials: FactoryCreateFunction(),\n medias: FactoryCreateFunction(),\n plans: FactoryCreateFunction(),\n users: FactoryCreateFunction(),\n payments: FactoryCreateFunction(),\n status: FactoryCreateFunction(),\n providers: FactoryCreateFunction(),\n documents: FactoryCreateFunction(),\n devis: FactoryCreateFunction(),\n enterprises: FactoryCreateFunction(),\n events: FactoryCreateFunction(),\n orders: FactoryCreateFunction(),\n bills: FactoryCreateFunction(),\n billsIssued: FactoryCreateFunction(),\n billsReceived: FactoryCreateFunction(),\n materialsProvider: FactoryCreateFunction(),\n devisTemplate: FactoryCreateFunction(),\n paymentMethods: FactoryCreateFunction(),\n estimations: FactoryCreateFunction(),\n invitations: FactoryCreateFunction(),\n downPayment: FactoryCreateFunction(),\n histories: FactoryCreateFunction(),\n receptionVoucher: FactoryCreateFunction(),\n nomenclatures: FactoryCreateFunction(),\n categories: FactoryCreateFunction(),\n operationsCatalog: FactoryCreateFunction(),\n operations: FactoryCreateFunction(),\n operationMaterials: FactoryCreateFunction(),\n operationsGroups: FactoryCreateFunction(),\n devisVersions: FactoryCreateFunction(),\n enterpriseDocuments: FactoryCreateFunction(),\n enterpriseMedias: FactoryCreateFunction(),\n configurations: FactoryCreateFunction(),\n systemVersions: FactoryCreateFunction(),\n evaluationConfig: FactoryCreateFunction(),\n evaluations: FactoryCreateFunction(),\n indexes: FactoryCreateFunction(),\n devisCandidates: FactoryCreateFunction(),\n workOrders: FactoryCreateFunction(),\n candidatures: FactoryCreateFunction(),\n};\n\nexport default helpers;\n","export interface IUID {\n generate(): string;\n timestamp(uid: string, asDate?: boolean): number | Date;\n}\n\n/**\n * SEE --> https://gist.github.com/mikelehen/3596a30bd69384624c11\n *\n * Generator that creates 20-character string identifiers with the following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't collide.\n * 3. They sort *lexicographically* (timestamp converted to chars which will sort)\n * 4. They're monotonically increasing. This is done by storing previous random bits\n * increasing them only by one.\n */\n\n// ASCII ordered base64 web safe chars.\nconst ASCII_CHARS =\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\nexport const uid: IUID = {\n /**\n * Generate\n * Generates uid push identifier.\n */\n generate: (function () {\n // Timestamp of last push, used to prevent local\n // collisions if you push twice in one ms.\n let lastPushTime = 0;\n\n // We generate 72-bits of randomness which get\n // turned into 12 characters and appended to the\n // timestamp to prevent collisions with other clients.\n // We store the last characters we generated because\n // in the event of a collision, we'll use those same\n // characters except \"incremented\" by one.\n const lastRandChars: any[] = [];\n\n return function () {\n let now = new Date().getTime();\n let duplicateTime = now === lastPushTime;\n\n lastPushTime = now;\n\n let timeStampChars: string[] = new Array(8);\n\n let i: number;\n\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = ASCII_CHARS.charAt(now % 62);\n\n // NOTE: Can't use << here because javascript\n // will convert to int and lose the upper bits.\n now = Math.floor(now / 62);\n }\n\n if (now !== 0)\n throw new Error('We should have converted the entire timestamp.');\n\n let id = timeStampChars.join('');\n\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 62);\n }\n }\n\n // If the timestamp hasn't changed since\n // last push, use the same random number,\n // except incremented by 1.\n else {\n for (i = 11; i >= 0 && lastRandChars[i] === 61; i--) {\n lastRandChars[i] = 0;\n }\n\n lastRandChars[i]++;\n }\n\n for (i = 0; i < 12; i++) {\n id += ASCII_CHARS.charAt(lastRandChars[i]);\n }\n\n if (id.length !== 20) throw new Error('Length should be 20.');\n\n return id;\n };\n })(),\n\n /**\n * Timestamp\n * Gets timestamp from provided uid.\n */\n timestamp: (function () {\n return function (id: string, asDate?: boolean): number | Date {\n let time = 0;\n const data = id.substring(0, 8);\n\n for (let i = 0; i < 8; i++) {\n time = time * 62 + ASCII_CHARS.indexOf(data[i]);\n }\n\n if (asDate) return new Date(time);\n\n return time;\n };\n })(),\n};\n","import { Environment } from '../index';\n\ninterface IPathParams {\n [key: string]: any;\n}\n\nexport const reversePathName = (\n path: string,\n env: Environment\n): string | null => {\n const pathParts = path.split('/');\n\n const pathnames = Object.keys(env.schema.docs).filter(pathName => {\n // only paths with same amount of parts should match\n // @ts-ignore\n return env.schema.docs[pathName].split('/').length === pathParts.length;\n });\n\n const pathvalues = Object.values(env.schema.docs).filter(pathvalue => {\n // only paths with same amount of parts should match\n return pathvalue.split('/').length === pathParts.length;\n });\n\n const index = pathvalues.findIndex(p => {\n const parts = p.split('/');\n\n const fulfilledParts = parts\n .map((part, idx) => (/\\{(\\w+)\\}/.test(part) ? pathParts[idx] : part))\n .join('/');\n\n return fulfilledParts === path;\n });\n\n if (index > -1) return pathnames[index];\n\n return null;\n};\n\nexport const getPath = (path: string, params: IPathParams = {}): string => {\n const regex = new RegExp(/\\{(\\w+)\\}*/gm);\n let m: RegExpExecArray | null;\n let generatedPath = path.toString();\n\n do {\n m = regex.exec(generatedPath);\n\n if (m) {\n const [match, paramName] = m;\n if (!params.hasOwnProperty(paramName)) {\n throw new Error(`Param \"${paramName}\" is missing from path params`);\n }\n generatedPath = generatedPath\n .split(match)\n .join(String(params[paramName]));\n }\n } while (m !== null);\n\n return generatedPath;\n};\n\nexport default getPath;\n","import { ProductCreationParams, ProductReference } from 'plans/types';\n\n/**\n *\n * @param envName\n * @param params\n */\nconst createProducts = (params: ProductCreationParams): ProductReference => {\n const products: ProductReference = {\n classic: {\n id: params.classic.id,\n internal: 'classic',\n product: {\n id: params.classic.id,\n name: 'Abonnement Articho',\n description: '',\n type: 'service',\n price: 159,\n main: true,\n active: true,\n isPrivate: false,\n rating: 3,\n order: 3,\n includes: {\n maxAdminUsers: 1,\n maxAgentUsers: 0,\n maxProUsers: 0,\n maxSellerUsers: 0,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.classic.tariffs).map(t => t.id),\n tax_rates: params.classic.tax_rates,\n },\n tariffs: params.classic.tariffs,\n },\n standard: {\n id: params.standard.id,\n internal: 'standard',\n product: {\n id: params.standard.id,\n name: 'Standard',\n description: 'Pour les entreprises unipersonnelles',\n type: 'service',\n price: 69,\n main: true,\n active: true,\n isPrivate: true,\n rating: 1,\n order: 1,\n includes: {\n maxAdminUsers: null,\n maxAgentUsers: null,\n maxProUsers: null,\n maxSellerUsers: null,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.standard.tariffs).map(t => t.id),\n tax_rates: params.standard.tax_rates,\n },\n tariffs: params.standard.tariffs,\n },\n plus: {\n id: params.plus.id,\n internal: 'plus',\n product: {\n id: params.plus.id,\n name: 'Plus',\n description: 'Idéal pour les agences et les entreprises de plus grande taille',\n type: 'service',\n price: 159,\n main: true,\n active: true,\n isPrivate: true,\n rating: 2,\n order: 2,\n includes: {\n maxAdminUsers: null,\n maxAgentUsers: null,\n maxProUsers: null,\n maxSellerUsers: null,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.plus.tariffs).map(t => t.id),\n tax_rates: params.plus.tax_rates,\n },\n tariffs: params.plus.tariffs,\n },\n // test_1: {\n // id: params.test_1.id,\n // internal: 'test_1',\n // product: {\n // id: params.test_1.id,\n // name: 'Test 1',\n // description: '',\n // type: 'service',\n // price: 50,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 1,\n // order: 4,\n // includes: {\n // maxAdminUsers: 1,\n // maxAgentUsers: 0,\n // maxProUsers: 0,\n // maxSellerUsers: 0,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_1.tariffs).map(t => t.id),\n // tax_rates: params.test_1.tax_rates,\n // },\n // tariffs: params.test_1.tariffs,\n // },\n // test_2: {\n // id: params.test_2.id,\n // internal: 'test_2',\n // product: {\n // id: params.test_2.id,\n // name: 'Test 2',\n // description: '',\n // type: 'service',\n // price: 100,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 2,\n // order: 5,\n // includes: {\n // maxAdminUsers: 1,\n // maxAgentUsers: 0,\n // maxProUsers: 0,\n // maxSellerUsers: 0,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_2.tariffs).map(t => t.id),\n // tax_rates: params.test_2.tax_rates,\n // },\n // tariffs: params.test_2.tariffs,\n // },\n // test_3: {\n // id: params.test_3.id,\n // internal: 'test_3',\n // product: {\n // id: params.test_3.id,\n // name: 'Test 3',\n // description: '',\n // type: 'service',\n // price: 80,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 3,\n // order: 6,\n // includes: {\n // maxAdminUsers: null,\n // maxAgentUsers: null,\n // maxProUsers: null,\n // maxSellerUsers: null,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_3.tariffs).map(t => t.id),\n // tax_rates: params.test_3.tax_rates,\n // },\n // tariffs: params.test_3.tariffs,\n // },\n // test_4: {\n // id: params.test_4.id,\n // internal: 'test_4',\n // product: {\n // id: params.test_4.id,\n // name: 'Test 4',\n // description: '',\n // type: 'service',\n // price: 65,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 3,\n // order: 7,\n // includes: {\n // maxAdminUsers: 3,\n // maxAgentUsers: 3,\n // maxProUsers: 3,\n // maxSellerUsers: 3,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_4.tariffs).map(t => t.id),\n // tax_rates: params.test_4.tax_rates,\n // },\n // tariffs: params.test_4.tariffs,\n // },\n };\n\n return products;\n};\n\nexport default createProducts;\n","import {\n SubscriptionSettings,\n Product,\n DeploymentEnvironment,\n ProductCreationParams,\n ProductReference,\n ProductEntry,\n} from 'plans/types';\n\nimport createProducts from 'plans/base';\n\nexport { Product, ProductEntry, SubscriptionSettings };\n\nconst testing: ProductCreationParams = {\n classic: {\n id: 'prod_KzmO4rORyWl8cA',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJmpiLFzcsAA7x6rLA0GNZX', price: 159, usageType: 'licensed', type: 'base' },\n additionalAdmin: { id: 'price_1KJmpiLFzcsAA7x6VtCIuhqw', price: 30, usageType: 'metered', type: 'extra_user' },\n additionalAgent: { id: 'price_1KJmpiLFzcsAA7x6gFBgAXkr', price: 20, usageType: 'metered', type: 'extra_user' },\n additionalPro: { id: 'price_1KJmpiLFzcsAA7x6JxTnlLC8', price: 10, usageType: 'metered', type: 'extra_user' },\n additionalSeller: { id: 'price_1KJmpiLFzcsAA7x6XS9PBgQo', price: 2, usageType: 'metered', type: 'extra_user' },\n },\n },\n standard: {\n id: 'prod_KzmEyS3UQ5lbnz',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJmg4LFzcsAA7x6SMfj1iDu', price: 69, usageType: 'licensed', type: 'base' },\n },\n // prices: {\n // monthly: 'price_1KJmg4LFzcsAA7x6SMfj1iDu',\n // additionalUser: 'price_1KJmg4LFzcsAA7x6yzvGdoxe',\n // },\n // additionalUserPrice: 10,\n },\n plus: {\n id: 'prod_KzmyY1ysEOeK93',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJnP0LFzcsAA7x6oDVeaPAv', price: 159, usageType: 'licensed', type: 'base' },\n },\n },\n // test_1: {\n // id: 'prod_L2ZqDUzF0HFuFN',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMUgwLFzcsAA7x6c3wk0Buy', price: 50, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMUgwLFzcsAA7x6X8qYBxls', price: 10, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMUgwLFzcsAA7x6fyOLh2gM', price: 8, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMUgwLFzcsAA7x6eB6Oevw2', price: 6, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMUgwLFzcsAA7x6s9WBpxTS', price: 4, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_2: {\n // id: 'prod_L2xmEk7gqqRJtS',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrqrLFzcsAA7x62Ag7xwjU', price: 100, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMrqrLFzcsAA7x6cu3it43A', price: 20, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMrqrLFzcsAA7x6eNCDb3D6', price: 16, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMrqrLFzcsAA7x6wRuDxyyN', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMrqsLFzcsAA7x61NRR9gne', price: 8, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_3: {\n // id: 'prod_L2xnCHGi6QNgX8',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrs0LFzcsAA7x6p2tkW6lu', price: 80, usageType: 'licensed', type: 'base' },\n // },\n // },\n // test_4: {\n // id: 'prod_L2yWF4ssugw8Ln',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMsZFLFzcsAA7x6qVbCQpuN', price: 65, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMsZFLFzcsAA7x6EjaDfica', price: 15, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMsZFLFzcsAA7x6T1FI1WF4', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMsZFLFzcsAA7x6L6I0M1ND', price: 9, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMsZFLFzcsAA7x6G5GXzPeW', price: 6, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n};\n\nconst production: ProductCreationParams = {\n classic: {\n id: 'prod_KzmYFhrWXrzWdR',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1KJmzNLFzcsAA7x6I6gNlCpY', price: 159, usageType: 'licensed', type: 'base' },\n additionalAdmin: { id: 'price_1KJmzNLFzcsAA7x6Tl6D8Wus', price: 30, usageType: 'metered', type: 'extra_user' },\n additionalAgent: { id: 'price_1KJmzNLFzcsAA7x6DeUQScKY', price: 20, usageType: 'metered', type: 'extra_user' },\n additionalPro: { id: 'price_1KJmzNLFzcsAA7x695wsj6rA', price: 10, usageType: 'metered', type: 'extra_user' },\n additionalSeller: { id: 'price_1KJmzNLFzcsAA7x6gF62MX41', price: 2, usageType: 'metered', type: 'extra_user' },\n },\n },\n standard: {\n id: 'prod_HsAwETfIUblsAT',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1HIQaILFzcsAA7x6NVk3cJu1', price: 69, usageType: 'licensed', type: 'base' },\n },\n },\n plus: {\n id: 'prod_HsB2YJPEZ9H98c',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1HIQg0LFzcsAA7x6X6lfFUdv', price: 159, usageType: 'licensed', type: 'base' },\n },\n },\n // test_1: {\n // id: 'prod_L2ZqDUzF0HFuFN',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMUgwLFzcsAA7x6c3wk0Buy', price: 50, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMUgwLFzcsAA7x6X8qYBxls', price: 10, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMUgwLFzcsAA7x6fyOLh2gM', price: 8, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMUgwLFzcsAA7x6eB6Oevw2', price: 6, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMUgwLFzcsAA7x6s9WBpxTS', price: 4, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_2: {\n // id: 'prod_L2xmEk7gqqRJtS',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrqrLFzcsAA7x62Ag7xwjU', price: 100, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMrqrLFzcsAA7x6cu3it43A', price: 20, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMrqrLFzcsAA7x6eNCDb3D6', price: 16, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMrqrLFzcsAA7x6wRuDxyyN', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMrqsLFzcsAA7x61NRR9gne', price: 8, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_3: {\n // id: 'prod_L2xnCHGi6QNgX8',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrs0LFzcsAA7x6p2tkW6lu', price: 80, usageType: 'licensed', type: 'base' },\n // },\n // },\n // test_4: {\n // id: 'prod_L2yWF4ssugw8Ln',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMsZFLFzcsAA7x6qVbCQpuN', price: 65, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMsZFLFzcsAA7x6EjaDfica', price: 15, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMsZFLFzcsAA7x6T1FI1WF4', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMsZFLFzcsAA7x6L6I0M1ND', price: 9, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMsZFLFzcsAA7x6G5GXzPeW', price: 6, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n};\n\n/**\n *\n * @param envName\n */\nexport default (envName: DeploymentEnvironment): ProductReference => {\n if (envName === 'production') return createProducts(production);\n\n return createProducts(testing);\n};\n","import { SubscriptionSettings } from './plans';\n\nexport enum ROLE {\n CLIENT = 'client',\n SELLER = 'seller',\n PRO = 'pro',\n AGENT = 'agent',\n ADMIN = 'admin',\n OWNER = 'owner',\n SUPERADMIN = 'superadmin',\n}\n\nexport interface AuthToken {\n [key: string]: any;\n}\n\nexport type ResourceType =\n | Enterprise\n | Admin\n | Owner\n | User\n | Agent\n | Pro\n | Seller\n | Client\n | Project\n | Media\n | Document\n | Event\n | Plan\n | Note\n | VisitReport\n | Devis\n | Estimation\n | Bill\n | BillIssued\n | BillReceived\n | Payment\n | UserNotification\n | ReceptionVoucher\n | Provider\n | Category\n | OperationCatalog\n | Nomenclature\n | Operation\n | OperationsGroup\n | EnterpriseResourse\n | QuotesConfiguration\n | Configuration\n | Log\n | SystemVersion;\n\n/**\n * Add timestampable behavior to any resource\n */\nexport interface Resource {\n /**\n * The internal ID of this resource\n */\n id?: string;\n\n /**\n * User uid or object of item creator\n */\n owner?: string | User;\n\n /**\n * owner data\n */\n ownerData?: {\n /**\n * Owner id\n */\n id: string;\n\n /**\n * User id\n */\n userId: string;\n\n /**\n * Owner's display name\n */\n displayName: string;\n\n /**\n * Owner's email\n */\n email: string;\n\n /**\n * Owner's phone numbers\n */\n phone: Phone[];\n\n /**\n * Owner's avatar\n */\n photo: File | null;\n\n /**\n * Owner's role\n */\n role: ROLE | null;\n };\n\n /**\n * When this resource has been created\n */\n createdAt?: number;\n\n /**\n * User uid or object who has made the last update\n */\n updatedBy?: string | User;\n\n /**\n * Last update\n */\n updatedAt?: number;\n\n /**\n * Algolia search ID\n */\n objectID?: string;\n\n /**\n * Type of resource\n */\n kind?: ResourceType;\n\n /**\n *\n */\n scope?: string;\n}\n\n/**\n * The enterprise model\n */\nexport interface Enterprise extends Resource {\n /**\n * The cloudinary logo of the enterprise\n */\n logo?: File | null;\n\n /**\n * Enterprise category, mostly for analytics\n */\n category?: string;\n\n /**\n * The enterprise commercial name\n */\n commercialName: string;\n\n /**\n * Display the company name next to the logo\n */\n displayName: boolean;\n\n /** The enterprise commercial status */\n commercialStatus: CommercialStatusEnum;\n\n /**\n * The enterprise siren code\n */\n siren?: string;\n\n /**\n * The enterprise siret code\n */\n siret?: string;\n\n /**\n * The contact concerned\n */\n contact?: string;\n\n /**\n * The contact concerned\n */\n contactEmail?: string;\n\n /**\n * The activity code\n */\n activityCode?: string;\n\n /**\n * The enterprise address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The enterprise phone (mobile, work, landline, other)\n */\n phone?: {\n [key: string]: string;\n };\n\n /**\n * The contact concerned\n */\n website?: string;\n\n /**\n * Special key to load data from algolia based on context\n */\n searchKey?: string;\n\n /**\n * Current subscription status\n */\n status:\n | 'incomplete'\n | 'incomplete_expired'\n | 'trialing'\n | 'active'\n | 'past_due'\n | 'canceled'\n | 'unpaid';\n\n /**\n * Kind of forfait\n */\n product?: 'standard' | 'plus' | 'premium';\n\n /**\n *\n */\n totalPrice?: Price;\n\n /**\n * Stripe Plans subscribed\n */\n plans: Array<{\n /**\n * Name of the plan\n */\n name: string;\n\n /**\n * id of plan\n */\n plan: string;\n\n /**\n * quantity of units\n */\n quantity: number;\n\n /**\n * is one of the main plans\n */\n main?: boolean;\n }>;\n\n /**\n * Stripe payment ID\n */\n customerId?: string;\n\n /**\n * Default payment method ID\n */\n default_payment_method?: string;\n\n /**\n * Number of admin users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional admin user\n */\n totalAdminUsers: number;\n\n /**\n * Number of agent users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional agent user\n */\n totalAgentUsers: number;\n\n /**\n * Number of pro users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional pro user\n */\n totalProUsers: number;\n\n /**\n * Number of seller users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional seller user\n */\n totalSellerUsers: number;\n\n /**\n * Account mode\n */\n mode: 'full' | 'test';\n\n /**\n *\n */\n additionalUserPriceId?: string;\n\n /**\n *\n */\n additionalAdminPlanId?: string | null;\n\n /**\n *\n */\n additionalAgentPlanId?: string | null;\n\n /**\n *\n */\n additionalProPlanId?: string | null;\n\n /**\n *\n */\n additionalSellerPlanId?: string | null;\n\n /**\n * Subscription on stripe\n */\n subscription?: {\n /**\n * Current billing period start date\n */\n currentPeriodStart: number;\n\n /**\n * Current billing period end date\n */\n currentPeriodEnd: number;\n\n /**\n * Subscription id on stripe\n */\n id: string;\n\n /**\n * state of subscription\n */\n status:\n | 'incomplete'\n | 'incomplete_expired'\n | 'trialing'\n | 'active'\n | 'past_due'\n | 'canceled'\n | 'unpaid';\n\n /**\n * Coupon id applied to subscription\n */\n coupon?: string;\n\n /**\n * Last invoice id on stripe\n */\n latestInvoice?: string;\n };\n\n insurance?: string;\n\n /**\n * Num de tva intracommunitaire\n */\n tvaNumber?: string;\n\n /**\n *\n */\n bankInfo?: BankDetails[];\n\n notificationEstimation?: string[];\n\n devisDocConfig: {\n color: { label: DevisDocColorEnum; value: string }[];\n sections: {\n [key: string]: boolean;\n };\n presentation: string;\n devisValidity: { duration: number; typeOfDuration: DevisDocDurationEnum };\n };\n\n /**\n * Computed subscription settings\n */\n config?: SubscriptionSettings;\n\n /**\n * Insurer contact details, used in bills PDF data\n */\n insuranceContact?: string;\n\n /**\n * Geographical area covered, used in bills PDF data\n */\n areaCovered?: string;\n\n /**\n * Enterprise currency\n */\n currency?: string;\n\n /**\n * Statuses workflow between devis status and project status\n */\n statusesWorkflow: StatusWorkflow[];\n\n contactEmails: Array<{\n /**\n * The contact mail\n */\n role: string;\n /**\n * The contact name\n */\n email: string;\n }>;\n\n certificates: Certificate[];\n\n /**\n * Used to enabled or disable plugins on the system\n */\n pluginsConfig?: {\n visitReport?: boolean;\n quoteAdvanced?: boolean;\n quoteBasicCreation?: boolean;\n quoteAdvancedWithNewDesign?: boolean;\n exportLogs?: boolean;\n whatsapp?: boolean;\n marketplace?: boolean;\n };\n\n /**\n * Used to save the last reference created for the two types of bills\n */\n billsReferences?: {\n bill: number;\n creditNote: number;\n };\n\n /**\n * Custom Id the admin chose for prefixing projects ids\n */\n prefixReference?: string | null;\n\n /**\n * Providers configuration\n */\n providersConfiguration?: ProvidersConfiguration;\n\n /**\n * Professional evalution config\n */\n proEvaluationConfig?: ProEvaluationItem[];\n\n /**\n * All marketplace's properties at enterprise level\n */\n marketplace?: EnterpriseMarketplace;\n}\n\nexport interface ProEvaluationItem {\n title: string;\n order: number;\n percent: number;\n description?: string;\n}\n\nexport type EnterpriseMarketplace = {\n maxCandidatesPerProject: number;\n maxApplicationsAtSameTime: number;\n};\n\nexport type Certificate = { name: string; number: number };\n\nexport interface StatusWorkflow {\n /**\n * The devis status\n */\n devis: DevisStatusEnum;\n /**\n * The project id\n */\n project: string;\n}\n\nexport interface BankDetails {\n /**\n * bank details selected by default\n */\n default: boolean;\n\n /**\n * Title identifier\n */\n title: string;\n\n /**\n * IBAN identifier\n */\n iban: string;\n\n /**\n * BIC identifier\n */\n bic: string;\n\n /**\n * Account owner name\n */\n holder: string;\n}\n\n/**\n * Represents an user\n */\nexport interface User extends Resource {\n /**\n * The user email\n */\n email: string;\n\n /**\n * Each profile represents a company on which this user is involved\n */\n readonly profiles: string[];\n\n /**\n * This user is superadmin??\n */\n readonly superadmin?: boolean;\n\n /**\n * Current selected enterprise profile\n */\n currentProfile?: string;\n\n /**\n * This is used for notifications. Each token correspond to an user device\n */\n notificationTokens?: [];\n\n /**\n * The user name\n */\n displayName: string;\n\n /**\n * Last time this user was updated. Util for migrations, and caching\n */\n _lastUpdate?: number;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * User's language\n */\n lang?: string;\n\n /**\n * Mark this user as disabled to disable the account on the app.\n */\n disabled?: boolean;\n\n /**\n * The current profile expanded\n */\n profile: Profile;\n\n /**\n * Atlassian account ID\n * This ID is necessary if user wants to create a service desk request\n */\n atlassianAccountID?: string;\n}\n\nexport interface Profile extends Resource {\n /**\n *\n */\n readonly enterprise: string;\n\n /**\n * This user is an external consultant (independent worker subcontracted), or is a company worker in the payroll\n *\n * Is important to\n */\n readonly is: 'internal' | 'external';\n\n /**\n * The user id\n */\n userId: string;\n\n /**\n * The user email\n */\n email: string;\n\n /**\n *\n */\n alias?: string;\n\n /**\n * The user name\n */\n displayName: string;\n\n /**\n * first name of the user\n */\n firstName?: string;\n\n /**\n * last name of the user\n */\n lastName?: string;\n\n /**\n * The cloudinary photo of the user\n */\n photo?: File;\n\n /**\n * The user address\n */\n address?: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The user phones\n */\n phone?: Phone[];\n\n /**\n * Job title\n */\n jobTitle?: string;\n\n /**\n * Projects counter\n */\n projects?: number;\n\n /**\n * Key used to search in algolia\n */\n readonly searchKey?: string;\n\n /**\n * The role played in this company\n */\n readonly role: ROLE;\n\n /**\n *\n */\n viewMode?: ROLE;\n\n /**\n *\n */\n lang?: string;\n\n /**\n * Agents only\n * contains default values for prefilling quotes\n */\n quotesConfiguration?: QuotesConfiguration;\n\n /**\n *\n */\n status: ProfileStatus;\n\n /**\n *\n */\n job?: string;\n\n /**\n * this is an array of areas where the user works\n */\n regions?: string[];\n\n /**\n * entity name where the user actually works\n */\n entity?: string;\n\n /**\n * allow profile to receive and send WhatsApp messages\n */\n isUsingWhatsApp?: boolean;\n}\n\nexport interface UserProfilePreview {\n /**\n * Enterprise name\n */\n name: string;\n\n /**\n * Number of projects on this profile\n */\n projects?: number;\n\n /**\n * Which role is performed in this enterprise\n */\n role: string;\n}\n\n/**\n * Agent User (also known as supervisor)\n */\nexport interface Agent extends Profile {\n /**\n * role\n */\n role: ROLE.AGENT;\n\n /**\n * indicates if is a team leader\n */\n isLeader: boolean;\n\n /**\n * list of the agent's specialities\n */\n specialities?: string[];\n\n /**\n * list of the agent's type of offers (ex: call for tenders, ...)\n */\n offerType?: string[];\n\n /**\n * list of the agent's intervention area\n */\n area?: string[];\n\n /**\n * identifier of the team leader to which the agent belongs (if he is not a leader)\n */\n leader?: string;\n}\n\n/**\n * Pro User\n */\nexport interface Pro extends Profile {\n /**\n * role\n */\n role: ROLE.PRO;\n\n /** The professional specialties */\n specialities: string[];\n\n /** The professional competencies */\n skills: string[];\n\n /** The professional address for deliveries */\n deliveryAddress: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /** The cloudinary logo of the professional company */\n logo?: File;\n\n /** The commercial name of the professional */\n commercialName?: string;\n\n /** The commercial status of the professional */\n commercialStatus?: string;\n\n /** The manager of the professional company */\n manager?: string;\n\n /** The siren code of the professional company */\n siren?: string;\n\n /** The siret code of the professional company */\n siret?: string;\n\n /**\n * The documents from this pro\n */\n documents?: (Document | string)[];\n\n /**\n * An array of additional emails that can be provided in order to contact pro\n */\n additionalEmails?: ExtraEmail[];\n\n // DOCUMENTS\n enterpriseIdentity?: ProDocument;\n socialRegime?: ProDocument;\n foreignWorkers?: ProDocument;\n professionalCivilLiabilityInsurance?: ProDocument;\n decennialInsurance?: ProDocument;\n certificateOfTaxRegularity?: ProDocument;\n workAccidentCertificate?: ProDocument;\n paidVacationAndBadWeatherUnemployment?: ProDocument;\n buildingCertification?: ProDocument;\n publicMarketSwornStatement?: ProDocument;\n supplyRelationConvention?: ProDocument;\n}\n\nexport interface ProDocument {\n file?: File;\n expiryDate: number;\n emailSend?: ProDocumentEmailSend;\n}\n\nexport enum ProDocumentEmailSend {\n WARNING = 'WARNING',\n SUSPENDED = 'SUSPENDED',\n}\n\n/**\n * Seller user\n */\nexport interface Seller extends Profile {\n /**\n * role\n */\n role: ROLE.SELLER;\n\n /**\n * the provider related\n */\n provider: string;\n\n /**\n * indicates if is a team leader\n */\n isLeader: boolean;\n\n /**\n * identifier of the team leader to which the agent belongs (if he is not a leader)\n */\n leader?: string;\n\n /**\n * sector name where the user actually works\n */\n district?: string[];\n}\n\n/**\n * Client user\n */\nexport interface Client extends Profile {\n /**\n * From where the client has met us?\n */\n origin?: string;\n\n /**\n * The siret code of the client company\n */\n siret?: string;\n\n /**\n * Num de tva intracommunitaire\n */\n tvaNumber?: string;\n\n /**\n * An array of additional emails that can be provided in order to contact client\n */\n additionalEmails?: ExtraEmail[];\n\n role: ROLE.CLIENT;\n}\n\nexport interface Admin extends Profile {\n /**\n * Role\n */\n role: ROLE.ADMIN;\n}\n\nexport interface Owner extends Profile {\n /**\n * Stripe subscription ID\n */\n subscriptionId: string;\n\n /**\n * Role\n */\n role: ROLE.OWNER;\n}\n\nexport interface SuperAdmin extends Profile {\n role: ROLE.SUPERADMIN;\n}\n\nexport interface Commissions {\n /**\n * Percentage corresponding to the company\n */\n enterprise: number;\n /**\n * Percentage corresponding to the pro\n */\n pro: number;\n /**\n * Percentage corresponding to the provider\n */\n provider: number;\n /**\n * Percentage corresponding to the client\n */\n client?: number;\n}\n\n/**\n * Represents an provider\n */\nexport interface Provider extends Resource {\n /**\n * The provider name\n */\n name: string;\n\n /**\n * The provider CGV used in devis PDF\n */\n cgv?: string;\n\n /**\n * The cloudinary logo of the provider\n */\n logo?: File;\n\n /**\n * The provider address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The provider phone\n */\n phone?: Phone[];\n\n /**\n * The distribution of transaction prices\n */\n commission: Commissions;\n\n /**\n * The contact information provider\n */\n contact?: {\n /**\n * The contact mail\n */\n email: string;\n /**\n * The contact name\n */\n name: string;\n };\n\n /**\n * The provider siret code\n */\n siret?: string;\n\n /**\n * The TVA for project operations of the provider\n */\n tva: number;\n\n /**\n * The provider website\n */\n website?: string;\n\n /*\n * Quantity of projects with this provider\n */\n projects?: number;\n\n /**\n * If true, provider is the default choice for \"devis contracting entity\"\n */\n defaultEntity: boolean;\n\n /**\n * Category of the provider\n */\n category?: string;\n\n /**\n * Subcategory of the provider (depending of the category)\n */\n subcategory?: string;\n\n /**\n * Where the provider comes from\n */\n origin?: string;\n\n /**\n * Indicates whether the provider is active or inactive\n */\n status: boolean;\n}\n\n/**\n * Represents the projects status\n */\nexport interface Status extends Resource {\n /**\n * The status name\n */\n name: string;\n\n /**\n * The status by default used by all projects\n */\n default?: boolean;\n\n /**\n * The status color\n */\n color?: string;\n\n /**\n * The status is selected for dashboard statistics\n */\n forDashboard?: boolean;\n\n /**\n * Used to order status list\n */\n order: number;\n\n /**\n * To know if status comes from system-status Algolia index and avoid delete or modify it\n */\n system?: boolean;\n\n /**\n * To know if status is fix in the position\n */\n locked?: boolean;\n\n /**\n * Identifier to relate the status to its correspondent in system status algolia index\n */\n idReference?: string;\n\n /**\n * To set the visibility for the agent\n */\n visibleBy?: ROLE[];\n}\n\n/**\n * The resource enterprise document and enterprise media\n */\nexport interface EnterpriseResourse extends Resource {\n /**\n * The resource resource enterprise document and enterprise media name\n */\n name: string;\n\n /**\n * The cloudinary resource resource enterprise document and enterprise media information\n */\n file: File;\n\n /**\n * Used in enterprise document and enterprise media to assign folder\n */\n category: string;\n}\n\n/**\n * Model project\n */\nexport interface Project extends Resource {\n name: string;\n image?: File;\n category: string;\n surface: number;\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n startDate?: number;\n endDate?: number;\n description: string;\n access?: string;\n status: string | Status;\n provider?: string | Provider;\n\n /**\n * Is updated when devis approved operations status are changed in pogression page\n */\n progress?: number;\n\n /**\n * For whom this project is?\n */\n client?: string | Client;\n\n /**\n * Who is the worker on this project\n */\n pro?: string | Pro;\n\n /**\n * The agents in charge of this project\n */\n agents?: (string | Agent)[];\n\n /**\n * The main agent in charge of this project\n */\n agentReference?: string;\n\n /**\n * The main agent in charge of this project\n */\n agentManager?: string;\n\n /**\n * The sellers of this project\n */\n sellers?: (string | Seller)[];\n\n /**\n * The main seller of this project\n */\n sellerReference?: string;\n\n /**\n * The main seller of this project\n */\n sellerManager?: string;\n\n /**\n * Calculated price for this project (Accepted price: price of approved devis)\n */\n price?: Price;\n\n /**\n * Calculated prospected price for this project (Prospected price: price of sent devis)\n */\n priceProspected?: Price;\n\n /**\n * Calculated rejected price for this project (Rejected price: price of refused and abandoned devis)\n */\n priceRejected?: Price;\n\n /**\n * The id of devis approved\n */\n devisApproved?: string[];\n\n /**\n * Used when a bill is approved\n * if is true project can't be removed\n */\n blocked?: boolean;\n\n /**\n * External reference used for Hubspot or any external platform\n */\n externalReference?: string;\n\n /**\n * internalReference is an auto-increment number used as a user-friendly ID\n */\n internalReference: string;\n\n /**\n * Number of projects inside the project's enterprise\n */\n projectIndex: number;\n\n /************************** MARKETPLACE **************************/\n /**\n * Used to display the project inside marketplace\n */\n marketplaceStatus?: MarketplaceStatus;\n /**\n * List of current users who applies the project\n */\n candidates?: string[];\n /**\n * Determines how many professionals can apply for the project\n */\n numberOfCandidates?: number;\n /**\n * creater the relation with his work order that generate this project\n */\n workOrderId?: string;\n /**\n * Save last time project was published in marketplace\n */\n marketplacePublishDate?: number;\n /**\n * Save how many times this projects has been publihsed on the marketplace\n */\n marketplaceRepublishCount?: number;\n}\n\nexport enum MarketplaceStatus {\n OPEN = 'OPEN',\n UNDER_REVIEW = 'UNDER_REVIEW',\n CLOSE = 'CLOSE',\n}\n\n/**\n * Represents a project note\n */\nexport interface Note extends Resource {\n /**\n * The note title\n */\n title: string;\n\n // /**\n // * The note type\n // */\n // type: string;\n\n /**\n * The note text\n */\n text: string;\n\n /**\n * The note images array\n */\n images: File[];\n}\n\n/**\n * Represents a project visit report\n */\nexport interface VisitReport extends Resource {\n visitDate: number;\n postalCode: string;\n surface: number;\n tenants: number;\n incomeLevel: string;\n yearBuilt: number;\n floors: number;\n ceilingHeight: number;\n terracedHouse: boolean;\n windowType: string[];\n windowTypeDescription?: string;\n murType: string;\n indoorTemp: number;\n boilerCondensation: string;\n boilerBrand: string;\n boilerRef: string;\n boilerWeight: number;\n boilerDimensions: string;\n boilerDiameter: string;\n boilerFiles: File[];\n installDifficulty: string;\n installInfoExtra: string;\n wallDescription: string;\n wallFiles: File[];\n doorHeight: number;\n doorWidth: number;\n accessibilityDescription: string;\n accessibilityFiles: File[];\n electricSubscription: string;\n electricPower: string;\n electricPanelPlace: boolean;\n electricFiles: File[];\n distanceUnitIntAndPanel: number;\n unitIntLocation: string;\n unitIntFiles: File[];\n distanceUiUe: number;\n unitOutsideLocation: string;\n unitOutsideFiles: File[];\n domesticHWTDescription: string;\n domesticHWTFiles: File[];\n numberOfPeople: number;\n floorDrain: boolean;\n drainageDiameter: string;\n hotWater: boolean;\n emitterType: string;\n radiatorType: string;\n radiatorFiles: File[];\n hotWaterLoop: boolean;\n nearbyDrainDescription: string;\n nearbyDrainFiles: File[];\n heatingNetworkType: string[];\n heatingNetworkDiameter: string;\n heatingNetworkFiles: File[];\n networkEFAndDHWType: string[];\n networkEFAndDHWDiameter: string;\n networkEFAndDHWFiles: File[];\n comments: string;\n additionalFiles: File[];\n\n devisType: string;\n devisTypeDescription?: string;\n\n estimatedResult: {\n power: number;\n m2Power: number;\n devis: string;\n hotTankSize: number;\n equipment: string;\n equipmentSize: string;\n priceEstimation: number;\n priceProposal: number;\n helps: { name: string; value: number }[];\n priceCoefficient: number;\n };\n customResult?: {\n power: number;\n m2Power: number;\n devis: string;\n hotTankSize: number;\n equipment: string;\n equipmentSize: string;\n priceEstimation: number;\n priceProposal: number;\n helps: { name: string; value: number }[];\n priceCoefficient: number;\n };\n title: string;\n status: VisitReportStatus;\n}\n\nexport enum VisitReportStatus {\n IN_PROGRESS = 'IN_PROGRESS',\n VALID = 'VALID',\n}\n\nexport interface Media extends Resource {\n /**\n * When this resource has been created but onlu the date (not time)\n */\n createdAt?: number;\n /**\n * The media name\n */\n name: string;\n\n /**\n * The media slassification\n */\n tags?: string[];\n\n /**\n * The cloudinary media information\n */\n file: File;\n\n /**\n * The media elements\n */\n elements?: any[];\n}\n\n/**\n * The resource document\n */\nexport interface Document extends Resource {\n /**\n * The document title\n */\n title: string;\n\n /**\n * The document title\n */\n type: DocumentsTypeEnum;\n\n /**\n * Roles that can see the document (pro and seller only)\n */\n visibleBy: ROLE[];\n\n /**\n * The cloudinary media information\n */\n file: File;\n\n // source?: string,\n // fileId?: string,\n // pages?: number,\n}\n\n/**\n * Describe project event\n */\nexport interface Event extends Resource {\n /**\n * When the event start\n */\n start: number;\n\n /**\n * When the event ends\n */\n end?: number;\n\n /**\n * The event title\n */\n title: string;\n\n /**\n * The event address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The event description\n */\n description: string;\n\n /**\n * The event type\n */\n type: EventsTypeEnum;\n\n /**\n * The event color\n */\n color?: string;\n\n /**\n * The users responsible for the event\n */\n responsibles?: string[];\n}\n\nexport interface PlanPage {\n fileId: string;\n source: string;\n id: string;\n}\n\n/**\n * Describe project plan\n */\nexport interface Plan extends Resource {\n name: string;\n description: string;\n file: File;\n files: File[];\n pages: PlanPage[];\n elements: any[];\n validation?: {\n userName: string;\n date: number;\n } | null;\n archive?: {\n userName: string;\n date: number;\n } | null;\n updatedByUsers?: any;\n pdf?: File;\n}\n\n/**\n * Represents a material from the company's catalog\n */\nexport interface Material extends Resource {\n /**\n * The material id\n */\n objectID?: string;\n /**\n * The material name\n */\n name: string;\n\n /**\n * Price without discount\n */\n basePrice: number;\n\n /**\n * The material unit price with discount\n */\n unitPrice: number;\n\n /**\n * The material unit\n */\n unit: string;\n\n /**\n * The material image\n */\n image?: File;\n\n /**\n * Used to know from which provider comes the material\n */\n provider: string;\n\n /**\n * ID from external API\n */\n externalId?: any;\n\n /**\n * Used to order materials inside enterprise/configuration/operations view\n */\n order?: number;\n\n /**\n * by default this value will be null, at time to use this operation\n * in devis will get tva from operation\n */\n tva?: number | null;\n\n /**\n * Used in materials page to assign categories\n */\n category?: string;\n\n /**\n * Used to restrict modification in devis page\n */\n blockPrice?: boolean;\n\n /**\n * Used to restrict modification in devis page\n */\n blockTVA?: boolean;\n\n /**\n * Custom reference defined by user\n */\n reference?: string;\n\n margin?: {\n id: string;\n value: number;\n label: string;\n };\n\n supplier?: {\n id: string;\n label: string;\n };\n\n complement?: string;\n\n /**\n * Define if should be used to calculate devis prix\n */\n include?: boolean;\n\n /**\n * Define if material quantity should change when operation change\n */\n unbindQuantity?: boolean;\n}\n\nexport interface DevisMaterial extends Material {\n /**\n * Used to identify inside devis\n */\n id: string;\n\n /**\n * Used to now wich operations it below inside Devis\n */\n optId: string;\n\n /**\n * Used to know how much of this material is added to the operation\n */\n quantity: number;\n\n /**\n * Used to save the final price of material using quantity and if comes from catalog or not\n */\n price?: number;\n\n /**\n * Used to save image format in base64 code\n */\n base64?: string;\n\n /*** DATA USED FOR DELIVERS ****/\n /**\n *\n */\n responsible?: ItemResponsible;\n /**\n *\n */\n orderStatus?: OrderMaterialStatus;\n /**\n *\n */\n availabilityDate?: number;\n /**\n *\n */\n status?: 'TODO' | 'VALID' | 'ORDERED' | 'LATE' | 'RECEIVED' | 'ONSITE';\n /**\n *\n */\n code?: string;\n\n /**\n * used in orders to know where the materials comes from if exist more than one devis approved\n */\n devisId?: string;\n\n tva?: number;\n\n /**\n * Check if this material is included in devis to use his price and display in pdf\n */\n include?: boolean;\n /**\n * Use to calculate the quantity\n */\n loss?: number;\n\n rounded?: boolean;\n\n fixed?: boolean;\n\n quantityConfig?: number;\n\n commissions?: Commissions;\n\n pricePro?: number;\n\n /**\n * Quantity after apply loss and rounded\n */\n quantityWithLoss?: number;\n}\n\nexport interface Order extends Resource {\n /**\n * Used to identify inside devis\n */\n materials: DevisMaterial[];\n /**\n *\n */\n devisName: string;\n /**\n * used in orders to know where the materials comes from if exist more than one devis approved\n */\n devisId: string;\n pdf?: File;\n}\n\nexport interface PieceSurfaces {\n floorOrCeiling?: number;\n linearWall?: number;\n openingArea?: number;\n ceilingHeight?: number;\n}\n\nexport interface DevisPiece extends Resource {\n // use only in devis complex\n id?: string;\n // use only in devis complex\n indentifier?: string;\n\n /** Piece, example: bathroom, kitchen */\n name: string;\n\n /** Used when the piece is a lot */\n color?: string;\n\n /**\n * Display operations open or compresed\n */\n optsShow?: boolean;\n\n /**\n * Prices, used to save all prices of operations and materials inside it\n */\n prices?: Price;\n\n /**\n * Only used when devis format is PIECE\n */\n surfaces?: PieceSurfaces;\n\n commissions?: Commissions;\n}\n\nexport interface DevisOperationPiece {\n name: string;\n quantity: number;\n id: string;\n}\n\n/**\n *\n */\nexport interface DevisOperation extends Resource {\n /**\n * ID\n */\n id: string;\n\n /**\n * The operation name\n */\n name: string;\n\n /**\n * Operation description\n */\n description?: string;\n\n /**\n * Operation price\n */\n price: number;\n\n /**\n * Piece, example: bathroom, kitchen\n */\n piece: string;\n\n /**\n * Lot from nomenclature\n */\n lot?: {\n label: string;\n color: string;\n };\n\n /**\n * Surface old devis and operations\n */\n surface?: string;\n\n /**\n * Unit, example: m2, cm3\n */\n unit: string;\n\n /**\n * TVA, example: 20, 10\n */\n tva: number;\n\n /**\n * Order, example: 1, 2, 17\n */\n order: number;\n\n /**\n * Professional price\n */\n proPrice: number;\n\n /**\n * Unit price\n */\n unitPrice: number;\n\n /**\n * Quantity of units, used to calculate the price\n */\n quantity: number;\n\n /**\n * Status\n */\n status: OperationStatusEnum;\n\n /**\n * Prices, used to save all prices related with the operation\n */\n prices?: Price;\n\n pieces?: { name: string; quantity: number; id: string }[];\n\n reserves?: string;\n\n localization?: string;\n\n quantityConfig?: OperationQuantityEnum;\n\n blockPrice?: boolean;\n\n blockTVA?: boolean;\n\n adjustments?: Array<OperationAdjustment>;\n\n adjustmentComplement?: string;\n\n adjustmentsStatus?: boolean;\n\n commissions?: Commissions;\n\n responsible?: ItemResponsible;\n\n barcode?: BarCode;\n\n basePrice?: number;\n\n /**\n * Used to define if unit price should be calculated from pro price or\n * if pro price should be calculated from unit price\n */\n unitPriceFromPro?: boolean;\n}\n\n/**\n *\n */\nexport interface Devis extends Resource {\n /**\n * The operation name\n */\n name: string;\n\n /**\n * Status\n */\n status: DevisStatusEnum;\n\n /**\n * Devis prices\n */\n price?: Price;\n\n /**\n * List of pieces\n */\n pieces?: DevisPiece[];\n\n /**\n * List of operations\n */\n operations?: DevisOperation[];\n\n /**\n * Lis of Materials icluded in each operation\n */\n materials?: DevisMaterial[];\n\n /**\n * Comments\n */\n comments?: string;\n\n /**\n * Approved date\n */\n dateApproved?: number;\n\n /**\n * Date when email was sent to the project client\n */\n dateSent?: number;\n\n /**\n * Email status from Sengrid\n */\n emailStatus?:\n | 'processed'\n | 'dropped'\n | 'deferred'\n | 'delivered'\n | 'open'\n | 'spamreport';\n\n /**\n * Parent, devis base used to create this one\n */\n parent?: string;\n\n /**\n * List of materials provider, by default same as the enterprise in active status\n * used to filter materials in operations from catalog and to display the list providers in addMaterial form\n */\n materialsProvider?: Array<string>;\n\n /**\n * Information to save devis PDF\n */\n pdf?: {\n [DevisPdfType.ENTERPRISE]?: File;\n [DevisPdfType.PROFESSIONAL]?: File;\n [DevisPdfType.PROVIDER]?: File;\n };\n\n /**\n * Type of devis\n */\n type?: DevisTypeEnum;\n\n /**\n * Version of devis\n */\n version?: number;\n\n /**\n * Define which type of pdf will be created together with pro\n */\n contractingEntity?: DevisContractingEntity;\n\n /**\n * Save the information of devis bill after apply any changes\n */\n accounting?: {\n percent: number;\n paid: number;\n type?: BillIssuedType;\n date?: Date;\n };\n /**\n * Used on devis pdf and accounting\n */\n reference?: string;\n\n /**\n * Used to copy commission values and TVA from provider when devis is created\n * whit this is possible to change provider config values and don't affect devis already created\n */\n providerData?: {\n tva: number;\n pro: number;\n provider: number;\n enterprise: number;\n };\n\n /**\n * Save percent and its value assigned to each entity on devis after apply modifications\n * example: pro price (in operations) can by changed by the user and will affect his original percent (saved in providerData)\n * used on accounting to display devis price block and dashboards\n */\n commissions?: {\n [key: string]: { percent: number; value: number };\n };\n\n /**\n * BankDetails chosen by default in the enterprise settings\n */\n bankInfo?: BankDetails;\n\n /**\n * Currency chosen by default in the enterprise settings\n */\n currency?: string;\n\n /**\n * Payment planning (temporarily saved in the devis collection in Firestore)\n */\n paymentPlanning?: { description: string; percent: number; date?: Date }[];\n\n /**\n * Allow user to add some additionals informations into the devis pdf depending on the section choose\n */\n docMetadata?: DocMetadataItem[];\n\n /************************************ V2 ************************************/\n operationsCatalog?: string;\n\n sector?: {\n label: string;\n value: number;\n };\n\n history?: DevisHistoryItem[];\n\n systemVersion?: number;\n\n format?: DevisFormatEnum;\n\n /**\n * Define if devis can be edited or not\n */\n blocked?: boolean;\n\n /**\n * Defined from where is coming this devis, in markeplace case to know if is created from a devisCandidate\n */\n origin?: DevisOriginEnum;\n}\n\nexport enum DevisOriginEnum {\n MARKETPLACE = 'MARKETPLACE',\n DUPLICATE = 'DUPLICATE',\n TEMPLATE = 'TEMPLATE',\n}\n\nexport interface DocMetadataItem {\n section?: DevisPdfSectionEnum | string;\n title: string;\n value: string | number;\n}\n\nexport enum DevisCommissionsEntity {\n pro = 'pro',\n provider = 'provider',\n enterprise = 'enterprise',\n}\n\nexport enum DevisHistoryType {\n CHANGE_STATUS = 'CHANGE_STATUS',\n SENT_TO_CLIENT = 'SENT_TO_CLIENT',\n EMAIL_EVENT = 'EMAIL_EVENT',\n NEW_VERSION = 'NEW_VERSION',\n}\n\nexport interface DevisHistoryItem {\n date: number;\n user?: {\n id: string;\n name: string;\n email: string;\n role: ROLE;\n photoUrl: string;\n };\n type: DevisHistoryType;\n data: any;\n}\n\nexport enum DevisDocSectionEnum {\n PRESENTATION = 'PRESENTATION',\n RESUME = 'RESUME',\n MATERIAL_IMAGE = 'MATERIAL_IMAGE',\n MATERIAL_FIXED = 'MATERIAL_FIXED',\n MATERIAL_VARIABLE = 'MATERIAL_VARIABLE',\n RENO_HELP = 'RENO_HELP',\n COMMENTS = 'COMMENTS',\n PAYMENTS_PLANNING = 'PAYMENTS_PLANNING',\n BANK_DETAILS = 'BANK_DETAILS',\n SIGNATURE_AREA = 'SIGNATURE_AREA',\n CGV = 'CGV',\n CERFA_CERTIFICATE = 'CERFA_CERTIFICATE',\n}\n\nexport enum DevisDocColorEnum {\n PRIMARY = 'PRIMARY',\n SECONDARY = 'SECONDARY',\n}\n\nexport enum DevisDocDurationEnum {\n DAYS = 'DAYS',\n WEEKS = 'WEEKS',\n MONTHS = 'MONTHS',\n YEARS = 'YEARS',\n}\n\n/**\n *\n */\nexport interface DevisTemplate extends Resource {\n /**\n * The devis name\n */\n name: string;\n\n /**\n * The devis description\n */\n description?: string;\n\n /**\n * Devis prices\n */\n price?: Price;\n\n /**\n * List of pieces\n */\n pieces?: DevisPiece[];\n\n /**\n * List of operations\n */\n operations?: DevisOperation[];\n\n /**\n * Lis of Materials icluded in each operation\n */\n materials?: DevisMaterial[];\n\n /**\n * Comments\n */\n comments?: string;\n\n /**\n * List of materials provider, by default same as the enterprise in active status\n * used to filter materials in operations from catalog and to display the list providers in addMaterial form\n */\n materialsProvider?: Array<string>;\n\n /**\n * Operations catalog assigned to devis\n */\n operationsCatalog: string;\n\n systemVersion?: number;\n\n format?: DevisFormatEnum;\n\n category?: string;\n}\n\n/**\n * Used on the devis payments\n */\nexport type Payment = Resource & {\n date: number;\n devisId: string;\n projectId: string;\n percent: number;\n description?: string;\n};\n\n/**\n * Used on accounting\n */\n\nexport type DownPayment = Payment & {\n devisPrice: number;\n devisTVA: number;\n bill?: {\n id: string;\n date: Date;\n price: number;\n };\n /**\n * This will change to true if any custom bill is created on the devis related with it\n */\n locked?: boolean;\n};\n\nexport type BillElement = {\n id: string;\n dataId: string;\n description: string;\n order: number;\n type: BillElementType;\n quantity: number;\n priceHT: number;\n tva: number;\n discount: number;\n discountType: BillDiscountType;\n totalHT: number;\n totalTTC: number;\n isUpdated: boolean;\n isInvoiced: boolean;\n devisId: string;\n};\n\nexport type EntityData = {\n name: string;\n id?: string;\n address?: string;\n email?: string;\n siret?: string;\n tva?: string;\n};\n\nexport type ReceptionVoucher = Resource & {\n status: ReceptionVoucherStatus;\n title: string;\n files: File[];\n statusComment?: string;\n statusDate?: number;\n};\n\nexport type BillStatusHistoryItem = {\n before: BillIssuedStatus | BillReceivedStatus;\n date: number;\n comment: string;\n user: {\n id: string;\n name: string;\n photo: string;\n role: ROLE;\n };\n};\n\nexport type BillStatusHistory = {\n [key in BillIssuedStatus | BillReceivedStatus]?: BillStatusHistoryItem;\n};\n\nexport type Bill = Resource & {\n title: string;\n projectId: string;\n devisIds: Array<string>;\n date: number;\n providerCommission?: boolean;\n reference?: string;\n pdf?: File;\n entityData?: EntityData;\n statusDate?: number;\n statusComment?: string;\n statusHistory?: BillStatusHistory;\n files?: File[];\n // used to save information related with any possible external system\n metadata?: {\n sentToIpaidthat?: boolean;\n };\n};\n\nexport type BillReceived = Bill & {\n status: BillReceivedStatus;\n type: BillType.RECEIVED;\n dueDate?: number;\n entityPro?: string;\n entityProvider?: string;\n entity: BillReceivedEntity;\n subType: BillReceivedType;\n prices: {\n HT: number;\n TTC?: number;\n };\n comment?: string;\n orderURL?: string;\n amountsBill?: {\n amountPaid?: number | null;\n amountRemain?: number | null;\n paymentMethod?: PaymentMethodTypeEnum;\n };\n billDoc?: {\n reference: string;\n type: string;\n date: number | null;\n };\n};\n\nexport type BillIssued = Bill & {\n type: BillType.ISSUED;\n status: BillIssuedStatus;\n entity: BillIssuedEntity;\n subType: BillIssuedType;\n discountType: BillDiscountType;\n paymentChoice?: PaymentChoice;\n lateInterest?: LateInterest;\n termsOfPayment?: TermsOfPayment;\n elements: BillElement[];\n tva: boolean;\n discount: number;\n comments?: string;\n pricesByTVA?: any;\n devis?: Array<any>;\n downPayments?: Array<any>;\n downPaymentsIds?: Array<string>;\n // used by subType CREDIT_NOTE to create the relation between bills\n billSource?: {\n id: string;\n reference: string;\n status?: BillIssuedStatus;\n };\n // bills list of CREDIT_NOTE associated with this bill\n creditNotes?: Array<{ id: string; reference: string }>;\n // used to save the reason for credits nontes (for the moment)\n reason?: BillIssuedReasons;\n // set the incremental number of bills on the enterprise\n referenceNumber?: number;\n // check if bill was imported from external documents or system\n imported?: boolean;\n dateSent?: number;\n\n // prices related with the bill\n prices: {\n // is the HT price without discounts\n HT: number;\n // this is the HT after apply the discount\n finalHT: number;\n // final value after discounts\n TTC: number;\n // TVA value is calculated using: TTC - HT\n TVA: number;\n // discount value is calculated using: finalHT - HT\n discount?: number;\n // this value is calculated using adjustments in each element\n adjustments?: number;\n };\n // used in balance bills to display elements grouped by tva and types (materials, operations)\n isGrouped?: boolean;\n // when the status PAID is selected, the user has to fill in the amount\n amountsBill?: {\n amountPaid?: number;\n amountRemain?: number;\n };\n};\n\nexport type Price = {\n /**\n * The price with taxes\n */\n TTC: number;\n\n /**\n * The price without taxes\n */\n HT: number;\n\n /**\n * The pro price with taxes\n */\n ProTTC: number;\n\n /**\n * The pro price without taxes\n */\n ProHT: number;\n\n /**\n * The materials price TTC\n */\n Mats: number;\n\n /**\n * The materials price HT\n */\n MatsHT: number;\n\n /**\n * The materials pro price HT\n */\n MatsProHT?: number;\n\n /**\n * The total price TTC (TTC + Mats)\n */\n total?: number;\n};\n\n/**\n * Represents a materials provider\n */\nexport interface MaterialsProvider extends Resource {\n /**\n * The material provider name\n */\n name: string;\n /**\n * The material provider status to display or not in devis and operations catalog\n */\n status: boolean;\n /**\n * identifier unique to create the tabs in form\n */\n identifier: string;\n /**\n * By default al providers comming from System index should be false,\n * only providers added by enterprise admins must be true\n */\n editable: boolean;\n /**\n * define if enterprise admins can add materials inside this provider\n */\n addMaterials: boolean;\n /**\n * The material provider description\n */\n description?: string | null;\n /**\n * The cloudinary logo of the material provider\n */\n logo?: File | null;\n\n price?: number;\n\n type?: 'internal' | 'api' | 'system' | MaterialsProviderType;\n\n url?: string;\n /**\n * APi credentials\n * See the credential type in @placeshakr/providers\n */\n apiCredentials?: {\n [key: string]: {\n name?: string;\n\n apiKey: string;\n\n apiSecret?: string;\n\n url?: string;\n };\n };\n}\n\nexport type File = {\n /**\n * the public id\n */\n fileId: string;\n\n /**\n * Original url\n */\n source: string;\n\n /**\n * Format\n */\n format?: string;\n\n /**\n *\n */\n resourceType?: string;\n\n /**\n * Number of pages\n */\n\n pages?: number;\n\n /**\n * ??\n */\n elements?: any[];\n\n /**\n * The original size of the file\n */\n size?: string;\n\n /**\n * The file name used to download files\n */\n name?: string;\n\n /**\n * Generation time\n */\n generatedAt?: number;\n\n /**\n * Update time\n */\n updatedAt?: number;\n};\n\nexport interface QuotesConfiguration {\n /**\n * Default devis type\n */\n devisType?: QuotesConfigurationItem;\n\n /**\n * Default operation catalog\n */\n operationCatalog?: QuotesConfigurationItem;\n\n /**\n * Default operation sector (need operationCatalog to have a value)\n */\n operationSector?: QuotesConfigurationItem;\n\n /**\n * Default material providers\n */\n materialProviders?: QuotesConfigurationItem[] | null;\n\n /**\n * Default payment planning\n */\n paymentPlanning?: QuotesConfigurationItem;\n\n /**\n * Default comment model\n */\n commentModel?: QuotesConfigurationItem;\n}\n\nexport interface ProviderCategory {\n /**\n * Category name\n */\n name: string;\n\n /**\n * Array of subcategories\n */\n subcategories: string[];\n}\n\nexport interface ProvidersConfiguration {\n /**\n * Array of categories\n */\n categories?: ProviderCategory[];\n\n /**\n * Array of origins\n */\n origins?: string[];\n}\n\ntype QuotesConfigurationItem = SelectOption;\n\nexport type Action =\n | { type: 'navigation'; link: { href: string; as?: string }; text: string }\n | { type: 'page_reload'; text: string }\n | { type: 'event'; text: string }\n | { type: 'activate_notifications'; text: string }\n | { type: 'close'; text: string };\n\nexport interface Notification {\n externalId?: string | number;\n id: string | number;\n type?: NotificationType;\n title: any;\n message: any;\n actions?: Action[];\n readed?: boolean;\n closable?: boolean;\n date: number;\n persistent?: boolean;\n}\n\nexport interface UserNotification extends Resource {\n total: number;\n totalUnread: number;\n notifications: {\n [key: string]: Notification;\n };\n}\n\nexport type SelectOption = {\n label: string;\n value: any;\n};\n\nexport enum MaterialsProviderType {\n // created by the enterprises and use algolia index 'materials'\n INTERNAL = 'internal',\n // any catalog that needs an external connection\n API = 'api',\n // every catalog created on the super-admin and use algolia index 'system-materials'\n SYSTEM = 'system',\n}\n\nexport enum ProjectType {\n ONE_PIECE = 'ONE_PIECE',\n FULL = 'FULL',\n COMPOUND = 'COMPOUND',\n CHILD = 'CHILD',\n}\n\nexport enum OperationStatusEnum {\n TODO = 'TODO',\n INPROGRESS = 'INPROGRESS',\n DONE = 'DONE',\n}\n\nexport enum NotesType {\n NOTE = 'NOTE',\n PROBLEM = 'PROBLEM',\n IMPORTANT = 'IMPORTANT',\n DELIVERY = 'DELIVERY',\n}\n\nexport enum NotificationType {\n SUCCESS,\n INFO,\n WARNING,\n DANGER,\n TOAST,\n}\n\nexport enum DevisStatusEnum {\n CREATED = 'CREATED',\n SENT = 'SENT',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n ABANDONED = 'ABANDONED',\n}\n\nexport enum DevisTypeEnum {\n DEVIS = 'DEVIS',\n SAV = 'SAV',\n TS = 'TS',\n}\n\nexport enum DevisViewMode {\n HOME,\n GENERAL,\n PRO,\n CLIENT,\n}\n\nexport enum DevisPdfSectionEnum {\n FINANCIAL_HELP = 'FINANCIAL_HELP',\n PROJECT = 'PROJECT',\n CLIENT = 'CLIENT',\n PROJECT_MANAGER = 'PROJECT_MANAGER',\n}\n\nexport enum DocumentsTypeEnum {\n DEVIS = 'DEVIS',\n DOCUMENT = 'DOCUMENT',\n CLIENT = 'CLIENT',\n OTHER = 'OTHER',\n}\n\nexport enum EventsTypeEnum {\n OTHER = 'AUTRE',\n VISIT = 'VISIT',\n DELIVERY = 'DELIVERY',\n CONSTRUCTION = 'CONSTRUCTION',\n SAV = 'SAV',\n TECHNICAL_STATEMENT = 'TECHNICAL_STATEMENT',\n TS_DESIGN = 'TS_DESIGN',\n}\n\nexport enum PaymentMethodTypeEnum {\n CREDIT_CARD = 'CREDIT_CARD',\n BANK_TRANSFERT = 'BANK_TRANSFERT',\n}\n\nexport enum BillDocTypeEnum {\n BILL = 'BILL',\n PURCHASE_ORDER = 'PURCHASE_ORDER',\n}\n\nexport enum BillIssuedStatus {\n PROVISIONAL = 'PROVISIONAL',\n WAITING = 'WAITING',\n CREATED = 'CREATED',\n SENT = 'SENT',\n PAID = 'PAID',\n BLOCKED = 'BLOCKED',\n CANCELED = 'CANCELED',\n}\n\nexport enum BillReceivedStatus {\n PROVISIONAL = 'PROVISIONAL',\n WAITING_AGENT_VALIDATION = 'WAITING_AGENT_VALIDATION',\n WAITING_ACCOUNT_VALIDATION = 'WAITING_ACCOUNT_VALIDATION',\n WAITING_FOR_ELEMENT = 'WAITING_FOR_ELEMENT',\n WAITING_FOR_PAYMENT = 'WAITING_FOR_PAYMENT',\n TO_PAY = 'TO_PAY',\n TRANSFER_TO_VALIDATE = 'TRANSFER_TO_VALIDATE',\n WITHOUT_INVOICE = 'WITHOUT_INVOICE',\n PAID = 'PAID',\n REFUSED = 'REFUSED',\n BLOCKED = 'BLOCKED',\n}\n\nexport enum ReceptionVoucherStatus {\n WAITING_AGENT_VALIDATION = 'WAITING_AGENT_VALIDATION',\n WAITING_ACCOUNT_VALIDATION = 'WAITING_ACCOUNT_VALIDATION',\n ACCEPTED = 'ACCEPTED',\n REFUSED = 'REFUSED',\n}\n\nexport enum BillType {\n RECEIVED = 'RECEIVED',\n ISSUED = 'ISSUED',\n}\n\nexport enum BillReceivedEntity {\n PRO = 'PRO',\n MATERIAL_PROVIDER = 'MATERIAL_PROVIDER',\n SERVICE_PROVIDER = 'SERVICE_PROVIDER',\n PROVIDER = 'PROVIDER',\n OTHER = 'OTHER',\n}\n\nexport enum BillReceivedType {\n FACTURE = 'FACTURE',\n CREDIT_NOTE = 'CREDIT_NOTE',\n}\n\nexport enum BillIssuedEntity {\n CLIENT = 'CLIENT',\n PRO = 'PRO',\n PROVIDER = 'PROVIDER',\n MATERIAL_PROVIDER = 'MATERIAL_PROVIDER',\n SERVICE_PROVIDER = 'SERVICE_PROVIDER',\n OTHER = 'OTHER',\n}\n\nexport enum BillIssuedType {\n CUSTOM = 'CUSTOM',\n DOWN_PAYMENT = 'DOWN_PAYMENT',\n BALANCE = 'BALANCE',\n CREDIT_NOTE = 'CREDIT_NOTE',\n}\n\nexport enum BillElementType {\n ADVANCE = 'ADVANCE',\n HOURS = 'HOURS',\n DAYS = 'DAYS',\n PRODUCT = 'PRODUCT',\n SERVICE = 'SERVICE',\n PROVIDER_COMMISSION = 'PROVIDER_COMMISSION',\n}\n\nexport enum BillDiscountType {\n PERCENT = 'PERCENT',\n MONEY = 'MONEY',\n}\n\nexport enum PaymentType {\n CREDIT = 'CREDIT',\n DEBIT = 'DEBIT',\n}\n\nexport enum ProjectTypeEnum {\n ONE_PIECE = 'ONE_PIECE',\n FULL = 'FULL',\n COMPOUND = 'COMPOUND',\n CHILD = 'CHILD',\n}\n\nexport enum ProjectCategoriesEnum {\n UNSPECIFIED = 'UNSPECIFIED',\n BATHROOM = 'BATHROOM',\n KITCHEN = 'KITCHEN',\n LIVINGROOM = 'LIVINGROOM',\n BEDROOM = 'BEDROOM',\n TOILET = 'TOILET',\n OFFICE = 'OFFICE',\n APARTMENT = 'APARTMENT',\n HOUSE = 'HOUSE',\n ELECTRICITY = 'ELECTRICITY',\n PLUMBIG = 'PLUMBIG',\n FLOORING = 'FLOORING',\n WALL_COVERING = 'WALL_COVERING',\n STAIRS = 'STAIRS',\n OUTSIDE = 'OUTSIDE',\n COMMERCE = 'COMMERCE',\n}\n\nexport enum ProSpecialitiesEnum {\n KITCHEN = 'kitchen',\n BATHROOM = 'bathroom',\n GENERAL = 'general_renovation',\n GARDEN = 'garden',\n ATTICS = 'attics',\n POOL = 'swimming_pool',\n}\n\nexport enum ProSkillsEnum {\n ELECTRICITY = 'electricity',\n PLUMBING = 'plumbing',\n CARPENTRY = 'carpentry',\n MASONRY = 'masonry',\n PAINTING = 'painting',\n GARDEN = 'garden',\n LOCKSMITH = 'locksmith',\n FRAME = 'frame',\n INSULATION = 'insulation',\n}\n\nexport enum MarketplaceProSkillsEnum {\n STRUCTURAL_WORKS = 'structural_works',\n WATERPROOFING = 'waterproofing',\n METAL_FRAME = 'metal_frame',\n ELECTRICAL_INSTALLATION = 'electrical_installation',\n VIDEO_CONTROL_SECURITY = 'video_control_security',\n INTERIOR_DESIGN = 'interior_design',\n INTERIOR_CARPENTRY = 'interior_carpentry',\n PLUMBING_WC = 'plumbing_wc',\n ALL_TRADES = 'all_trades', // TCE\n CLADDING = 'cladding',\n WATER_SUPPLY = 'water_supply',\n DECONTAMINATION = 'decontamination',\n DISPOSAL_SMOKES = 'disposal_smokes',\n ATMOSPHERE_RELEASES = 'atmosphere_releases',\n}\n\nexport enum CommercialStatusEnum {\n CONTRACTOR = 'CONTRACTOR',\n EIRL = 'EIRL',\n SARL = 'SARL',\n EURL = 'EURL',\n SASU = 'SASU',\n SAS = 'SAS',\n}\n\nexport enum Origin {\n PROVIDER = 'provider',\n INTERNET = 'internet',\n YELLOW_PAGES = 'yellow-pages',\n RUMOR = 'rumor',\n PUBLICITY = 'publicity',\n}\n\nexport enum OrderMaterialStatus {\n TODO = 'TODO',\n DOING = 'DOING',\n ORDERED = 'ORDERED',\n}\n\nexport enum PhonesEnum {\n MOBILE = 'mobile',\n WORK = 'work',\n LANDLINE = 'landline',\n OTHER = 'other',\n}\n\nexport enum SendgridTemplates {\n NOTES = 'notes',\n EVENTS = 'events',\n DOCUMENTS = 'documents',\n DEVIS = 'devis',\n}\n\nexport enum TermsOfPayment {\n UPON_RECEIPT = 'upon-receipt',\n MONTH_END = 'month-end',\n DAYS_10 = '10-days',\n DAYS_20 = '20-days',\n DAYS_30 = '30-days',\n DAYS_30_END_MONTH = '30-days-end-month',\n DAYS_45 = '45-days',\n DAYS_60 = '60-days',\n DAYS_60_END_MONTH = '60-days-end-month',\n DAYS_90 = '90-days',\n DAYS_90_END_MONTH = '90-days-end-month',\n DAYS_120 = '120-days',\n}\n\nexport enum PaymentChoice {\n UNSPECIFIED = 'unspecified',\n CASH = 'cash',\n CHECK = 'check',\n BANK_TRANSFER = 'bank-transfer',\n BANK_CARD = 'bank-card',\n PAYPAL = 'paypal',\n SAMPLE = 'sample',\n BILL_EXCHANGE = 'bill-exchange',\n STATEMENT_EXCHANGE = 'statement-exchange',\n BILL_EXCHANGE_WITHOUT_ACCEPTANCE = 'bill-exchange-without-acceptance',\n PROMISSORY_NOTE = 'promissory-note',\n}\n\nexport enum LateInterest {\n NO_LATE_INTEREST = 'No-late-interest',\n PER_MONTH_1 = '1%-per-month',\n PER_MONTH_15 = '1.5%-per-month',\n PER_MONTH_2 = '2%-per-month',\n CURRENT_LEGAL_INTEREST_RATE = 'current-legal-interest-rate',\n SPECIFY = 'specify',\n}\n\nexport enum ProfileStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n BLOCKED = 'blocked',\n SUSPENDED = 'suspended',\n}\n\nexport type GeoLocation = {\n lat: number | null;\n lng: number | null;\n};\n\nexport type Phone = {\n name: string;\n number: string;\n};\n\nexport interface ProjectCounter {\n bills: number;\n devis: number;\n documents: number;\n events: number;\n medias: number;\n notes: number;\n visitReports: number;\n plans: number;\n}\n\n/**\n * Index updated on firestore\n */\nexport type IndexUpdate = {\n /**\n * Timestamp of update\n */\n when: number;\n\n /**\n * The user who updated the index\n */\n userId: string;\n\n /**\n * If this index concerne a project\n */\n projectId?: string;\n};\n\nexport interface ClientCounter {\n projects: number;\n}\n\nexport interface EmployeeCounter {\n /**\n *\n */\n projects: number;\n\n /**\n * Chiffre d'affaires\n */\n ca: number;\n\n /**\n * Chiffre d'affaires Hors Taxes\n */\n caHT: number;\n\n byYear: {\n [month: string]: {\n projects: number;\n caSigned: number;\n ca: number;\n caHT: number;\n };\n };\n}\n\n/**\n * Keep counters in singular\n */\nexport interface EnterpriseCounter {\n /**\n *\n */\n projects: number;\n\n /**\n * Number of clients\n */\n client: number;\n\n /**\n * Number of pros\n */\n pro: number;\n\n /**\n * number of agents\n */\n agent: number;\n\n /**\n * Number of sellers\n */\n seller: number;\n\n /**\n * Chiffre d'affaires\n */\n ca: number;\n\n /**\n * Chiffre d'affaires Hors Taxes\n */\n caHT: number;\n\n byYear: {\n [month: string]: {\n projects: number;\n caSigned: number;\n ca: number;\n caHT: number;\n client: number;\n pro: number;\n };\n };\n}\n\nexport interface Invitation {\n id: string;\n\n /**\n * Display name (firstName + lastName)\n */\n displayName: string;\n\n /**\n * First name\n */\n firstName: string;\n\n /**\n * Last name\n */\n lastName: string;\n\n /**\n * Invited user avatar\n */\n photo?: File;\n\n /**\n * Invited user address\n */\n address?: string;\n\n /**\n * Invited user password\n */\n password?: string;\n\n /**\n * Invited user email\n */\n email: string;\n\n /**\n * Invited user role\n */\n role: ROLE;\n\n alias?: string;\n\n /**\n * Invited user job title (`job` property duplicate ?)\n */\n jobTitle?: string;\n\n /**\n * Invited user job (role or function in his/her enterprise)\n */\n job?: string;\n\n /**\n * Invited user status ('inactive' by default)\n */\n status?: ProfileStatus;\n\n /**\n * Invited user's regions and areas where he/she works\n */\n regions?: string[];\n\n /**\n * Invited user's entity name (where he/she actually works)\n */\n entity?: string;\n\n /**\n * Invited user's provider name\n */\n provider?: Provider;\n\n /**\n * Invited user's district where he/she works\n */\n district?: string[];\n\n /**\n * Array of phone number + phone's name\n */\n phones?: Phone[];\n\n updatedAt?: number;\n\n createdAt?: number;\n\n sentAt: number;\n\n updatedBy: string;\n\n action_host: string;\n\n ready?: boolean;\n\n canLogin?: boolean;\n\n enterprise: string;\n}\n\nexport enum EstimationOriginEnum {\n WEBSITE = 'WEBSITE',\n ARTICHO = 'ARTICHO',\n}\n\nexport enum EstimationTypeEnum {\n KITCHEN = 'KITCHEN',\n BATHROOM = 'BATHROOM',\n ONE_PIECE = 'ONE_PIECE',\n HOUSE = 'HOUSE',\n APARTMENT = 'APARTMENT',\n COMMERCIAL_LOCAL = 'COMMERCIAL_LOCAL',\n WITHOUT_ESTIMATION = 'WITHOUT_ESTIMATION',\n}\n\n/**\n * Represents a estimation project\n */\nexport interface Estimation extends Resource {\n seller: string | Seller;\n provider?: string | Provider;\n client: Partial<Client>;\n name: string;\n typeProject: ProjectTypeEnum;\n type: EstimationTypeEnum;\n address: string;\n surface: number;\n note: string;\n min: number;\n max: number;\n minMats: number;\n maxMats: number;\n origin: EstimationOriginEnum;\n summary: string[];\n status: EstimationStatusEnum;\n files?: Array<File>;\n comment?: string;\n /*\n * link to project if estimate generated one\n */\n projectId?: string;\n}\n\nexport enum EmailTemplate {\n USER_INVITATION = 'user-invitation',\n DOCUMENTS = 'documents',\n NOTES = 'notes',\n EVENTS = 'events',\n DEVIS = 'devis',\n CLIENT_ESTIMATION_WEBSITE = 'client-estimation-website',\n CLIENT_ESTIMATION_ARTICHO = 'client-estimation-articho',\n ENTERPRISE_ESTIMATION = 'enterprise-estimation',\n RESET_PASSWORD = 'reset-password',\n WELCOME_TO_ENTERPRISE = 'welcome-to-enterprise',\n WELCOME_TO_NEW_ENTERPRISE = 'welcome-to-new-enterprise',\n NEW_ENTERPRISE = 'new-enterprise',\n USER_CONTACT = 'user-contact',\n PLAN = 'plan',\n BILL = 'bill',\n MEDIAS = 'medias',\n EXPORT_LOGS = 'export-logs',\n PLAN_VALIDATED = 'plan-validated',\n\n MARKETPLACE_WORK_ORDER_APPROVED = 'marketplace-work-order-approved',\n MARKETPLACE_CLOSE_PROJECT = 'marketplace-close-project',\n MARKETPLACE_WRONG_BILL = 'marketplace-wrong-bill',\n MARKETPLACE_PROJECT_PRO_APPLIED = 'marketplace-project-pro-applied',\n MARKETPLACE_PROJECT_PRO_SELECTED = 'marketplace-project-pro-selected',\n MARKETPLACE_WORK_ORDER_READY_TO_VALIDATE = 'marketplace-workorder-ready-to-validate',\n MARKETPLACE_WORK_ORDER_STATUS_CHANGED = 'marketplace-workorder-status-changed',\n\n USER_DOC_TO_EXPIRE = 'user-doc-to-expire',\n USER_DOC_EXPIRED = 'user-doc-expired',\n}\n\nexport enum DevisPdfType {\n PROVIDER = 'provider',\n PROFESSIONAL = 'professional',\n ENTERPRISE = 'enterprise',\n}\n\nexport enum DevisPdfMode {\n REGULAR = 'regular',\n SIMPLE = 'simple',\n}\n\nexport enum DevisContractingEntity {\n PROVIDER = 'provider',\n ENTERPRISE = 'enterprise',\n}\n\nexport enum EnterpriseStatusEnum {\n INCOMPLETE = 'incomplete',\n INCOMPLETE_EXPIRED = 'incomplete_expired',\n TRIALING = 'trialing',\n ACTIVE = 'active',\n PAST_DUE = 'past_due',\n CANCELED = 'canceled',\n UNPAID = 'unpaid',\n}\n\nexport enum EnterpriseProductEnum {\n STANDARD = 'standard',\n PLUS = 'plus',\n PREMIUM = 'premium',\n}\n\nexport enum EstimationStatusEnum {\n WAITING = 'WAITING',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n}\n\nexport enum HistoryActionEnum {\n EDIT = 'EDIT',\n SEND_EMAIL = 'SEND_EMAIL',\n EDIT_STATUS = 'EDIT_STATUS',\n ASSIGN_AGENT = 'ASSIGN_AGENT',\n UNASSIGN_AGENT = 'UNASSIGN_AGENT',\n ASSIGN_PRO = 'ASSIGN_PRO',\n UNASSIGN_PRO = 'UNASSIGN_PRO',\n ASSIGN_SELLER = 'ASSIGN_SELLER',\n UNASSIGN_SELLER = 'UNASSIGN_SELLER',\n APPROVED_R_V = 'APPROVED_R_V',\n DEVIS_APPROVED = 'DEVIS_APPROVED',\n DEVIS_SENT = 'DEVIS_SENT',\n DEVIS_SIGNED = 'DEVIS_SIGNED',\n CREATE_DOCUMENT = 'CREATE_DOCUMENT',\n CREATE_MEDIA = 'CREATE_MEDIA',\n CREATE_EVENT = 'CREATE_EVENT',\n CREATE_PLAN = 'CREATE_PLAN',\n VALIDATE_PLAN = 'VALIDATE_PLAN',\n INVALIDATE_PLAN = 'INVALIDATE_PLAN',\n EDIT_USER_STATUS = 'EDIT_USER_STATUS',\n}\n\nexport interface History {\n /**\n * The internal ID of this resource\n */\n id?: string;\n\n /**\n * Algolia search ID\n */\n objectID?: string;\n\n /**\n * Define from which entity comes the data example: Note, ReceptionVoucher\n */\n entityType?: HistoryEntityType;\n\n actions: HistoryAction[];\n}\n\nexport enum HistoryEntityType {\n PROJECT = 'PROJECT',\n NOTE = 'NOTE',\n RECEPTION_VOUCHER = 'RECEPTION_VOUCHER',\n DOCUMENT = 'DOCUMENT',\n PLAN = 'PLAN',\n EVENT = 'EVENT',\n MEDIA = 'MEDIA',\n DEVIS = 'DEVIS',\n PROFILE = 'PROFILE',\n}\n\nexport interface HistoryAction {\n /**\n * When the action was performed\n */\n date?: number;\n\n /**\n * The action type performed\n */\n // action: HistoryActionEnum;\n type: HistoryActionEnum;\n\n /**\n * User who performed the action\n */\n owner?: {\n userId: string;\n displayName: string;\n role: ROLE;\n photo?: File;\n };\n\n /**\n * The action data\n */\n data?: any;\n}\n\nexport interface Category extends Resource {\n name: string;\n // with this field is possible to use categories in multiples area of the system and filter by it\n entity: CategoryEntityEnum;\n order?: number;\n description?: string;\n parent?: string;\n // create the relation between materials providers or operations catalogues\n provider?: string;\n}\n\nexport enum CategoryEntityEnum {\n MATERIAL = 'MATERIAL',\n OPERATION = 'OPERATION',\n RESOURCE_LIBRARY = 'RESOURCE_LIBRARY',\n IMAGE_LIBRARY = 'IMAGE_LIBRARY',\n DEVIS_TEMPLATE = 'DEVIS_TEMPLATE',\n}\n\nexport enum DevisTemplateCatProvider {\n BASIC = 'BASIC',\n ADVANCED_PIECE = 'ADVANCED_PIECE',\n ADVANCED_LOT = 'ADVANCED_LOT',\n}\n\nexport interface OperationCatalog extends Resource {\n name: string;\n status: boolean;\n sectors?: Array<{\n objectID: string;\n name: string;\n value: number;\n }>;\n description?: string;\n image?: File | null;\n}\n\nexport interface Nomenclature extends Resource {\n value: any;\n status: boolean;\n identifier: NomenclaturesIdentifier;\n color?: string;\n file?: File;\n order?: number;\n activeForPro?: boolean;\n setProjectDate?: boolean;\n label?: string;\n text?: string;\n visibleBy?: ROLE[];\n default?: boolean;\n}\n\nexport enum NomenclaturesIdentifier {\n OPERATIONS_SECTOR = 'OPERATIONS_SECTOR',\n OPERATIONS_PIECE = 'OPERATIONS_PIECE',\n OPERATIONS_LOT = 'OPERATIONS_LOT',\n EVENTS_TYPES = 'EVENTS_TYPES',\n PROJECTS_CATEGORY = 'PROJECTS_CATEGORY',\n TVA = 'TVA',\n SUPPLIERS = 'SUPPLIERS',\n MARGINS = 'MARGINS',\n TERMS_OF_SALE = 'TERMS_OF_SALE',\n NOTES_MODELS = 'NOTES_MODELS',\n DEVIS_TYPES = 'DEVIS_TYPES',\n COMMENTS_MODELS = 'COMMENTS_MODELS',\n EMAILS_COMMENTS_MODELS = 'EMAILS_COMMENTS_MODELS',\n PAYMENT_PLANNING = 'PAYMENT_PLANNING',\n PROJECTS_PRIORITY = 'PROJECTS_PRIORITY',\n}\n\n/**\n * New version of operations with more advanced config\n */\nexport interface Operation extends Resource {\n /**\n * The operation id\n */\n objectID?: string;\n\n /**\n * The operation name\n */\n name: string;\n\n /**\n * The operation surface\n */\n lot: string;\n\n /**\n * The operation unit price\n */\n unitPrice: number;\n\n /**\n * The operation unit\n */\n unit: string;\n\n /**\n * The operation description\n */\n description?: string;\n\n /**\n * The materials added by default to the operation\n */\n materials?: Material[] | [];\n\n /**\n * Number of materials assigned to the operation\n */\n numberOfMaterials?: number;\n\n /**\n * Used at the moment of copy catalogs from system-operations to the enterprise\n * to create the relation between operations and system-operations-materials\n */\n systemId?: string;\n\n /**\n *\n */\n tva?: number | null;\n\n /**\n * Used to create relation between operations and his catalog\n */\n catalogId: string;\n\n /**\n * Used in operations page to assign categories\n */\n category: string;\n\n /**\n * Used to restrict modification in devis page\n */\n blockPrice?: boolean;\n\n /**\n * Used to restrict modification in devis page\n */\n blockTVA?: boolean;\n\n /**\n * Quantity\n */\n quantity?: OperationQuantityEnum;\n\n /**\n * List of rules used to re-calculate the price\n */\n adjustments?: Array<OperationAdjustment>;\n\n reserves?: string;\n\n barcode?: BarCode;\n\n version?: number;\n\n responsible?: ItemResponsible;\n}\n\nexport type BarCode = {\n value: string;\n format: BarCodeEnum;\n};\n\nexport enum BarCodeEnum {\n CODE128 = 'code128',\n EAN13 = 'ean13',\n EAN8 = 'ean8',\n EAN5 = 'ean5',\n EAN2 = 'ean2',\n UPC = 'upc',\n CODE39 = 'code39',\n ITF14 = 'itf14',\n MSI = 'msi',\n PHARMACODE = 'pharmacode',\n}\n\nexport interface OperationAdjustment {\n rule: OperationRulesEnum;\n bigger?: number;\n lower?: number;\n equal?: number;\n complement?: string;\n percent: number;\n}\n\nexport enum OperationQuantityEnum {\n NOT_DEFINED = 'NOT_DEFINED',\n PERIMETER = 'PERIMETER',\n GROUND_CEILING_SURFACE = 'GROUND_CEILING_SURFACE',\n WALL_SURFACE = 'WALL_SURFACE',\n}\n\nexport enum OperationRulesEnum {\n BIGGER_THAN = 'BIGGER_THAN',\n LOWER_THAN = 'LOWER_THAN',\n EQUAL_TO = 'EQUAL_TO',\n BETWEEN = 'BETWEEN',\n}\n\nexport interface OperationMaterial extends Material {\n quantity: number;\n loss: number;\n rounded: boolean;\n responsible: ItemResponsible;\n fixed: boolean;\n optId: string;\n complement?: string;\n}\n\nexport enum ItemResponsible {\n NONE = 'NONE',\n CLIENT = 'CLIENT',\n PRO = 'PRO',\n AGENT = 'AGENT',\n SELLER = 'SELLER',\n ENTERPRISE = 'ENTERPRISE',\n PROVIDER = 'PROVIDER',\n}\n\nexport enum ProjectPriceTypeEnum {\n accepted = 'accepted',\n prospected = 'prospected',\n rejected = 'rejected',\n}\n\nexport enum DevisFormatEnum {\n PIECE = 'PIECE',\n LOT = 'LOT',\n}\n\nexport interface OperationsGroup extends Resource {\n name: string;\n status: boolean;\n operationsCatalog: string;\n operations: string[];\n}\n\nexport interface DevisVersion extends Devis {}\n\nexport enum ConfigurationsIdentifier {\n ADMIN_FORM = 'ADMIN_FORM',\n PROS_FORM = 'PROS_FORM',\n AGENTS_FORM = 'AGENTS_FORM',\n SELLERS_FORM = 'SELLERS_FORM',\n}\n\nexport enum ConfigurationFieldType {\n TEXT = 'users.admins.configPanel.inputType.text',\n PASSWORD = 'users.admins.configPanel.inputType.password',\n CHECKBOX = 'users.admins.configPanel.inputType.checkbox',\n EMAIL = 'users.admins.configPanel.inputType.email',\n FILE = 'users.admins.configPanel.inputType.file',\n SELECT_ONE = 'users.admins.configPanel.inputType.selectOne',\n SELECT_MULTI = 'users.admins.configPanel.inputType.selectMulti',\n GOOGLE_LOCATION = 'users.admins.configPanel.inputType.googleLocation',\n PHONE = 'users.admins.configPanel.inputType.phone',\n DOCUMENT = 'users.admins.configPanel.inputType.document',\n}\n\ntype ConfigurationTextInputType = {\n type: ConfigurationFieldType.TEXT;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationPasswordInputType = {\n type: ConfigurationFieldType.PASSWORD;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationEmailInputType = {\n type: ConfigurationFieldType.EMAIL;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationFileInputType = {\n type: ConfigurationFieldType.FILE;\n description?: string;\n defaultValue: File | null;\n};\ntype ConfigurationDocumentInputType = {\n type: ConfigurationFieldType.DOCUMENT;\n description?: string;\n defaultValue: ProDocument;\n};\ntype ConfigurationSelectOneInputType = {\n type: ConfigurationFieldType.SELECT_ONE;\n description?: string;\n options: SelectOption[];\n defaultValue: SelectOption | null;\n};\ntype ConfigurationSelectMultiInputType = {\n type: ConfigurationFieldType.SELECT_MULTI;\n description?: string;\n options: SelectOption[];\n defaultValue: SelectOption[];\n};\ntype ConfigurationGoogleLocationInputType = {\n type: ConfigurationFieldType.GOOGLE_LOCATION;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationCheckboxInputType = {\n type: ConfigurationFieldType.CHECKBOX;\n description?: string;\n defaultValue: boolean;\n};\ntype ConfigurationPhoneInputType = {\n type: ConfigurationFieldType.PHONE;\n description?: string;\n defaultValue: string;\n};\n\nexport enum ConfigurationDocumentType {\n LEGAL = 'LEGAL',\n REGULATORY = 'REGULATORY',\n SPECIFIC = 'SPECIFIC',\n}\n\ntype ConfigurationInputTypeAndDescription =\n | ConfigurationTextInputType\n | ConfigurationPasswordInputType\n | ConfigurationEmailInputType\n | ConfigurationFileInputType\n | ConfigurationSelectOneInputType\n | ConfigurationSelectMultiInputType\n | ConfigurationGoogleLocationInputType\n | ConfigurationCheckboxInputType\n | ConfigurationPhoneInputType\n | ConfigurationDocumentInputType;\n\nexport type ConfigurationField = {\n order: number;\n isActive: boolean;\n isRequired: boolean;\n label: string;\n isLocked: boolean;\n provider?: string;\n} & ConfigurationInputTypeAndDescription;\n\ninterface CommonConfigurationFormValues {\n photo: ConfigurationField;\n firstName: ConfigurationField;\n lastName: ConfigurationField;\n email: ConfigurationField;\n mainPhone: ConfigurationField;\n secondaryPhone: ConfigurationField;\n job: ConfigurationField;\n isUsingWhatsApp: ConfigurationField;\n password?: ConfigurationField;\n confirmPassword?: ConfigurationField;\n cgu?: ConfigurationField;\n}\n\nexport interface AdminConfigurationFormValues\n extends CommonConfigurationFormValues {\n job: ConfigurationField;\n entity: ConfigurationField;\n regions: ConfigurationField;\n address: ConfigurationField;\n}\n\nexport interface ProsConfigurationFormValues\n extends CommonConfigurationFormValues {\n specialities: ConfigurationField;\n skills: ConfigurationField;\n regions: ConfigurationField;\n address: ConfigurationField;\n commercialName: ConfigurationField;\n commercialStatus: ConfigurationField;\n siren: ConfigurationField;\n siret: ConfigurationField;\n manager: ConfigurationField;\n // required documents\n enterpriseIdentity: ConfigurationField; // Identité de l’entreprise\n socialRegime: ConfigurationField; // Régime Social\n foreignWorkers: ConfigurationField; // Travailleurs Etrangers\n professionalCivilLiabilityInsurance: ConfigurationField; // Assurance RCP\n decennialInsurance: ConfigurationField; // Attestation d’assurance décennale\n certificateOfTaxRegularity: ConfigurationField; // Attestation de régularité fiscale\n workAccidentCertificate: ConfigurationField; // Attestation CARSAT accidents du travail\n paidVacationAndBadWeatherUnemployment: ConfigurationField; // Certificat attestant le respect des obligations relatives aux congés payés et au chômage intempérie\n buildingCertification: ConfigurationField; // Certification Bâtiment\n publicMarketSwornStatement: ConfigurationField; // Déclaration sur l’honneur -Marchés Publics\n supplyRelationConvention: ConfigurationField; // Nouvelle charte relation fournisseurs & rse\n}\n\nexport interface AgentsConfigurationFormValues\n extends CommonConfigurationFormValues {\n specialities: ConfigurationField;\n offerType: ConfigurationField;\n area: ConfigurationField;\n}\n\nexport interface SellersConfigurationFormValues\n extends CommonConfigurationFormValues {\n district: ConfigurationField;\n}\n\nexport type UserConfigurationFormValues =\n | AdminConfigurationFormValues\n | ProsConfigurationFormValues\n | AgentsConfigurationFormValues\n | SellersConfigurationFormValues;\n\nexport type Configuration = Resource & {\n identifier: ConfigurationsIdentifier;\n data: UserConfigurationFormValues;\n};\n\nexport type Log = Resource & {\n identifier: LogsIdentifier;\n profile: {\n id: string;\n name: string;\n email: string;\n role: ROLE;\n roleName: string;\n };\n ip: string;\n date?: number;\n data: LogData;\n};\n\nexport enum LogsIdentifier {\n EXPORT_DATA = 'EXPORT_DATA',\n}\n\nexport type LogData = ExportLog;\n\nexport type ExportLog = {\n query: QueryIdentifier;\n queryName: string;\n filters: any;\n formattedFilters: { label: string; value: string }[];\n};\n\nexport enum QueryIdentifier {\n EXPORT_EVENTS = 'EXPORT_EVENTS',\n EXPORT_BILLS = 'EXPORT_BILLS',\n EXPORT_DEVIS = 'EXPORT_DEVIS',\n EXPORT_PROJECTS = 'EXPORT_PROJECTS',\n}\n\nexport type ExtraEmail = {\n label: string;\n email: string;\n};\n\n// following statuses come from Stripe documentation\n// https://stripe.com/docs/billing/migration/invoice-states\nexport type StripeInvoiceStatus =\n | 'draft'\n | 'open'\n | 'paid'\n | 'void'\n | 'uncollectible';\n\nexport interface SystemVersion {\n date: number;\n version: string;\n}\n\nexport enum BillIssuedReasons {\n CREDIT_NOTE_ADMINISTRATIVE = 'CREDIT_NOTE_ADMINISTRATIVE',\n CREDIT_NOTE_OPERATIONAL = 'CREDIT_NOTE_OPERATIONAL',\n}\n\nexport enum EvaluationConfigIdentifier {\n PRO = 'PRO',\n}\n\nexport interface EvaluationConfigQuestion {\n order: number;\n title: string;\n weight: number;\n required: boolean;\n description?: string;\n}\n\nexport interface EvaluationConfig extends Resource {\n identifier: EvaluationConfigIdentifier;\n questions: EvaluationConfigQuestion[];\n}\n\nexport interface Evaluation extends Resource {\n identifier: EvaluationConfigIdentifier;\n questions: QuestionResponse[];\n result: number;\n projectId: string;\n userId: string;\n notes: string;\n}\n\nexport interface QuestionResponse extends EvaluationConfigQuestion {\n value?: number;\n text?: string;\n}\n\ninterface DevisCandidateFile extends File {\n lastConsultationDate?: number;\n lastConstultationUser?: {\n userId: string;\n displayName: string;\n };\n}\n\nexport interface DevisCandidate extends Devis {\n files: DevisCandidateFile[];\n}\n\nexport enum WorkOrderStatusEnum {\n CREATED = 'CREATED',\n TO_VALIDATE = 'TO_VALIDATE',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n}\n\nexport interface WorkOrderStatusHistory {\n before: WorkOrderStatusEnum;\n after: WorkOrderStatusEnum;\n date: number;\n userId: string;\n comments: string;\n}\n\nexport enum WorkOrderPriceRange {\n LESS_2500 = 'LESS_2500',\n MORE_2500_LESS_10000 = 'MORE_2500_LESS_10000',\n MORE_10000_LESS_40000 = 'MORE_10000_LESS_40000',\n MORE_40000 = 'MORE_40000',\n}\n\nexport interface WorkOrder extends Resource {\n title: string;\n /**\n * Référence interne à la SNCF généré par l’outil iGO en\n * amont de la création de l’OT dans la marketplace\n */\n reference: string;\n /**\n * Nom de l’Agence Bâtiment Energies (ABE) de la SNCF\n */\n agenceName: string;\n /**\n * Permet de retranscrire précisément le besoin travaux\n */\n description: string;\n /**\n * Adresse du lieu des travaux (N°-Rue-Nom de la voie-CP-Ville)\n */\n address: string;\n addressComments: string;\n region: string;\n priority: string;\n estimatedDate: number;\n files: File[];\n images: File[];\n estimatedPrice?: number;\n rangeOfPrice?: WorkOrderPriceRange;\n daysToClose: number;\n status: WorkOrderStatusEnum;\n statusHistory: WorkOrderStatusHistory[];\n\n mandatorySiteVisit: boolean;\n client: string;\n centralInformationAccounting: string;\n localInformationAccounting: string;\n /**\n * It is used to filter professionals projects inside marketplace based on his skills\n */\n skills: string[];\n /**\n * It is used to determine if it is a job where there are toxic substances such as lead.\n */\n toxicSubstances: boolean;\n /**\n * Reference to the project once the order is approved and a new project created with its data\n */\n projectId?: string;\n}\n\nexport enum CandidatureValidation {\n VALID = 'valid',\n NOT_VALID = 'not-valid',\n NOT_ANALYSED = 'not-analysed',\n}\n\nexport interface Candidatures extends Resource {\n userId: string;\n isValid: CandidatureValidation;\n comment?: string;\n validatedAt: number;\n}\n","function isBuffer(obj: any): boolean {\n return (\n obj &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n );\n}\n\nfunction keyIdentity(key: string | number) {\n return key;\n}\n\ntype FlattenOptions = {\n delimiter?: string;\n maxDepth?: number;\n transformKey?: (key: string | number) => string;\n safe?: boolean;\n};\n\nexport function flatten(target: any, options?: FlattenOptions) {\n const opts = options || {};\n\n const delimiter = opts.delimiter || '.';\n const maxDepth = opts.maxDepth;\n const transformKey = opts.transformKey || keyIdentity;\n const output: any = {};\n\n function step(object: any, prev: any, currentDepth: number) {\n const depth = currentDepth || 1;\n\n Object.keys(object).forEach(key => {\n const value = object[key];\n const isarray = opts.safe && Array.isArray(value);\n const type = Object.prototype.toString.call(value);\n const isbuffer = isBuffer(value);\n const isobject = type === '[object Object]' || type === '[object Array]';\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key);\n\n if (\n !isarray &&\n !isbuffer &&\n isobject &&\n Object.keys(value).length &&\n (!maxDepth || depth < maxDepth)\n ) {\n step(value, newKey, depth + 1);\n }\n\n output[newKey] = value;\n });\n }\n\n step(target, null, 0);\n\n return output;\n}\n","import * as articho from '../types';\n\nexport type EventMap = {\n 'enterprise.created': articho.Enterprise;\n 'enterprise.updated': articho.Enterprise;\n 'enterprise.removed': articho.Enterprise;\n 'enterprise.subscription.updated': articho.Enterprise;\n\n 'project.created': articho.Project;\n 'project.updated': articho.Project;\n 'project.removed': articho.Project;\n 'project.status.updated': articho.Project;\n\n 'devis.created': articho.Devis;\n 'devis.updated': articho.Devis;\n 'devis.removed': articho.Devis;\n 'devis.status.updated': articho.Devis;\n\n 'bill.created': articho.BillIssued | articho.BillReceived;\n 'bill.updated': articho.BillIssued | articho.BillReceived;\n 'bill.removed': articho.BillIssued | articho.BillReceived;\n 'bill.status.updated': articho.BillIssued | articho.BillReceived;\n};\n\nexport interface EventMetadata {\n /**\n * Timestamp of event\n */\n timestamp: number | string;\n\n /**\n * Data Id to be used in filters and queries\n */\n entityId: string;\n\n /**\n * To whom this data belongs?\n */\n scope: string;\n\n /**\n * Object that contains the values of the id of the entities \n * that make up the path of the modified entity\n */\n params: {\n [option: string]: any;\n };\n}\n\n/**\n * Event\n */\nexport interface AppEvent<T extends keyof EventMap> {\n /**\n * Event metadata to filter\n */\n meta: EventMetadata;\n\n /**\n * Type of event\n */\n type: T;\n\n /**\n * data associate to the event\n */\n data: EventMap[T];\n}\n\nexport const createEvent = <T extends keyof EventMap>(\n type: T,\n data: EventMap[T],\n meta: EventMetadata\n): AppEvent<T> => {\n return {\n data,\n type,\n meta,\n };\n};\n"],"names":["ROLE","env","orderedAccess","CLIENT","PRO","AGENT","ADMIN","SUPERADMIN","hasRole","claims","security","role","is","canActAs","userRole","getRole","indexOf","getRoles","filter","acls","productionEnvironment","credentials","algolia","cloudinary","stripe","isTest","name","search","scopeField","visibleBy","ownerField","enterprise","secureSearchApiKey","realtime","projects","schema","collections","users","enterprises","billing","medias","events","notes","visitReports","documents","devis","plans","downPayments","providers","statuses","orders","bills","counters","invoices","materialsProvider","materials","invitations","devisTemplates","estimations","userNotifications","histories","receptionVouchers","indexes","notifications","nomenclatures","categories","operationsCatalogs","operationsGroups","operations","operationMaterials","devisVersions","enterpriseDocuments","enterpriseMedias","configurations","logs","systemVersions","userProfiles","evaluationsConfig","evaluations","devisCandidates","workOrders","candidatures","docs","user","userProfile","global","project","paymentMethods","provider","status","counter","invoice","material","invitation","devisTemplate","estimation","userNotification","history","notification","category","operation","operationMaterial","devisVersion","enterpriseDocument","enterpriseMedia","configuration","log","systemVersion","evaluationConfig","evaluation","devisCandidate","workOrder","candidature","admins","agents","pros","sellers","clients","operationsMaterials","systemMaterials","systemOperations","systemOperationsMaterials","systemMaterialsProvider","systemStatus","systemNomenclatures","systemCategories","searchableAttributes","attributesForFaceting","maxValuesPerFacet","maxFacetHits","ranking","dev","base","_extends","staging","test","emulator","Environments","getEnv","envName","production","FactoryCreateFunction","create","id","data","createdAt","updatedAt","Date","now","objectID","helpers","profiles","payments","billsIssued","billsReceived","downPayment","receptionVoucher","operationsCatalog","ASCII_CHARS","uid","generate","lastPushTime","lastRandChars","getTime","duplicateTime","timeStampChars","Array","i","charAt","Math","floor","Error","join","random","length","timestamp","asDate","time","substring","reversePathName","path","pathParts","split","pathnames","Object","keys","pathName","pathvalues","values","pathvalue","index","findIndex","p","parts","fulfilledParts","map","part","idx","getPath","params","regex","RegExp","m","generatedPath","toString","exec","_m","match","paramName","hasOwnProperty","String","createProducts","products","classic","internal","product","description","type","price","main","active","isPrivate","rating","order","includes","maxAdminUsers","maxAgentUsers","maxProUsers","maxSellerUsers","authorizationManagement","dashboard","accounting","projectStorage","customCatalog","customConfig","exportReports","externalApiIntegration","support","tariffs","t","tax_rates","standard","plus","testing","usageType","additionalAdmin","additionalAgent","additionalPro","additionalSeller","ProDocumentEmailSend","MarketplaceStatus","VisitReportStatus","DevisOriginEnum","DevisCommissionsEntity","DevisHistoryType","DevisDocSectionEnum","DevisDocColorEnum","DevisDocDurationEnum","MaterialsProviderType","ProjectType","OperationStatusEnum","NotesType","NotificationType","DevisStatusEnum","DevisTypeEnum","DevisViewMode","DevisPdfSectionEnum","DocumentsTypeEnum","EventsTypeEnum","PaymentMethodTypeEnum","BillDocTypeEnum","BillIssuedStatus","BillReceivedStatus","ReceptionVoucherStatus","BillType","BillReceivedEntity","BillReceivedType","BillIssuedEntity","BillIssuedType","BillElementType","BillDiscountType","PaymentType","ProjectTypeEnum","ProjectCategoriesEnum","ProSpecialitiesEnum","ProSkillsEnum","MarketplaceProSkillsEnum","CommercialStatusEnum","Origin","OrderMaterialStatus","PhonesEnum","SendgridTemplates","TermsOfPayment","PaymentChoice","LateInterest","ProfileStatus","EstimationOriginEnum","EstimationTypeEnum","EmailTemplate","DevisPdfType","DevisPdfMode","DevisContractingEntity","EnterpriseStatusEnum","EnterpriseProductEnum","EstimationStatusEnum","HistoryActionEnum","HistoryEntityType","CategoryEntityEnum","DevisTemplateCatProvider","NomenclaturesIdentifier","BarCodeEnum","OperationQuantityEnum","OperationRulesEnum","ItemResponsible","ProjectPriceTypeEnum","DevisFormatEnum","ConfigurationsIdentifier","ConfigurationFieldType","ConfigurationDocumentType","LogsIdentifier","QueryIdentifier","BillIssuedReasons","EvaluationConfigIdentifier","WorkOrderStatusEnum","WorkOrderPriceRange","CandidatureValidation","isBuffer","obj","constructor","keyIdentity","key","flatten","target","options","opts","delimiter","maxDepth","transformKey","output","step","object","prev","currentDepth","depth","forEach","value","isarray","safe","isArray","prototype","call","isbuffer","isobject","newKey","createEvent","meta"],"mappings":"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;AACtB,KAAA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACD,CAAA;AAED,EAAA,OAAO1B,QAAQ,CAAA;AACjB,CAAC;;AC7OD,IAAM+B,OAAO,GAA0B;AACrC9B,EAAAA,OAAO,EAAE;AACPtE,IAAAA,EAAE,EAAE,qBAAqB;IACzBiG,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC3CF,IAAAA,OAAO,EAAE;AACP1G,MAAAA,IAAI,EAAE;AAAEW,QAAAA,EAAE,EAAE,gCAAgC;AAAE2E,QAAAA,KAAK,EAAE,GAAG;AAAE0B,QAAAA,SAAS,EAAE,UAAU;AAAE3B,QAAAA,IAAI,EAAE,MAAA;OAAQ;AAC/F4B,MAAAA,eAAe,EAAE;AAAEtG,QAAAA,EAAE,EAAE,gCAAgC;AAAE2E,QAAAA,KAAK,EAAE,EAAE;AAAE0B,QAAAA,SAAS,EAAE,SAAS;AAAE3B,QAAAA,IAAI,EAAE,YAAA;OAAc;AAC9G6B,MAAAA,eAAe,EAAE;AAAEvG,QAAAA,EA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"}
1
+ {"version":3,"file":"config.cjs.development.js","sources":["../src/auth/index.ts","../src/auth/policy.ts","../src/environment/base.ts","../src/environment/decorators.ts","../src/environment/index.ts","../src/helpers/index.ts","../src/helpers/uid.ts","../src/path/index.ts","../src/plans/base.ts","../src/plans/index.ts","../src/types.ts","../src/utils/flatten.ts","../src/events/index.ts"],"sourcesContent":["import { Environment } from '../index';\n\nexport enum ROLE {\n CLIENT = 'client',\n SELLER = 'seller',\n PRO = 'pro',\n AGENT = 'agent',\n ADMIN = 'admin',\n OWNER = 'owner',\n SUPERADMIN = 'superadmin',\n}\n\nexport type SecurityContext = {\n getRole: (claims: any) => ROLE;\n getRoles: (claims: any) => ROLE[];\n canActAs: (role: ROLE, claims: any) => boolean;\n is: (role: ROLE, claims: any) => boolean;\n};\n\n/**\n * security context\n */\nexport default (env: Environment): SecurityContext => {\n const orderedAccess = [\n ROLE.CLIENT,\n ROLE.PRO,\n ROLE.AGENT,\n ROLE.ADMIN,\n ROLE.SUPERADMIN,\n ];\n\n const hasRole = (claims: any) =>\n !claims || !claims[env.security.claims.role] ? false : true;\n\n const is = (claims: any, role: ROLE): boolean => {\n if (!hasRole(claims)) return false;\n\n return claims[env.security.claims.role] === role;\n };\n\n /**\n * Determine if an user can act under another security role\n *\n * @param role\n * @param claims\n */\n const canActAs = (role: ROLE, claims: any): boolean => {\n const userRole = getRole(claims);\n return orderedAccess.indexOf(role) < orderedAccess.indexOf(userRole);\n };\n\n /**\n * Get user role\n * @param claims\n */\n const getRole = (claims: any) =>\n hasRole(claims) ? claims[env.security.claims.role] : null;\n\n /**\n * Get all the roles on which an user can impersonate\n * @param claims\n */\n const getRoles = (claims: any) =>\n orderedAccess.filter(role => canActAs(role, claims));\n\n return {\n is,\n canActAs,\n getRole,\n getRoles,\n };\n};\n","type ProjectPolicy =\n | 'project.view'\n | 'project.edit'\n | 'project.create'\n | 'project.delete'\n | 'project.progress.edit'\n\n // assignations\n | 'project.assign.pro'\n | 'project.assign.agent'\n | 'project.assign.client'\n | 'project.assign.seller'\n | 'project.unassign.pro'\n | 'project.unassign.agent'\n | 'project.unassign.client'\n | 'project.unassign.seller'\n\n // other actions\n | 'project.validate'\n | 'project.status.edit'\n | 'project.pro.prices.view'\n | 'project.enterprise.prices.view'\n | 'project.sync.agenda'\n | 'project.estimation'\n\n // devis\n | 'project.devis.create'\n | 'project.devis.edit'\n | 'project.devis.delete'\n\n // notes\n | 'project.note.view'\n | 'project.note.create'\n | 'project.note.edit'\n | 'project.note.delete'\n\n // documents\n | 'project.document.view'\n | 'project.document.create'\n | 'project.document.edit'\n | 'project.document.delete'\n\n // medias\n | 'project.media.view'\n | 'project.media.create'\n | 'project.media.edit'\n | 'project.media.delete'\n\n // events\n | 'project.event.view'\n | 'project.event.create'\n | 'project.event.edit';\n\n/**\n * Devis policy\n */\ntype DevisPolicy =\n | 'devis.create'\n | 'devis.view'\n | 'devis.edit'\n | 'devis.delete'\n | 'devis.status.edit'\n | 'devis.email.send'\n | 'devis.validate'\n | 'devis.from.template.create';\n\n/**\n * Configuration\n */\ntype ConfigurationPolicy =\n | 'configuration.view'\n\n // status\n | 'configuration.status.view'\n | 'configuration.status.create'\n | 'configuration.status.edit'\n | 'configuration.status.delete'\n\n // providers\n | 'configuration.provider.view'\n | 'configuration.provider.edit'\n | 'configuration.provider.delete'\n | 'configuration.provider.create'\n\n // material providers\n | 'configuration.material.provider.view'\n | 'configuration.material.provider.edit'\n | 'configuration.material.provider.delete'\n | 'configuration.material.provider.create'\n\n // materials\n | 'configuration.material.view'\n | 'configuration.material.edit'\n | 'configuration.material.delete'\n | 'configuration.material.create'\n\n // operations\n | 'configuration.operation.view'\n | 'configuration.operation.edit'\n | 'configuration.operation.delete'\n | 'configuration.operation.create'\n\n // devis templates\n | 'configuration.devis.template.view'\n | 'configuration.devis.template.edit'\n | 'configuration.devis.template.delete'\n | 'configuration.devis.template.create'\n\n // team\n | 'configuration.team.view'\n\n // users (pro)\n | 'configuration.pro.edit'\n | 'configuration.pro.delete'\n | 'configuration.pro.create'\n | 'configuration.pro.view'\n\n // users (agent)\n | 'configuration.agent.edit'\n | 'configuration.agent.delete'\n | 'configuration.agent.create'\n | 'configuration.agent.view'\n\n // users (admins)\n | 'configuration.admin.edit'\n | 'configuration.admin.delete'\n | 'configuration.admin.create'\n | 'configuration.admin.view'\n\n // enterprise\n | 'configuration.enterprise.edit'\n | 'configuration.enterprise.delete'\n | 'configuration.enterprise.create'\n | 'configuration.enterprise.view'\n | 'configuration.enterprise.payment.method.add'\n | 'configuration.enterprise.payment.method.delete'\n | 'configuration.enterprise.payment.history.view';\n\nexport type Policy = ProjectPolicy | DevisPolicy | ConfigurationPolicy;\n\nexport const acls: Policy[] = [\n 'project.view',\n 'project.edit',\n 'project.create',\n 'project.delete',\n 'project.progress.edit',\n\n // assignations\n 'project.assign.pro',\n 'project.assign.agent',\n 'project.assign.client',\n 'project.assign.seller',\n 'project.unassign.pro',\n 'project.unassign.agent',\n 'project.unassign.client',\n 'project.unassign.seller',\n\n // other actions\n 'project.validate',\n 'project.status.edit',\n 'project.pro.prices.view',\n 'project.enterprise.prices.view',\n 'project.sync.agenda',\n 'project.estimation',\n\n // devis\n 'project.devis.create',\n 'project.devis.edit',\n 'project.devis.delete',\n\n // notes\n 'project.note.view',\n 'project.note.create',\n 'project.note.edit',\n 'project.note.delete',\n\n // documents\n 'project.document.view',\n 'project.document.create',\n 'project.document.edit',\n 'project.document.delete',\n\n // medias\n 'project.media.view',\n 'project.media.create',\n 'project.media.edit',\n 'project.media.delete',\n\n // events\n 'project.event.view',\n 'project.event.create',\n 'project.event.edit',\n\n /**\n * Devis policy\n */\n\n 'devis.create',\n 'devis.view',\n 'devis.edit',\n 'devis.delete',\n 'devis.status.edit',\n 'devis.email.send',\n 'devis.validate',\n 'devis.from.template.create',\n\n /**\n * Configuration\n */\n 'configuration.view',\n\n // status\n 'configuration.status.view',\n 'configuration.status.create',\n 'configuration.status.edit',\n 'configuration.status.delete',\n\n // providers\n 'configuration.provider.view',\n 'configuration.provider.edit',\n 'configuration.provider.delete',\n 'configuration.provider.create',\n\n // material providers\n 'configuration.material.provider.view',\n 'configuration.material.provider.edit',\n 'configuration.material.provider.delete',\n 'configuration.material.provider.create',\n\n // materials\n 'configuration.material.view',\n 'configuration.material.edit',\n 'configuration.material.delete',\n 'configuration.material.create',\n\n // operations\n 'configuration.operation.view',\n 'configuration.operation.edit',\n 'configuration.operation.delete',\n 'configuration.operation.create',\n\n // devis templates\n 'configuration.devis.template.view',\n 'configuration.devis.template.edit',\n 'configuration.devis.template.delete',\n 'configuration.devis.template.create',\n\n // team\n 'configuration.team.view',\n\n // users (pro)\n 'configuration.pro.edit',\n 'configuration.pro.delete',\n 'configuration.pro.create',\n 'configuration.pro.view',\n\n // users (agent)\n 'configuration.agent.edit',\n 'configuration.agent.delete',\n 'configuration.agent.create',\n 'configuration.agent.view',\n\n // users (admins)\n 'configuration.admin.edit',\n 'configuration.admin.delete',\n 'configuration.admin.create',\n 'configuration.admin.view',\n\n // enterprise\n 'configuration.enterprise.edit',\n 'configuration.enterprise.delete',\n 'configuration.enterprise.create',\n 'configuration.enterprise.view',\n 'configuration.enterprise.payment.method.add',\n 'configuration.enterprise.payment.method.delete',\n 'configuration.enterprise.payment.history.view',\n];\n","// tslint:disable-next-line: object-literal-sort-keys\nimport { Environment } from './index';\n\nconst productionEnvironment: Environment = {\n credentials: {\n algolia: {},\n cloudinary: {},\n stripe: {},\n },\n isTest: false,\n name: 'production',\n\n security: {\n search: {\n // this field is used to set the scope of the record (the enterprise owner of record)\n scopeField: 'searchable(scope)',\n visibleBy: 'visibility',\n ownerField: 'owner',\n },\n claims: {\n enterprise: 'enterprise',\n role: 'role',\n secureSearchApiKey: 'searchKey',\n },\n },\n realtime: {\n default: 'enterprises/{enterpriseId}/indexes/{indexName}',\n projects:\n 'enterprises/{enterpriseId}/indexes/{indexName}/projects/{projectId}',\n },\n schema: {\n collections: {\n users: 'users',\n enterprises: 'enterprises',\n // tslint:disable-next-line: object-literal-sort-keys\n billing: 'enterprises/{enterpriseId}/billing',\n projects: 'enterprises/{enterpriseId}/projects',\n medias: 'enterprises/{enterpriseId}/projects/{projectId}/medias',\n events: 'enterprises/{enterpriseId}/projects/{projectId}/events',\n notes: 'enterprises/{enterpriseId}/projects/{projectId}/notes',\n visitReports:\n 'enterprises/{enterpriseId}/projects/{projectId}/visitReports',\n documents: 'enterprises/{enterpriseId}/projects/{projectId}/documents',\n devis: 'enterprises/{enterpriseId}/projects/{projectId}/devis',\n plans: 'enterprises/{enterpriseId}/projects/{projectId}/plans',\n downPayments:\n 'enterprises/{enterpriseId}/projects/{projectId}/downPayments',\n providers: 'enterprises/{enterpriseId}/providers',\n statuses: 'enterprises/{enterpriseId}/statuses',\n orders: 'enterprises/{enterpriseId}/projects/{projectId}/orders',\n bills: 'enterprises/{enterpriseId}/projects/{projectId}/bills',\n counters: 'counters',\n invoices: 'enterprises/{enterpriseId}/invoices',\n materialsProvider: 'enterprises/{enterpriseId}/materialsProvider',\n materials:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}/materials',\n invitations: 'enterprises/{enterpriseId}/invitations',\n devisTemplates: 'enterprises/{enterpriseId}/devisTemplates',\n estimations: 'enterprises/{enterpriseId}/estimations',\n userNotifications: 'users/{userId}/profiles/{enterpriseId}/notifications',\n histories: 'enterprises/{enterpriseId}/histories',\n receptionVouchers:\n 'enterprises/{enterpriseId}/projects/{projectId}/receptionVouchers',\n indexes: 'enterprises/{enterpriseId}/indexes',\n notifications: 'enterprises/{enterpriseId}/notifications',\n nomenclatures: 'enterprises/{enterpriseId}/nomenclatures',\n categories: 'enterprises/{enterpriseId}/categories',\n operationsCatalogs: 'enterprises/{enterpriseId}/operationsCatalogs',\n operationsGroups: 'enterprises/{enterpriseId}/operationsGroups',\n operations:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations',\n operationMaterials:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}/materials',\n devisVersions:\n 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}/versions',\n enterpriseDocuments: 'enterprises/{enterpriseId}/documents',\n enterpriseMedias: 'enterprises/{enterpriseId}/medias',\n configurations: 'enterprises/{enterpriseId}/configurations',\n logs: 'enterprises/{enterpriseId}/logs',\n systemVersions: 'systemVersions',\n userProfiles: 'users/{userId}/profiles',\n evaluationsConfig: 'enterprises/{enterpriseId}/evaluationsConfig',\n evaluations: 'enterprises/{enterpriseId}/evaluations',\n devisCandidates:\n 'enterprises/{enterpriseId}/projects/{projectId}/devisCandidates',\n workOrders: 'enterprises/{enterpriseId}/workOrders',\n candidatures:\n 'enterprises/{enterpriseId}/projects/{projectId}/candidatures',\n },\n docs: {\n user: 'users/{userId}',\n userProfile: 'users/{userId}/profiles/{enterpriseId}',\n billing: 'enterprises/{enterpriseId}/billing/{billingId}',\n enterprise: 'enterprises/{enterpriseId}',\n\n global: 'global/stats',\n project: 'enterprises/{enterpriseId}/projects/{projectId}',\n medias:\n 'enterprises/{enterpriseId}/projects/{projectId}/medias/{mediaId}',\n events:\n 'enterprises/{enterpriseId}/projects/{projectId}/events/{eventId}',\n notes: 'enterprises/{enterpriseId}/projects/{projectId}/notes/{noteId}',\n visitReports:\n 'enterprises/{enterpriseId}/projects/{projectId}/visitReports/{visitReportId}',\n documents:\n 'enterprises/{enterpriseId}/projects/{projectId}/documents/{documentId}',\n devis: 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}',\n plans: 'enterprises/{enterpriseId}/projects/{projectId}/plans/{planId}',\n downPayments:\n 'enterprises/{enterpriseId}/projects/{projectId}/downPayments/{downPaymentId}',\n paymentMethods:\n 'enterprises/{enterpriseId}/paymentMethods/{paymentMethodId}',\n provider: 'enterprises/{enterpriseId}/providers/{providerId}',\n status: 'enterprises/{enterpriseId}/statuses/{statusId}',\n orders:\n 'enterprises/{enterpriseId}/projects/{projectId}/orders/{orderId}',\n bills: 'enterprises/{enterpriseId}/projects/{projectId}/bills/{billId}',\n indexes:\n 'enterprises/{enterpriseId}/projects/{projectId}/indexes/{indexId}',\n counter: 'counters/{counterId}',\n invoice: 'enterprises/{enterpriseId}/invoices/{invoiceId}',\n materialsProvider:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}',\n material:\n 'enterprises/{enterpriseId}/materialsProvider/{materialsProviderId}/materials/{materialId}',\n invitation: 'enterprises/{enterpriseId}/invitations/{invitationId}',\n devisTemplate:\n 'enterprises/{enterpriseId}/devisTemplates/{devisTemplateId}',\n estimation: 'enterprises/{enterpriseId}/estimations/{estimationId}',\n userNotification:\n 'users/{userId}/profiles/{enterpriseId}/notifications/{notificationId}',\n history: 'enterprises/{enterpriseId}/histories/{historyId}',\n receptionVouchers:\n 'enterprises/{enterpriseId}/projects/{projectId}/receptionVouchers/{receptionVoucherId}',\n notification: 'enterprises/{enterpriseId}/notifications/{notificationId}',\n nomenclatures:\n 'enterprises/{enterpriseId}/nomenclatures/{nomenclatureId}',\n category: 'enterprises/{enterpriseId}/categories/{categoryId}',\n operationsCatalogs:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}',\n operationsGroups:\n 'enterprises/{enterpriseId}/operationsGroups/{operationsGroupId}',\n operation:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}',\n operationMaterial:\n 'enterprises/{enterpriseId}/operationsCatalogs/{operationsCatalogId}/operations/{operationId}/materials/{operationMaterialId}',\n devisVersion:\n 'enterprises/{enterpriseId}/projects/{projectId}/devis/{devisId}/versions/{versionId}',\n enterpriseDocument: 'enterprises/{enterpriseId}/documents/{documentId}',\n enterpriseMedia: 'enterprises/{enterpriseId}/medias/{mediaId}',\n configuration:\n 'enterprises/{enterpriseId}/configurations/{configurationId}',\n log: 'enterprises/{enterpriseId}/logs/{logId}',\n systemVersion: 'systemVersions/{systemVersionId}',\n evaluationConfig:\n 'enterprises/{enterpriseId}/evaluationsConfig/{evaluationConfigId}',\n evaluation: 'enterprises/{enterpriseId}/evaluations/{evaluationId}',\n devisCandidate:\n 'enterprises/{enterpriseId}/projects/{projectId}/devisCandidates/{devisCandidateId}',\n workOrder: 'enterprises/{enterpriseId}/workOrders/{workOrderId}',\n candidature:\n 'enterprises/{enterpriseId}/projects/{projectId}/candidatures/{candidatureId}',\n },\n indexes: {\n // users\n admins: 'admins',\n agents: 'agents',\n pros: 'pros',\n sellers: 'sellers',\n clients: 'clients',\n // projects\n projects: 'projects',\n medias: 'projects-medias',\n events: 'projects-events',\n devis: 'projects-devis',\n // configuration\n providers: 'providers',\n materials: 'materials',\n operations: 'operations',\n operationsMaterials: 'operations-materials',\n estimations: 'estimations',\n nomenclatures: 'nomenclatures',\n workOrders: 'workOrders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'system-status',\n systemNomenclatures: 'system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n search: {\n users: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: ['active', 'searchable(scope)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n agents: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'isLeader',\n 'leader',\n 'searchable(userId)',\n 'has_leader',\n 'searchable(email)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n pros: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'searchable(userId)',\n 'searchable(email)',\n 'searchable(specialities)',\n 'searchable(skills)',\n 'searchable(scope)',\n 'status',\n 'siren',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n admins: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n 'status',\n ],\n attributesForFaceting: [\n 'active',\n 'searchable(email)',\n 'searchable(userId)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n sellers: {\n searchableAttributes: [\n 'email',\n 'displayName',\n 'address',\n 'phone.mobile',\n 'jobTitle',\n ],\n attributesForFaceting: [\n 'active',\n 'isLeader',\n 'leader',\n 'has_leader',\n 'searchable(userId)',\n 'searchable(email)',\n 'searchable(provider)',\n 'searchable(scope)',\n 'status',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n clients: {\n searchableAttributes: ['email', 'displayName', 'address', 'phone.mobile'],\n attributesForFaceting: [\n 'active',\n 'userId',\n 'searchable(email)',\n 'searchable(scope)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n providers: {\n searchableAttributes: [\n 'name',\n 'contact.name',\n 'contact.email',\n 'address',\n 'siret',\n ],\n attributesForFaceting: [\n 'tva',\n 'commission.enterprise',\n 'commission.pro',\n 'commission.provider',\n 'searchable(scope)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n statuses: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(forDashboard)',\n 'searchable(default)',\n 'searchable(locked)',\n ],\n ranking: ['asc(order)', 'asc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n materials: {\n searchableAttributes: ['name', 'unitPrice', 'provider'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(scope)',\n 'searchable(provider)',\n 'searchable(category)',\n 'margin.id',\n 'supplier.id',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operations: {\n searchableAttributes: ['name', 'unitPrice', 'objectID'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(lot)',\n 'searchable(scope)',\n 'searchable(catalogId)',\n 'searchable(category)',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operationsMaterials: {\n searchableAttributes: ['name', 'unitPrice', 'unit', 'externalId'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(provider)',\n 'searchable(optId)',\n 'searchable(externalId)',\n ],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n projects: {\n searchableAttributes: [\n 'name',\n 'address',\n 'description',\n 'price.total',\n 'client.displayName',\n 'client.email',\n 'client.address',\n 'client.phone.number',\n 'pro.displayName',\n 'pro.email',\n 'agents.displayName',\n 'agents.email',\n 'sellers.displayName',\n 'sellers.email',\n 'provider.name',\n 'status',\n 'workOrderId.region',\n 'workOrderId.skills',\n ],\n attributesForFaceting: [\n 'parent.id',\n 'price.total',\n 'searchable(type)',\n 'searchable(priority)',\n 'searchable(status)',\n 'client.userId',\n 'searchable(client.displayName)',\n 'searchable(client.email)',\n 'agents.userId',\n 'searchable(agents.displayName)',\n 'searchable(agents.email)',\n 'searchable(pro.userId)',\n 'searchable(pro.displayName)',\n 'searchable(pro.email)',\n 'searchable(sellers.userId)',\n 'searchable(sellers.displayName)',\n 'searchable(sellers.email)',\n 'searchable(provider.id)',\n 'searchable(provider.name)',\n 'searchable(category)',\n 'searchable(agentManager)',\n 'searchable(agentReference)',\n 'searchable(sellerManager)',\n 'searchable(sellerReference)',\n 'searchable(scope)',\n 'searchable(marketplaceStatus)',\n 'searchable(candidates)',\n 'searchable(workOrderId.region)',\n 'searchable(workOrderId.skills)',\n ],\n ranking: [\n 'attribute',\n 'desc(updatedAt)',\n 'proximity',\n 'typo',\n 'geo',\n 'words',\n 'filters',\n 'exact',\n ],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n workOrders: {\n searchableAttributes: [\n 'reference',\n 'address',\n 'estimatedPrice',\n 'owner.displayName',\n ],\n attributesForFaceting: [\n 'owner',\n 'searchable(scope)',\n 'searchable(priority)',\n 'searchable(status)',\n 'searchable(owner.userId)',\n ],\n ranking: ['desc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n medias: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'owner',\n 'searchable(tags)',\n 'projectId',\n 'searchable(scope)',\n 'createdDate',\n ],\n ranking: ['desc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n devis: {\n searchableAttributes: ['name', 'status'],\n attributesForFaceting: [\n 'searchable(status)',\n 'operationsCatalog',\n 'projectId',\n 'searchable(scope)',\n 'pdf_generated',\n ],\n ranking: ['desc(dateApproved)', 'desc(status)', 'desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n events: {\n searchableAttributes: ['title', 'type'],\n attributesForFaceting: [\n 'type',\n 'searchable(start)',\n 'searchable(end)',\n 'owner',\n 'projectId',\n 'searchable(scope)',\n ],\n ranking: ['desc(start)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemMaterials: {\n searchableAttributes: ['name', 'unitPrice'],\n attributesForFaceting: [\n 'unitPrice',\n 'searchable(provider)',\n 'searchable(category)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemOperations: {\n searchableAttributes: ['name', 'unitPrice'],\n attributesForFaceting: ['searchable(lot)'],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemOperationsMaterials: {\n searchableAttributes: ['name', 'unitPrice', 'unit', 'externalId'],\n attributesForFaceting: ['searchable(provider)', 'searchable(optId)'],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemMaterialsProvider: {\n searchableAttributes: ['name', 'status'],\n attributesForFaceting: [\n 'searchable(status)',\n 'searchable(identifier)',\n 'searchable(addMaterials)',\n 'searchable(editable)',\n 'searchable(type)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemStatus: {\n searchableAttributes: ['name', 'color'],\n attributesForFaceting: [\n 'searchable(forDashboard)',\n 'searchable(default)',\n ],\n ranking: ['asc(order)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemNomenclatures: {\n searchableAttributes: ['identifier', 'value'],\n attributesForFaceting: ['searchable(identifier)', 'searchable(status)'],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n estimations: {\n searchableAttributes: [\n 'name',\n 'address',\n 'type',\n 'typeProject',\n 'client.displayName',\n 'client.email',\n 'client.address',\n 'client.phone.mobile',\n 'sellers.displayName',\n 'sellers.email',\n 'sellers.phone.mobile',\n 'provider.name',\n ],\n attributesForFaceting: [\n 'searchable(type)',\n 'searchable(typeProject)',\n 'searchable(scope)',\n 'searchable(owner.userId)',\n ],\n ranking: ['desc(updatedAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n systemCategories: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(entity)',\n 'searchable(parent)',\n 'searchable(provider)',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n nomenclatures: {\n searchableAttributes: ['value'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(identifier)',\n 'searchable(status)',\n ],\n ranking: ['asc(value)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n operationsGroups: {\n searchableAttributes: ['name'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(status)',\n 'searchable(operationsCatalog)',\n ],\n ranking: ['asc(name)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n workOrder: {\n searchableAttributes: ['reference'],\n attributesForFaceting: [\n 'searchable(scope)',\n 'searchable(status)',\n 'searchable(priority)',\n 'searchable(candidates)',\n 'searchable(agenceName)',\n 'searchable(skills)',\n 'searchable(client)',\n ],\n ranking: ['asc(createdAt)'],\n maxValuesPerFacet: 1000,\n maxFacetHits: 100,\n },\n },\n};\n\nexport default productionEnvironment;\n","import { Environment, EnvironmentDecorator } from './types';\n\nconst dev: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n isTest: true,\n name: 'development',\n});\n\nconst staging: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n isTest: false,\n name: 'staging',\n});\n\nconst test: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n schema: {\n ...base.schema,\n indexes: {\n // tslint:disable-next-line: object-literal-sort-keys\n clients: 'tests-clients',\n pros: 'tests-pros',\n agents: 'tests-agents',\n sellers: 'tests-sellers',\n projects: 'tests-projects',\n medias: 'tests-projects-medias',\n events: 'tests-projects-events',\n devis: 'tests-projects-devis',\n admins: 'tests-admins',\n providers: 'tests-providers',\n materials: 'tests-materials',\n operations: 'tests-operations',\n operationsMaterials: 'test-operations-materials',\n materialsProvider: 'materials-provider',\n devisTemplates: 'devis-templates',\n estimations: 'estimations',\n categories: 'categories',\n operationsCatalogs: 'operations-catalogs',\n nomenclatures: 'nomenclatures',\n operationsGroups: 'operations-groups',\n workOrders: 'work-orders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'test-system-status',\n systemNomenclatures: 'test-system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n isTest: true,\n name: 'test',\n});\n\nconst emulator: EnvironmentDecorator = (base: Environment) => ({\n ...base,\n schema: {\n ...base.schema,\n indexes: {\n // tslint:disable-next-line: object-literal-sort-keys\n clients: 'emulator-clients',\n pros: 'emulator-pros',\n agents: 'emulator-agents',\n sellers: 'emulator-sellers',\n projects: 'emulator-projects',\n medias: 'emulator-projects-medias',\n events: 'emulator-projects-events',\n devis: 'emulator-projects-devis',\n admins: 'emulator-admins',\n providers: 'emulator-providers',\n materials: 'emulator-materials',\n operations: 'emulator-operations',\n operationsMaterials: 'emulator-operations-materials',\n materialsProvider: 'materials-provider',\n devisTemplates: 'devis-templates',\n estimations: 'estimations',\n categories: 'categories',\n operationsCatalogs: 'operations-catalogs',\n nomenclatures: 'nomenclatures',\n operationsGroups: 'operations-groups',\n workOrders: 'work-orders',\n // used only for managment\n systemMaterials: 'system-materials',\n systemOperations: 'system-operations',\n systemOperationsMaterials: 'system-operations-materials',\n systemMaterialsProvider: 'system-materials-provider',\n systemStatus: 'emulator-system-status',\n systemNomenclatures: 'emulator-system-nomenclatures',\n systemCategories: 'system-categories',\n },\n },\n isTest: true,\n name: 'emulator',\n});\n\nexport { dev, staging, test, emulator };\n","import base from './base';\nimport { dev, staging, emulator, test } from './decorators';\nimport { Environment } from './types';\n\nexport enum Environments {\n dev = 'development',\n production = 'production',\n staging = 'staging',\n test = 'test',\n emulator = 'emulator',\n}\n\n/**\n * Load environment configuration\n *\n * @param envName\n */\nexport const getEnv = (envName?: Environments): Environment => {\n switch (envName) {\n case Environments.dev:\n return dev(base);\n case Environments.staging:\n return staging(base);\n case Environments.production:\n return base;\n case Environments.test:\n return test(base);\n case Environments.emulator:\n return emulator(base);\n default:\n return base;\n }\n};\n\nexport { Environment };\n","import * as articho from '../types';\n\nexport interface FactoryCreate<T> {\n create: (id: string, data: Partial<T>) => Partial<T>;\n}\n\nexport interface Helpers {\n projects: FactoryCreate<articho.Project>;\n users: FactoryCreate<articho.User>;\n profiles: FactoryCreate<articho.Profile>;\n notes: FactoryCreate<articho.Note>;\n visitReports: FactoryCreate<articho.VisitReport>;\n medias: FactoryCreate<articho.Media>;\n materials: FactoryCreate<articho.Material>;\n bills: FactoryCreate<articho.Bill>;\n billsIssued: FactoryCreate<articho.BillIssued>;\n billsReceived: FactoryCreate<articho.BillReceived>;\n devis: FactoryCreate<articho.Devis>;\n enterprises: FactoryCreate<articho.Enterprise>;\n providers: FactoryCreate<articho.Provider>;\n status: FactoryCreate<articho.Status>;\n payments: FactoryCreate<articho.Payment>;\n events: FactoryCreate<articho.Event>;\n documents: FactoryCreate<articho.Document>;\n orders: FactoryCreate<articho.Order>;\n plans: FactoryCreate<articho.Plan>;\n materialsProvider: FactoryCreate<articho.MaterialsProvider>;\n devisTemplate: FactoryCreate<articho.DevisTemplate>;\n paymentMethods: FactoryCreate<articho.DevisTemplate>;\n estimations: FactoryCreate<articho.Estimation>;\n invitations: FactoryCreate<articho.Invitation>;\n downPayment: FactoryCreate<articho.DownPayment>;\n histories: FactoryCreate<articho.History>;\n receptionVoucher: FactoryCreate<articho.ReceptionVoucher>;\n nomenclatures: FactoryCreate<articho.Nomenclature>;\n categories: FactoryCreate<articho.Category>;\n operationsCatalog: FactoryCreate<articho.OperationCatalog>;\n operations: FactoryCreate<articho.Operation>;\n operationMaterials: FactoryCreate<articho.OperationMaterial>;\n operationsGroups: FactoryCreate<articho.OperationsGroup>;\n devisVersions: FactoryCreate<articho.DevisVersion>;\n enterpriseDocuments: FactoryCreate<articho.EnterpriseResourse>;\n enterpriseMedias: FactoryCreate<articho.EnterpriseResourse>;\n configurations: FactoryCreate<articho.Configuration>;\n systemVersions: FactoryCreate<articho.SystemVersion>;\n evaluationConfig: FactoryCreate<articho.EvaluationConfig>;\n evaluations: FactoryCreate<articho.Evaluation>;\n devisCandidates: FactoryCreate<articho.Evaluation>;\n workOrders: FactoryCreate<articho.WorkOrder>;\n candidatures: FactoryCreate<articho.Candidatures>;\n indexes: FactoryCreate<any>;\n}\n\n/**\n * This functions adds by default objectID and createdAt, updatedAt variables\n */\nexport const FactoryCreateFunction = <T>() => ({\n create: (id: string, data: Partial<T>) => ({\n // @ts-ignore\n ...(data?.createdAt || data?.updatedAt ? {} : { createdAt: Date.now() }),\n // @ts-ignore\n ...(data?.updatedAt ? {} : { updatedAt: Date.now() }),\n objectID: id,\n id,\n ...data,\n }),\n});\n\nconst helpers: Helpers = {\n profiles: FactoryCreateFunction(),\n projects: FactoryCreateFunction(),\n notes: FactoryCreateFunction(),\n visitReports: FactoryCreateFunction(),\n materials: FactoryCreateFunction(),\n medias: FactoryCreateFunction(),\n plans: FactoryCreateFunction(),\n users: FactoryCreateFunction(),\n payments: FactoryCreateFunction(),\n status: FactoryCreateFunction(),\n providers: FactoryCreateFunction(),\n documents: FactoryCreateFunction(),\n devis: FactoryCreateFunction(),\n enterprises: FactoryCreateFunction(),\n events: FactoryCreateFunction(),\n orders: FactoryCreateFunction(),\n bills: FactoryCreateFunction(),\n billsIssued: FactoryCreateFunction(),\n billsReceived: FactoryCreateFunction(),\n materialsProvider: FactoryCreateFunction(),\n devisTemplate: FactoryCreateFunction(),\n paymentMethods: FactoryCreateFunction(),\n estimations: FactoryCreateFunction(),\n invitations: FactoryCreateFunction(),\n downPayment: FactoryCreateFunction(),\n histories: FactoryCreateFunction(),\n receptionVoucher: FactoryCreateFunction(),\n nomenclatures: FactoryCreateFunction(),\n categories: FactoryCreateFunction(),\n operationsCatalog: FactoryCreateFunction(),\n operations: FactoryCreateFunction(),\n operationMaterials: FactoryCreateFunction(),\n operationsGroups: FactoryCreateFunction(),\n devisVersions: FactoryCreateFunction(),\n enterpriseDocuments: FactoryCreateFunction(),\n enterpriseMedias: FactoryCreateFunction(),\n configurations: FactoryCreateFunction(),\n systemVersions: FactoryCreateFunction(),\n evaluationConfig: FactoryCreateFunction(),\n evaluations: FactoryCreateFunction(),\n indexes: FactoryCreateFunction(),\n devisCandidates: FactoryCreateFunction(),\n workOrders: FactoryCreateFunction(),\n candidatures: FactoryCreateFunction(),\n};\n\nexport default helpers;\n","export interface IUID {\n generate(): string;\n timestamp(uid: string, asDate?: boolean): number | Date;\n}\n\n/**\n * SEE --> https://gist.github.com/mikelehen/3596a30bd69384624c11\n *\n * Generator that creates 20-character string identifiers with the following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't collide.\n * 3. They sort *lexicographically* (timestamp converted to chars which will sort)\n * 4. They're monotonically increasing. This is done by storing previous random bits\n * increasing them only by one.\n */\n\n// ASCII ordered base64 web safe chars.\nconst ASCII_CHARS =\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\nexport const uid: IUID = {\n /**\n * Generate\n * Generates uid push identifier.\n */\n generate: (function () {\n // Timestamp of last push, used to prevent local\n // collisions if you push twice in one ms.\n let lastPushTime = 0;\n\n // We generate 72-bits of randomness which get\n // turned into 12 characters and appended to the\n // timestamp to prevent collisions with other clients.\n // We store the last characters we generated because\n // in the event of a collision, we'll use those same\n // characters except \"incremented\" by one.\n const lastRandChars: any[] = [];\n\n return function () {\n let now = new Date().getTime();\n let duplicateTime = now === lastPushTime;\n\n lastPushTime = now;\n\n let timeStampChars: string[] = new Array(8);\n\n let i: number;\n\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = ASCII_CHARS.charAt(now % 62);\n\n // NOTE: Can't use << here because javascript\n // will convert to int and lose the upper bits.\n now = Math.floor(now / 62);\n }\n\n if (now !== 0)\n throw new Error('We should have converted the entire timestamp.');\n\n let id = timeStampChars.join('');\n\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 62);\n }\n }\n\n // If the timestamp hasn't changed since\n // last push, use the same random number,\n // except incremented by 1.\n else {\n for (i = 11; i >= 0 && lastRandChars[i] === 61; i--) {\n lastRandChars[i] = 0;\n }\n\n lastRandChars[i]++;\n }\n\n for (i = 0; i < 12; i++) {\n id += ASCII_CHARS.charAt(lastRandChars[i]);\n }\n\n if (id.length !== 20) throw new Error('Length should be 20.');\n\n return id;\n };\n })(),\n\n /**\n * Timestamp\n * Gets timestamp from provided uid.\n */\n timestamp: (function () {\n return function (id: string, asDate?: boolean): number | Date {\n let time = 0;\n const data = id.substring(0, 8);\n\n for (let i = 0; i < 8; i++) {\n time = time * 62 + ASCII_CHARS.indexOf(data[i]);\n }\n\n if (asDate) return new Date(time);\n\n return time;\n };\n })(),\n};\n","import { Environment } from '../index';\n\ninterface IPathParams {\n [key: string]: any;\n}\n\nexport const reversePathName = (\n path: string,\n env: Environment\n): string | null => {\n const pathParts = path.split('/');\n\n const pathnames = Object.keys(env.schema.docs).filter(pathName => {\n // only paths with same amount of parts should match\n // @ts-ignore\n return env.schema.docs[pathName].split('/').length === pathParts.length;\n });\n\n const pathvalues = Object.values(env.schema.docs).filter(pathvalue => {\n // only paths with same amount of parts should match\n return pathvalue.split('/').length === pathParts.length;\n });\n\n const index = pathvalues.findIndex(p => {\n const parts = p.split('/');\n\n const fulfilledParts = parts\n .map((part, idx) => (/\\{(\\w+)\\}/.test(part) ? pathParts[idx] : part))\n .join('/');\n\n return fulfilledParts === path;\n });\n\n if (index > -1) return pathnames[index];\n\n return null;\n};\n\nexport const getPath = (path: string, params: IPathParams = {}): string => {\n const regex = new RegExp(/\\{(\\w+)\\}*/gm);\n let m: RegExpExecArray | null;\n let generatedPath = path.toString();\n\n do {\n m = regex.exec(generatedPath);\n\n if (m) {\n const [match, paramName] = m;\n if (!params.hasOwnProperty(paramName)) {\n throw new Error(`Param \"${paramName}\" is missing from path params`);\n }\n generatedPath = generatedPath\n .split(match)\n .join(String(params[paramName]));\n }\n } while (m !== null);\n\n return generatedPath;\n};\n\nexport default getPath;\n","import { ProductCreationParams, ProductReference } from 'plans/types';\n\n/**\n *\n * @param envName\n * @param params\n */\nconst createProducts = (params: ProductCreationParams): ProductReference => {\n const products: ProductReference = {\n classic: {\n id: params.classic.id,\n internal: 'classic',\n product: {\n id: params.classic.id,\n name: 'Abonnement Articho',\n description: '',\n type: 'service',\n price: 159,\n main: true,\n active: true,\n isPrivate: false,\n rating: 3,\n order: 3,\n includes: {\n maxAdminUsers: 1,\n maxAgentUsers: 0,\n maxProUsers: 0,\n maxSellerUsers: 0,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.classic.tariffs).map(t => t.id),\n tax_rates: params.classic.tax_rates,\n },\n tariffs: params.classic.tariffs,\n },\n standard: {\n id: params.standard.id,\n internal: 'standard',\n product: {\n id: params.standard.id,\n name: 'Standard',\n description: 'Pour les entreprises unipersonnelles',\n type: 'service',\n price: 69,\n main: true,\n active: true,\n isPrivate: true,\n rating: 1,\n order: 1,\n includes: {\n maxAdminUsers: null,\n maxAgentUsers: null,\n maxProUsers: null,\n maxSellerUsers: null,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.standard.tariffs).map(t => t.id),\n tax_rates: params.standard.tax_rates,\n },\n tariffs: params.standard.tariffs,\n },\n plus: {\n id: params.plus.id,\n internal: 'plus',\n product: {\n id: params.plus.id,\n name: 'Plus',\n description: 'Idéal pour les agences et les entreprises de plus grande taille',\n type: 'service',\n price: 159,\n main: true,\n active: true,\n isPrivate: true,\n rating: 2,\n order: 2,\n includes: {\n maxAdminUsers: null,\n maxAgentUsers: null,\n maxProUsers: null,\n maxSellerUsers: null,\n authorizationManagement: true,\n dashboard: true,\n accounting: true,\n projectStorage: true,\n customCatalog: true,\n customConfig: true,\n exportReports: true,\n externalApiIntegration: true,\n support: true,\n },\n plans: Object.values(params.plus.tariffs).map(t => t.id),\n tax_rates: params.plus.tax_rates,\n },\n tariffs: params.plus.tariffs,\n },\n // test_1: {\n // id: params.test_1.id,\n // internal: 'test_1',\n // product: {\n // id: params.test_1.id,\n // name: 'Test 1',\n // description: '',\n // type: 'service',\n // price: 50,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 1,\n // order: 4,\n // includes: {\n // maxAdminUsers: 1,\n // maxAgentUsers: 0,\n // maxProUsers: 0,\n // maxSellerUsers: 0,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_1.tariffs).map(t => t.id),\n // tax_rates: params.test_1.tax_rates,\n // },\n // tariffs: params.test_1.tariffs,\n // },\n // test_2: {\n // id: params.test_2.id,\n // internal: 'test_2',\n // product: {\n // id: params.test_2.id,\n // name: 'Test 2',\n // description: '',\n // type: 'service',\n // price: 100,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 2,\n // order: 5,\n // includes: {\n // maxAdminUsers: 1,\n // maxAgentUsers: 0,\n // maxProUsers: 0,\n // maxSellerUsers: 0,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_2.tariffs).map(t => t.id),\n // tax_rates: params.test_2.tax_rates,\n // },\n // tariffs: params.test_2.tariffs,\n // },\n // test_3: {\n // id: params.test_3.id,\n // internal: 'test_3',\n // product: {\n // id: params.test_3.id,\n // name: 'Test 3',\n // description: '',\n // type: 'service',\n // price: 80,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 3,\n // order: 6,\n // includes: {\n // maxAdminUsers: null,\n // maxAgentUsers: null,\n // maxProUsers: null,\n // maxSellerUsers: null,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_3.tariffs).map(t => t.id),\n // tax_rates: params.test_3.tax_rates,\n // },\n // tariffs: params.test_3.tariffs,\n // },\n // test_4: {\n // id: params.test_4.id,\n // internal: 'test_4',\n // product: {\n // id: params.test_4.id,\n // name: 'Test 4',\n // description: '',\n // type: 'service',\n // price: 65,\n // main: true,\n // active: true,\n // isPrivate: false,\n // rating: 3,\n // order: 7,\n // includes: {\n // maxAdminUsers: 3,\n // maxAgentUsers: 3,\n // maxProUsers: 3,\n // maxSellerUsers: 3,\n // authorizationManagement: true,\n // dashboard: true,\n // accounting: true,\n // projectStorage: true,\n // customCatalog: true,\n // customConfig: true,\n // exportReports: true,\n // externalApiIntegration: true,\n // support: true,\n // },\n // plans: Object.values(params.test_4.tariffs).map(t => t.id),\n // tax_rates: params.test_4.tax_rates,\n // },\n // tariffs: params.test_4.tariffs,\n // },\n };\n\n return products;\n};\n\nexport default createProducts;\n","import {\n SubscriptionSettings,\n Product,\n DeploymentEnvironment,\n ProductCreationParams,\n ProductReference,\n ProductEntry,\n} from 'plans/types';\n\nimport createProducts from 'plans/base';\n\nexport { Product, ProductEntry, SubscriptionSettings };\n\nconst testing: ProductCreationParams = {\n classic: {\n id: 'prod_KzmO4rORyWl8cA',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJmpiLFzcsAA7x6rLA0GNZX', price: 159, usageType: 'licensed', type: 'base' },\n additionalAdmin: { id: 'price_1KJmpiLFzcsAA7x6VtCIuhqw', price: 30, usageType: 'metered', type: 'extra_user' },\n additionalAgent: { id: 'price_1KJmpiLFzcsAA7x6gFBgAXkr', price: 20, usageType: 'metered', type: 'extra_user' },\n additionalPro: { id: 'price_1KJmpiLFzcsAA7x6JxTnlLC8', price: 10, usageType: 'metered', type: 'extra_user' },\n additionalSeller: { id: 'price_1KJmpiLFzcsAA7x6XS9PBgQo', price: 2, usageType: 'metered', type: 'extra_user' },\n },\n },\n standard: {\n id: 'prod_KzmEyS3UQ5lbnz',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJmg4LFzcsAA7x6SMfj1iDu', price: 69, usageType: 'licensed', type: 'base' },\n },\n // prices: {\n // monthly: 'price_1KJmg4LFzcsAA7x6SMfj1iDu',\n // additionalUser: 'price_1KJmg4LFzcsAA7x6yzvGdoxe',\n // },\n // additionalUserPrice: 10,\n },\n plus: {\n id: 'prod_KzmyY1ysEOeK93',\n tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n tariffs: {\n base: { id: 'price_1KJnP0LFzcsAA7x6oDVeaPAv', price: 159, usageType: 'licensed', type: 'base' },\n },\n },\n // test_1: {\n // id: 'prod_L2ZqDUzF0HFuFN',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMUgwLFzcsAA7x6c3wk0Buy', price: 50, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMUgwLFzcsAA7x6X8qYBxls', price: 10, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMUgwLFzcsAA7x6fyOLh2gM', price: 8, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMUgwLFzcsAA7x6eB6Oevw2', price: 6, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMUgwLFzcsAA7x6s9WBpxTS', price: 4, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_2: {\n // id: 'prod_L2xmEk7gqqRJtS',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrqrLFzcsAA7x62Ag7xwjU', price: 100, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMrqrLFzcsAA7x6cu3it43A', price: 20, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMrqrLFzcsAA7x6eNCDb3D6', price: 16, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMrqrLFzcsAA7x6wRuDxyyN', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMrqsLFzcsAA7x61NRR9gne', price: 8, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_3: {\n // id: 'prod_L2xnCHGi6QNgX8',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrs0LFzcsAA7x6p2tkW6lu', price: 80, usageType: 'licensed', type: 'base' },\n // },\n // },\n // test_4: {\n // id: 'prod_L2yWF4ssugw8Ln',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMsZFLFzcsAA7x6qVbCQpuN', price: 65, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMsZFLFzcsAA7x6EjaDfica', price: 15, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMsZFLFzcsAA7x6T1FI1WF4', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMsZFLFzcsAA7x6L6I0M1ND', price: 9, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMsZFLFzcsAA7x6G5GXzPeW', price: 6, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n};\n\nconst production: ProductCreationParams = {\n classic: {\n id: 'prod_KzmYFhrWXrzWdR',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1KJmzNLFzcsAA7x6I6gNlCpY', price: 159, usageType: 'licensed', type: 'base' },\n additionalAdmin: { id: 'price_1KJmzNLFzcsAA7x6Tl6D8Wus', price: 30, usageType: 'metered', type: 'extra_user' },\n additionalAgent: { id: 'price_1KJmzNLFzcsAA7x6DeUQScKY', price: 20, usageType: 'metered', type: 'extra_user' },\n additionalPro: { id: 'price_1KJmzNLFzcsAA7x695wsj6rA', price: 10, usageType: 'metered', type: 'extra_user' },\n additionalSeller: { id: 'price_1KJmzNLFzcsAA7x6gF62MX41', price: 2, usageType: 'metered', type: 'extra_user' },\n },\n },\n standard: {\n id: 'prod_HsAwETfIUblsAT',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1HIQaILFzcsAA7x6NVk3cJu1', price: 69, usageType: 'licensed', type: 'base' },\n },\n },\n plus: {\n id: 'prod_HsB2YJPEZ9H98c',\n tax_rates: ['txr_1HIMA8LFzcsAA7x61nsqfrYU'],\n tariffs: {\n base: { id: 'price_1HIQg0LFzcsAA7x6X6lfFUdv', price: 159, usageType: 'licensed', type: 'base' },\n },\n },\n // test_1: {\n // id: 'prod_L2ZqDUzF0HFuFN',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMUgwLFzcsAA7x6c3wk0Buy', price: 50, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMUgwLFzcsAA7x6X8qYBxls', price: 10, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMUgwLFzcsAA7x6fyOLh2gM', price: 8, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMUgwLFzcsAA7x6eB6Oevw2', price: 6, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMUgwLFzcsAA7x6s9WBpxTS', price: 4, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_2: {\n // id: 'prod_L2xmEk7gqqRJtS',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrqrLFzcsAA7x62Ag7xwjU', price: 100, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMrqrLFzcsAA7x6cu3it43A', price: 20, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMrqrLFzcsAA7x6eNCDb3D6', price: 16, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMrqrLFzcsAA7x6wRuDxyyN', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMrqsLFzcsAA7x61NRR9gne', price: 8, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n // test_3: {\n // id: 'prod_L2xnCHGi6QNgX8',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMrs0LFzcsAA7x6p2tkW6lu', price: 80, usageType: 'licensed', type: 'base' },\n // },\n // },\n // test_4: {\n // id: 'prod_L2yWF4ssugw8Ln',\n // tax_rates: ['txr_1HPXZVLFzcsAA7x6w0zpHu01'],\n // tariffs: {\n // base: { id: 'price_1KMsZFLFzcsAA7x6qVbCQpuN', price: 65, usageType: 'licensed', type: 'base' },\n // additionalAdmin: { id: 'price_1KMsZFLFzcsAA7x6EjaDfica', price: 15, usageType: 'metered', type: 'extra_user' },\n // additionalAgent: { id: 'price_1KMsZFLFzcsAA7x6T1FI1WF4', price: 12, usageType: 'metered', type: 'extra_user' },\n // additionalPro: { id: 'price_1KMsZFLFzcsAA7x6L6I0M1ND', price: 9, usageType: 'metered', type: 'extra_user' },\n // additionalSeller: { id: 'price_1KMsZFLFzcsAA7x6G5GXzPeW', price: 6, usageType: 'metered', type: 'extra_user' },\n // },\n // },\n};\n\n/**\n *\n * @param envName\n */\nexport default (envName: DeploymentEnvironment): ProductReference => {\n if (envName === 'production') return createProducts(production);\n\n return createProducts(testing);\n};\n","import { SubscriptionSettings } from './plans';\n\nexport enum ROLE {\n CLIENT = 'client',\n SELLER = 'seller',\n PRO = 'pro',\n AGENT = 'agent',\n ADMIN = 'admin',\n OWNER = 'owner',\n SUPERADMIN = 'superadmin',\n}\n\nexport interface AuthToken {\n [key: string]: any;\n}\n\nexport type ResourceType =\n | Enterprise\n | Admin\n | Owner\n | User\n | Agent\n | Pro\n | Seller\n | Client\n | Project\n | Media\n | Document\n | Event\n | Plan\n | Note\n | VisitReport\n | Devis\n | Estimation\n | Bill\n | BillIssued\n | BillReceived\n | Payment\n | UserNotification\n | ReceptionVoucher\n | Provider\n | Category\n | OperationCatalog\n | Nomenclature\n | Operation\n | OperationsGroup\n | EnterpriseResourse\n | QuotesConfiguration\n | Configuration\n | Log\n | SystemVersion;\n\n/**\n * Add timestampable behavior to any resource\n */\nexport interface Resource {\n /**\n * The internal ID of this resource\n */\n id?: string;\n\n /**\n * User uid or object of item creator\n */\n owner?: string | User;\n\n /**\n * owner data\n */\n ownerData?: {\n /**\n * Owner id\n */\n id: string;\n\n /**\n * User id\n */\n userId: string;\n\n /**\n * Owner's display name\n */\n displayName: string;\n\n /**\n * Owner's email\n */\n email: string;\n\n /**\n * Owner's phone numbers\n */\n phone: Phone[];\n\n /**\n * Owner's avatar\n */\n photo: File | null;\n\n /**\n * Owner's role\n */\n role: ROLE | null;\n };\n\n /**\n * When this resource has been created\n */\n createdAt?: number;\n\n /**\n * User uid or object who has made the last update\n */\n updatedBy?: string | User;\n\n /**\n * Last update\n */\n updatedAt?: number;\n\n /**\n * Algolia search ID\n */\n objectID?: string;\n\n /**\n * Type of resource\n */\n kind?: ResourceType;\n\n /**\n *\n */\n scope?: string;\n}\n\n/**\n * The enterprise model\n */\nexport interface Enterprise extends Resource {\n /**\n * The cloudinary logo of the enterprise\n */\n logo?: File | null;\n\n /**\n * Enterprise category, mostly for analytics\n */\n category?: string;\n\n /**\n * The enterprise commercial name\n */\n commercialName: string;\n\n /**\n * Display the company name next to the logo\n */\n displayName: boolean;\n\n /** The enterprise commercial status */\n commercialStatus: CommercialStatusEnum;\n\n /**\n * The enterprise siren code\n */\n siren?: string;\n\n /**\n * The enterprise siret code\n */\n siret?: string;\n\n /**\n * The contact concerned\n */\n contact?: string;\n\n /**\n * The contact concerned\n */\n contactEmail?: string;\n\n /**\n * The activity code\n */\n activityCode?: string;\n\n /**\n * The enterprise address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The enterprise phone (mobile, work, landline, other)\n */\n phone?: {\n [key: string]: string;\n };\n\n /**\n * The contact concerned\n */\n website?: string;\n\n /**\n * Special key to load data from algolia based on context\n */\n searchKey?: string;\n\n /**\n * Current subscription status\n */\n status:\n | 'incomplete'\n | 'incomplete_expired'\n | 'trialing'\n | 'active'\n | 'past_due'\n | 'canceled'\n | 'unpaid';\n\n /**\n * Kind of forfait\n */\n product?: 'standard' | 'plus' | 'premium';\n\n /**\n *\n */\n totalPrice?: Price;\n\n /**\n * Stripe Plans subscribed\n */\n plans: Array<{\n /**\n * Name of the plan\n */\n name: string;\n\n /**\n * id of plan\n */\n plan: string;\n\n /**\n * quantity of units\n */\n quantity: number;\n\n /**\n * is one of the main plans\n */\n main?: boolean;\n }>;\n\n /**\n * Stripe payment ID\n */\n customerId?: string;\n\n /**\n * Default payment method ID\n */\n default_payment_method?: string;\n\n /**\n * Number of admin users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional admin user\n */\n totalAdminUsers: number;\n\n /**\n * Number of agent users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional agent user\n */\n totalAgentUsers: number;\n\n /**\n * Number of pro users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional pro user\n */\n totalProUsers: number;\n\n /**\n * Number of seller users contained within the subscription. This number will be used to calculate\n * the amount to pay for additional seller user\n */\n totalSellerUsers: number;\n\n /**\n * Account mode\n */\n mode: 'full' | 'test';\n\n /**\n *\n */\n additionalUserPriceId?: string;\n\n /**\n *\n */\n additionalAdminPlanId?: string | null;\n\n /**\n *\n */\n additionalAgentPlanId?: string | null;\n\n /**\n *\n */\n additionalProPlanId?: string | null;\n\n /**\n *\n */\n additionalSellerPlanId?: string | null;\n\n /**\n * Subscription on stripe\n */\n subscription?: {\n /**\n * Current billing period start date\n */\n currentPeriodStart: number;\n\n /**\n * Current billing period end date\n */\n currentPeriodEnd: number;\n\n /**\n * Subscription id on stripe\n */\n id: string;\n\n /**\n * state of subscription\n */\n status:\n | 'incomplete'\n | 'incomplete_expired'\n | 'trialing'\n | 'active'\n | 'past_due'\n | 'canceled'\n | 'unpaid';\n\n /**\n * Coupon id applied to subscription\n */\n coupon?: string;\n\n /**\n * Last invoice id on stripe\n */\n latestInvoice?: string;\n };\n\n insurance?: string;\n\n /**\n * Num de tva intracommunitaire\n */\n tvaNumber?: string;\n\n /**\n *\n */\n bankInfo?: BankDetails[];\n\n notificationEstimation?: string[];\n\n devisDocConfig: {\n color: { label: DevisDocColorEnum; value: string }[];\n sections: {\n [key: string]: boolean;\n };\n presentation: string;\n devisValidity: { duration: number; typeOfDuration: DevisDocDurationEnum };\n };\n\n /**\n * Computed subscription settings\n */\n config?: SubscriptionSettings;\n\n /**\n * Insurer contact details, used in bills PDF data\n */\n insuranceContact?: string;\n\n /**\n * Geographical area covered, used in bills PDF data\n */\n areaCovered?: string;\n\n /**\n * Enterprise currency\n */\n currency?: string;\n\n /**\n * Statuses workflow between devis status and project status\n */\n statusesWorkflow: StatusWorkflow[];\n\n contactEmails: Array<{\n /**\n * The contact mail\n */\n role: string;\n /**\n * The contact name\n */\n email: string;\n }>;\n\n certificates: Certificate[];\n\n /**\n * Used to enabled or disable plugins on the system\n */\n pluginsConfig?: {\n visitReport?: boolean;\n quoteAdvanced?: boolean;\n quoteBasicCreation?: boolean;\n quoteAdvancedWithNewDesign?: boolean;\n exportLogs?: boolean;\n whatsapp?: boolean;\n marketplace?: boolean;\n };\n\n /**\n * Used to save the last reference created for the two types of bills\n */\n billsReferences?: {\n bill: number;\n creditNote: number;\n };\n\n /**\n * Custom Id the admin chose for prefixing projects ids\n */\n prefixReference?: string | null;\n\n /**\n * Providers configuration\n */\n providersConfiguration?: ProvidersConfiguration;\n\n /**\n * Professional evalution config\n */\n proEvaluationConfig?: ProEvaluationItem[];\n\n /**\n * All marketplace's properties at enterprise level\n */\n marketplace?: EnterpriseMarketplace;\n}\n\nexport interface ProEvaluationItem {\n title: string;\n order: number;\n percent: number;\n description?: string;\n}\n\nexport type EnterpriseMarketplace = {\n maxCandidatesPerProject: number;\n maxApplicationsAtSameTime: number;\n};\n\nexport type Certificate = { name: string; number: number };\n\nexport interface StatusWorkflow {\n /**\n * The devis status\n */\n devis: DevisStatusEnum;\n /**\n * The project id\n */\n project: string;\n}\n\nexport interface BankDetails {\n /**\n * bank details selected by default\n */\n default: boolean;\n\n /**\n * Title identifier\n */\n title: string;\n\n /**\n * IBAN identifier\n */\n iban: string;\n\n /**\n * BIC identifier\n */\n bic: string;\n\n /**\n * Account owner name\n */\n holder: string;\n}\n\n/**\n * Represents an user\n */\nexport interface User extends Resource {\n /**\n * The user email\n */\n email: string;\n\n /**\n * Each profile represents a company on which this user is involved\n */\n readonly profiles: string[];\n\n /**\n * This user is superadmin??\n */\n readonly superadmin?: boolean;\n\n /**\n * Current selected enterprise profile\n */\n currentProfile?: string;\n\n /**\n * This is used for notifications. Each token correspond to an user device\n */\n notificationTokens?: [];\n\n /**\n * The user name\n */\n displayName: string;\n\n /**\n * Last time this user was updated. Util for migrations, and caching\n */\n _lastUpdate?: number;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * User's language\n */\n lang?: string;\n\n /**\n * Mark this user as disabled to disable the account on the app.\n */\n disabled?: boolean;\n\n /**\n * The current profile expanded\n */\n profile: Profile;\n\n /**\n * Atlassian account ID\n * This ID is necessary if user wants to create a service desk request\n */\n atlassianAccountID?: string;\n}\n\nexport interface Profile extends Resource {\n /**\n *\n */\n readonly enterprise: string;\n\n /**\n * This user is an external consultant (independent worker subcontracted), or is a company worker in the payroll\n *\n * Is important to\n */\n readonly is: 'internal' | 'external';\n\n /**\n * The user id\n */\n userId: string;\n\n /**\n * The user email\n */\n email: string;\n\n /**\n *\n */\n alias?: string;\n\n /**\n * The user name\n */\n displayName: string;\n\n /**\n * first name of the user\n */\n firstName?: string;\n\n /**\n * last name of the user\n */\n lastName?: string;\n\n /**\n * The cloudinary photo of the user\n */\n photo?: File;\n\n /**\n * The user address\n */\n address?: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The user phones\n */\n phone?: Phone[];\n\n /**\n * Job title\n */\n jobTitle?: string;\n\n /**\n * Projects counter\n */\n projects?: number;\n\n /**\n * Key used to search in algolia\n */\n readonly searchKey?: string;\n\n /**\n * The role played in this company\n */\n readonly role: ROLE;\n\n /**\n *\n */\n viewMode?: ROLE;\n\n /**\n *\n */\n lang?: string;\n\n /**\n * Agents only\n * contains default values for prefilling quotes\n */\n quotesConfiguration?: QuotesConfiguration;\n\n /**\n *\n */\n status: ProfileStatus;\n\n /**\n *\n */\n job?: string;\n\n /**\n * this is an array of areas where the user works\n */\n regions?: string[];\n\n /**\n * entity name where the user actually works\n */\n entity?: string;\n\n /**\n * allow profile to receive and send WhatsApp messages\n */\n isUsingWhatsApp?: boolean;\n}\n\nexport interface UserProfilePreview {\n /**\n * Enterprise name\n */\n name: string;\n\n /**\n * Number of projects on this profile\n */\n projects?: number;\n\n /**\n * Which role is performed in this enterprise\n */\n role: string;\n}\n\n/**\n * Agent User (also known as supervisor)\n */\nexport interface Agent extends Profile {\n /**\n * role\n */\n role: ROLE.AGENT;\n\n /**\n * indicates if is a team leader\n */\n isLeader: boolean;\n\n /**\n * list of the agent's specialities\n */\n specialities?: string[];\n\n /**\n * list of the agent's type of offers (ex: call for tenders, ...)\n */\n offerType?: string[];\n\n /**\n * list of the agent's intervention area\n */\n area?: string[];\n\n /**\n * identifier of the team leader to which the agent belongs (if he is not a leader)\n */\n leader?: string;\n}\n\n/**\n * Pro User\n */\nexport interface Pro extends Profile {\n /**\n * role\n */\n role: ROLE.PRO;\n\n /** The professional specialties */\n specialities: string[];\n\n /** The professional competencies */\n skills: string[];\n\n /** The professional address for deliveries */\n deliveryAddress: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /** The cloudinary logo of the professional company */\n logo?: File;\n\n /** The commercial name of the professional */\n commercialName?: string;\n\n /** The commercial status of the professional */\n commercialStatus?: string;\n\n /** The manager of the professional company */\n manager?: string;\n\n /** The siren code of the professional company */\n siren?: string;\n\n /** The siret code of the professional company */\n siret?: string;\n\n /**\n * The documents from this pro\n */\n documents?: (Document | string)[];\n\n /**\n * An array of additional emails that can be provided in order to contact pro\n */\n additionalEmails?: ExtraEmail[];\n\n // DOCUMENTS\n enterpriseIdentity?: ProDocument;\n socialRegime?: ProDocument;\n foreignWorkers?: ProDocument;\n professionalCivilLiabilityInsurance?: ProDocument;\n decennialInsurance?: ProDocument;\n certificateOfTaxRegularity?: ProDocument;\n workAccidentCertificate?: ProDocument;\n paidVacationAndBadWeatherUnemployment?: ProDocument;\n buildingCertification?: ProDocument;\n publicMarketSwornStatement?: ProDocument;\n supplyRelationConvention?: ProDocument;\n}\n\nexport interface ProDocument {\n file?: File;\n expiryDate: number;\n emailSend?: ProDocumentEmailSend;\n}\n\nexport enum ProDocumentEmailSend {\n WARNING = 'WARNING',\n SUSPENDED = 'SUSPENDED',\n}\n\n/**\n * Seller user\n */\nexport interface Seller extends Profile {\n /**\n * role\n */\n role: ROLE.SELLER;\n\n /**\n * the provider related\n */\n provider: string;\n\n /**\n * indicates if is a team leader\n */\n isLeader: boolean;\n\n /**\n * identifier of the team leader to which the agent belongs (if he is not a leader)\n */\n leader?: string;\n\n /**\n * sector name where the user actually works\n */\n district?: string[];\n}\n\n/**\n * Client user\n */\nexport interface Client extends Profile {\n /**\n * From where the client has met us?\n */\n origin?: string;\n\n /**\n * The siret code of the client company\n */\n siret?: string;\n\n /**\n * Num de tva intracommunitaire\n */\n tvaNumber?: string;\n\n /**\n * An array of additional emails that can be provided in order to contact client\n */\n additionalEmails?: ExtraEmail[];\n\n role: ROLE.CLIENT;\n}\n\nexport interface Admin extends Profile {\n /**\n * Role\n */\n role: ROLE.ADMIN;\n}\n\nexport interface Owner extends Profile {\n /**\n * Stripe subscription ID\n */\n subscriptionId: string;\n\n /**\n * Role\n */\n role: ROLE.OWNER;\n}\n\nexport interface SuperAdmin extends Profile {\n role: ROLE.SUPERADMIN;\n}\n\nexport interface Commissions {\n /**\n * Percentage corresponding to the company\n */\n enterprise: number;\n /**\n * Percentage corresponding to the pro\n */\n pro: number;\n /**\n * Percentage corresponding to the provider\n */\n provider: number;\n /**\n * Percentage corresponding to the client\n */\n client?: number;\n}\n\n/**\n * Represents an provider\n */\nexport interface Provider extends Resource {\n /**\n * The provider name\n */\n name: string;\n\n /**\n * The provider CGV used in devis PDF\n */\n cgv?: string;\n\n /**\n * The cloudinary logo of the provider\n */\n logo?: File;\n\n /**\n * The provider address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The provider phone\n */\n phone?: Phone[];\n\n /**\n * The distribution of transaction prices\n */\n commission: Commissions;\n\n /**\n * The contact information provider\n */\n contact?: {\n /**\n * The contact mail\n */\n email: string;\n /**\n * The contact name\n */\n name: string;\n };\n\n /**\n * The provider siret code\n */\n siret?: string;\n\n /**\n * The TVA for project operations of the provider\n */\n tva: number;\n\n /**\n * The provider website\n */\n website?: string;\n\n /*\n * Quantity of projects with this provider\n */\n projects?: number;\n\n /**\n * If true, provider is the default choice for \"devis contracting entity\"\n */\n defaultEntity: boolean;\n\n /**\n * Category of the provider\n */\n category?: string;\n\n /**\n * Subcategory of the provider (depending of the category)\n */\n subcategory?: string;\n\n /**\n * Where the provider comes from\n */\n origin?: string;\n\n /**\n * Indicates whether the provider is active or inactive\n */\n status: boolean;\n}\n\n/**\n * Represents the projects status\n */\nexport interface Status extends Resource {\n /**\n * The status name\n */\n name: string;\n\n /**\n * The status by default used by all projects\n */\n default?: boolean;\n\n /**\n * The status color\n */\n color?: string;\n\n /**\n * The status is selected for dashboard statistics\n */\n forDashboard?: boolean;\n\n /**\n * Used to order status list\n */\n order: number;\n\n /**\n * To know if status comes from system-status Algolia index and avoid delete or modify it\n */\n system?: boolean;\n\n /**\n * To know if status is fix in the position\n */\n locked?: boolean;\n\n /**\n * Identifier to relate the status to its correspondent in system status algolia index\n */\n idReference?: string;\n\n /**\n * To set the visibility for the agent\n */\n visibleBy?: ROLE[];\n}\n\n/**\n * The resource enterprise document and enterprise media\n */\nexport interface EnterpriseResourse extends Resource {\n /**\n * The resource resource enterprise document and enterprise media name\n */\n name: string;\n\n /**\n * The cloudinary resource resource enterprise document and enterprise media information\n */\n file: File;\n\n /**\n * Used in enterprise document and enterprise media to assign folder\n */\n category: string;\n}\n\n/**\n * Model project\n */\nexport interface Project extends Resource {\n name: string;\n image?: File;\n category: string;\n surface: number;\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n startDate?: number;\n endDate?: number;\n description: string;\n access?: string;\n status: string | Status;\n provider?: string | Provider;\n\n /**\n * Is updated when devis approved operations status are changed in pogression page\n */\n progress?: number;\n\n /**\n * For whom this project is?\n */\n client?: string | Client;\n\n /**\n * Who is the worker on this project\n */\n pro?: string | Pro;\n\n /**\n * The agents in charge of this project\n */\n agents?: (string | Agent)[];\n\n /**\n * The main agent in charge of this project\n */\n agentReference?: string;\n\n /**\n * The main agent in charge of this project\n */\n agentManager?: string;\n\n /**\n * The sellers of this project\n */\n sellers?: (string | Seller)[];\n\n /**\n * The main seller of this project\n */\n sellerReference?: string;\n\n /**\n * The main seller of this project\n */\n sellerManager?: string;\n\n /**\n * Calculated price for this project (Accepted price: price of approved devis)\n */\n price?: Price;\n\n /**\n * Calculated prospected price for this project (Prospected price: price of sent devis)\n */\n priceProspected?: Price;\n\n /**\n * Calculated rejected price for this project (Rejected price: price of refused and abandoned devis)\n */\n priceRejected?: Price;\n\n /**\n * The id of devis approved\n */\n devisApproved?: string[];\n\n /**\n * Used when a bill is approved\n * if is true project can't be removed\n */\n blocked?: boolean;\n\n /**\n * External reference used for Hubspot or any external platform\n */\n externalReference?: string;\n\n /**\n * internalReference is an auto-increment number used as a user-friendly ID\n */\n internalReference: string;\n\n /**\n * Number of projects inside the project's enterprise\n */\n projectIndex: number;\n\n /************************** MARKETPLACE **************************/\n /**\n * Used to display the project inside marketplace\n */\n marketplaceStatus?: MarketplaceStatus;\n /**\n * List of current users who applies the project\n */\n candidates?: string[];\n /**\n * Determines how many professionals can apply for the project\n */\n numberOfCandidates?: number;\n /**\n * creater the relation with his work order that generate this project\n */\n workOrderId?: string;\n /**\n * Save last time project was published in marketplace\n */\n marketplacePublishDate?: number;\n /**\n * Save how many times this projects has been publihsed on the marketplace\n */\n marketplaceRepublishCount?: number;\n /**\n * Save the date when the professional is selected\n */\n marketplaceAssignmentDate?: number;\n /**\n * ICP Date (only used with marketplace projects)\n */\n icpDate?: number;\n}\n\nexport enum MarketplaceStatus {\n OPEN = 'OPEN',\n UNDER_REVIEW = 'UNDER_REVIEW',\n CLOSE = 'CLOSE',\n}\n\n/**\n * Represents a project note\n */\nexport interface Note extends Resource {\n /**\n * The note title\n */\n title: string;\n\n // /**\n // * The note type\n // */\n // type: string;\n\n /**\n * The note text\n */\n text: string;\n\n /**\n * The note images array\n */\n images: File[];\n}\n\n/**\n * Represents a project visit report\n */\nexport interface VisitReport extends Resource {\n visitDate: number;\n postalCode: string;\n surface: number;\n tenants: number;\n incomeLevel: string;\n yearBuilt: number;\n floors: number;\n ceilingHeight: number;\n terracedHouse: boolean;\n windowType: string[];\n windowTypeDescription?: string;\n murType: string;\n indoorTemp: number;\n boilerCondensation: string;\n boilerBrand: string;\n boilerRef: string;\n boilerWeight: number;\n boilerDimensions: string;\n boilerDiameter: string;\n boilerFiles: File[];\n installDifficulty: string;\n installInfoExtra: string;\n wallDescription: string;\n wallFiles: File[];\n doorHeight: number;\n doorWidth: number;\n accessibilityDescription: string;\n accessibilityFiles: File[];\n electricSubscription: string;\n electricPower: string;\n electricPanelPlace: boolean;\n electricFiles: File[];\n distanceUnitIntAndPanel: number;\n unitIntLocation: string;\n unitIntFiles: File[];\n distanceUiUe: number;\n unitOutsideLocation: string;\n unitOutsideFiles: File[];\n domesticHWTDescription: string;\n domesticHWTFiles: File[];\n numberOfPeople: number;\n floorDrain: boolean;\n drainageDiameter: string;\n hotWater: boolean;\n emitterType: string;\n radiatorType: string;\n radiatorFiles: File[];\n hotWaterLoop: boolean;\n nearbyDrainDescription: string;\n nearbyDrainFiles: File[];\n heatingNetworkType: string[];\n heatingNetworkDiameter: string;\n heatingNetworkFiles: File[];\n networkEFAndDHWType: string[];\n networkEFAndDHWDiameter: string;\n networkEFAndDHWFiles: File[];\n comments: string;\n additionalFiles: File[];\n\n devisType: string;\n devisTypeDescription?: string;\n\n estimatedResult: {\n power: number;\n m2Power: number;\n devis: string;\n hotTankSize: number;\n equipment: string;\n equipmentSize: string;\n priceEstimation: number;\n priceProposal: number;\n helps: { name: string; value: number }[];\n priceCoefficient: number;\n };\n customResult?: {\n power: number;\n m2Power: number;\n devis: string;\n hotTankSize: number;\n equipment: string;\n equipmentSize: string;\n priceEstimation: number;\n priceProposal: number;\n helps: { name: string; value: number }[];\n priceCoefficient: number;\n };\n title: string;\n status: VisitReportStatus;\n}\n\nexport enum VisitReportStatus {\n IN_PROGRESS = 'IN_PROGRESS',\n VALID = 'VALID',\n}\n\nexport interface Media extends Resource {\n /**\n * When this resource has been created but onlu the date (not time)\n */\n createdAt?: number;\n /**\n * The media name\n */\n name: string;\n\n /**\n * The media slassification\n */\n tags?: string[];\n\n /**\n * The cloudinary media information\n */\n file: File;\n\n /**\n * The media elements\n */\n elements?: any[];\n}\n\n/**\n * The resource document\n */\nexport interface Document extends Resource {\n /**\n * The document title\n */\n title: string;\n\n /**\n * The document title\n */\n type: DocumentsTypeEnum;\n\n /**\n * Roles that can see the document (pro and seller only)\n */\n visibleBy: ROLE[];\n\n /**\n * The cloudinary media information\n */\n file: File;\n\n // source?: string,\n // fileId?: string,\n // pages?: number,\n}\n\n/**\n * Describe project event\n */\nexport interface Event extends Resource {\n /**\n * When the event start\n */\n start: number;\n\n /**\n * When the event ends\n */\n end?: number;\n\n /**\n * The event title\n */\n title: string;\n\n /**\n * The event address\n */\n address: string;\n\n /**\n * The address geolocation\n */\n location?: GeoLocation;\n\n /**\n * The event description\n */\n description: string;\n\n /**\n * The event type\n */\n type: EventsTypeEnum;\n\n /**\n * The event color\n */\n color?: string;\n\n /**\n * The users responsible for the event\n */\n responsibles?: string[];\n}\n\nexport interface PlanPage {\n fileId: string;\n source: string;\n id: string;\n}\n\n/**\n * Describe project plan\n */\nexport interface Plan extends Resource {\n name: string;\n description: string;\n file: File;\n files: File[];\n pages: PlanPage[];\n elements: any[];\n validation?: {\n userName: string;\n date: number;\n } | null;\n archive?: {\n userName: string;\n date: number;\n } | null;\n updatedByUsers?: any;\n pdf?: File;\n}\n\n/**\n * Represents a material from the company's catalog\n */\nexport interface Material extends Resource {\n /**\n * The material id\n */\n objectID?: string;\n /**\n * The material name\n */\n name: string;\n\n /**\n * Price without discount\n */\n basePrice: number;\n\n /**\n * The material unit price with discount\n */\n unitPrice: number;\n\n /**\n * The material unit\n */\n unit: string;\n\n /**\n * The material image\n */\n image?: File;\n\n /**\n * Used to know from which provider comes the material\n */\n provider: string;\n\n /**\n * ID from external API\n */\n externalId?: any;\n\n /**\n * Used to order materials inside enterprise/configuration/operations view\n */\n order?: number;\n\n /**\n * by default this value will be null, at time to use this operation\n * in devis will get tva from operation\n */\n tva?: number | null;\n\n /**\n * Used in materials page to assign categories\n */\n category?: string;\n\n /**\n * Used to restrict modification in devis page\n */\n blockPrice?: boolean;\n\n /**\n * Used to restrict modification in devis page\n */\n blockTVA?: boolean;\n\n /**\n * Custom reference defined by user\n */\n reference?: string;\n\n margin?: {\n id: string;\n value: number;\n label: string;\n };\n\n supplier?: {\n id: string;\n label: string;\n };\n\n complement?: string;\n\n /**\n * Define if should be used to calculate devis prix\n */\n include?: boolean;\n\n /**\n * Define if material quantity should change when operation change\n */\n unbindQuantity?: boolean;\n}\n\nexport interface DevisMaterial extends Material {\n /**\n * Used to identify inside devis\n */\n id: string;\n\n /**\n * Used to now wich operations it below inside Devis\n */\n optId: string;\n\n /**\n * Used to know how much of this material is added to the operation\n */\n quantity: number;\n\n /**\n * Used to save the final price of material using quantity and if comes from catalog or not\n */\n price?: number;\n\n /**\n * Used to save image format in base64 code\n */\n base64?: string;\n\n /*** DATA USED FOR DELIVERS ****/\n /**\n *\n */\n responsible?: ItemResponsible;\n /**\n *\n */\n orderStatus?: OrderMaterialStatus;\n /**\n *\n */\n availabilityDate?: number;\n /**\n *\n */\n status?: 'TODO' | 'VALID' | 'ORDERED' | 'LATE' | 'RECEIVED' | 'ONSITE';\n /**\n *\n */\n code?: string;\n\n /**\n * used in orders to know where the materials comes from if exist more than one devis approved\n */\n devisId?: string;\n\n tva?: number;\n\n /**\n * Check if this material is included in devis to use his price and display in pdf\n */\n include?: boolean;\n /**\n * Use to calculate the quantity\n */\n loss?: number;\n\n rounded?: boolean;\n\n fixed?: boolean;\n\n quantityConfig?: number;\n\n commissions?: Commissions;\n\n pricePro?: number;\n\n /**\n * Quantity after apply loss and rounded\n */\n quantityWithLoss?: number;\n}\n\nexport interface Order extends Resource {\n /**\n * Used to identify inside devis\n */\n materials: DevisMaterial[];\n /**\n *\n */\n devisName: string;\n /**\n * used in orders to know where the materials comes from if exist more than one devis approved\n */\n devisId: string;\n pdf?: File;\n}\n\nexport interface PieceSurfaces {\n floorOrCeiling?: number;\n linearWall?: number;\n openingArea?: number;\n ceilingHeight?: number;\n}\n\nexport interface DevisPiece extends Resource {\n // use only in devis complex\n id?: string;\n // use only in devis complex\n indentifier?: string;\n\n /** Piece, example: bathroom, kitchen */\n name: string;\n\n /** Used when the piece is a lot */\n color?: string;\n\n /**\n * Display operations open or compresed\n */\n optsShow?: boolean;\n\n /**\n * Prices, used to save all prices of operations and materials inside it\n */\n prices?: Price;\n\n /**\n * Only used when devis format is PIECE\n */\n surfaces?: PieceSurfaces;\n\n commissions?: Commissions;\n}\n\nexport interface DevisOperationPiece {\n name: string;\n quantity: number;\n id: string;\n}\n\n/**\n *\n */\nexport interface DevisOperation extends Resource {\n /**\n * ID\n */\n id: string;\n\n /**\n * The operation name\n */\n name: string;\n\n /**\n * Operation description\n */\n description?: string;\n\n /**\n * Operation price\n */\n price: number;\n\n /**\n * Piece, example: bathroom, kitchen\n */\n piece: string;\n\n /**\n * Lot from nomenclature\n */\n lot?: {\n label: string;\n color: string;\n };\n\n /**\n * Surface old devis and operations\n */\n surface?: string;\n\n /**\n * Unit, example: m2, cm3\n */\n unit: string;\n\n /**\n * TVA, example: 20, 10\n */\n tva: number;\n\n /**\n * Order, example: 1, 2, 17\n */\n order: number;\n\n /**\n * Professional price\n */\n proPrice: number;\n\n /**\n * Unit price\n */\n unitPrice: number;\n\n /**\n * Quantity of units, used to calculate the price\n */\n quantity: number;\n\n /**\n * Status\n */\n status: OperationStatusEnum;\n\n /**\n * Prices, used to save all prices related with the operation\n */\n prices?: Price;\n\n pieces?: { name: string; quantity: number; id: string }[];\n\n reserves?: string;\n\n localization?: string;\n\n quantityConfig?: OperationQuantityEnum;\n\n blockPrice?: boolean;\n\n blockTVA?: boolean;\n\n adjustments?: Array<OperationAdjustment>;\n\n adjustmentComplement?: string;\n\n adjustmentsStatus?: boolean;\n\n commissions?: Commissions;\n\n responsible?: ItemResponsible;\n\n barcode?: BarCode;\n\n basePrice?: number;\n\n /**\n * Used to define if unit price should be calculated from pro price or\n * if pro price should be calculated from unit price\n */\n unitPriceFromPro?: boolean;\n}\n\n/**\n *\n */\nexport interface Devis extends Resource {\n /**\n * The operation name\n */\n name: string;\n\n /**\n * Status\n */\n status: DevisStatusEnum;\n\n /**\n * Devis prices\n */\n price?: Price;\n\n /**\n * List of pieces\n */\n pieces?: DevisPiece[];\n\n /**\n * List of operations\n */\n operations?: DevisOperation[];\n\n /**\n * Lis of Materials icluded in each operation\n */\n materials?: DevisMaterial[];\n\n /**\n * Comments\n */\n comments?: string;\n\n /**\n * Approved date\n */\n dateApproved?: number;\n\n /**\n * Date when email was sent to the project client\n */\n dateSent?: number;\n\n /**\n * Email status from Sengrid\n */\n emailStatus?:\n | 'processed'\n | 'dropped'\n | 'deferred'\n | 'delivered'\n | 'open'\n | 'spamreport';\n\n /**\n * Parent, devis base used to create this one\n */\n parent?: string;\n\n /**\n * List of materials provider, by default same as the enterprise in active status\n * used to filter materials in operations from catalog and to display the list providers in addMaterial form\n */\n materialsProvider?: Array<string>;\n\n /**\n * Information to save devis PDF\n */\n pdf?: {\n [DevisPdfType.ENTERPRISE]?: File;\n [DevisPdfType.PROFESSIONAL]?: File;\n [DevisPdfType.PROVIDER]?: File;\n };\n\n /**\n * Type of devis\n */\n type?: DevisTypeEnum;\n\n /**\n * Version of devis\n */\n version?: number;\n\n /**\n * Define which type of pdf will be created together with pro\n */\n contractingEntity?: DevisContractingEntity;\n\n /**\n * Save the information of devis bill after apply any changes\n */\n accounting?: {\n percent: number;\n paid: number;\n type?: BillIssuedType;\n date?: Date;\n };\n /**\n * Used on devis pdf and accounting\n */\n reference?: string;\n\n /**\n * Used to copy commission values and TVA from provider when devis is created\n * whit this is possible to change provider config values and don't affect devis already created\n */\n providerData?: {\n tva: number;\n pro: number;\n provider: number;\n enterprise: number;\n };\n\n /**\n * Save percent and its value assigned to each entity on devis after apply modifications\n * example: pro price (in operations) can by changed by the user and will affect his original percent (saved in providerData)\n * used on accounting to display devis price block and dashboards\n */\n commissions?: {\n [key: string]: { percent: number; value: number };\n };\n\n /**\n * BankDetails chosen by default in the enterprise settings\n */\n bankInfo?: BankDetails;\n\n /**\n * Currency chosen by default in the enterprise settings\n */\n currency?: string;\n\n /**\n * Payment planning (temporarily saved in the devis collection in Firestore)\n */\n paymentPlanning?: { description: string; percent: number; date?: Date }[];\n\n /**\n * Allow user to add some additionals informations into the devis pdf depending on the section choose\n */\n docMetadata?: DocMetadataItem[];\n\n /************************************ V2 ************************************/\n operationsCatalog?: string;\n\n sector?: {\n label: string;\n value: number;\n };\n\n history?: DevisHistoryItem[];\n\n systemVersion?: number;\n\n format?: DevisFormatEnum;\n\n /**\n * Define if devis can be edited or not\n */\n blocked?: boolean;\n\n /**\n * Defined from where is coming this devis, in markeplace case to know if is created from a devisCandidate\n */\n origin?: DevisOriginEnum;\n}\n\nexport enum DevisOriginEnum {\n MARKETPLACE = 'MARKETPLACE',\n DUPLICATE = 'DUPLICATE',\n TEMPLATE = 'TEMPLATE',\n}\n\nexport interface DocMetadataItem {\n section?: DevisPdfSectionEnum | string;\n title: string;\n value: string | number;\n}\n\nexport enum DevisCommissionsEntity {\n pro = 'pro',\n provider = 'provider',\n enterprise = 'enterprise',\n}\n\nexport enum DevisHistoryType {\n CHANGE_STATUS = 'CHANGE_STATUS',\n SENT_TO_CLIENT = 'SENT_TO_CLIENT',\n EMAIL_EVENT = 'EMAIL_EVENT',\n NEW_VERSION = 'NEW_VERSION',\n}\n\nexport interface DevisHistoryItem {\n date: number;\n user?: {\n id: string;\n name: string;\n email: string;\n role: ROLE;\n photoUrl: string;\n };\n type: DevisHistoryType;\n data: any;\n}\n\nexport enum DevisDocSectionEnum {\n PRESENTATION = 'PRESENTATION',\n RESUME = 'RESUME',\n MATERIAL_IMAGE = 'MATERIAL_IMAGE',\n MATERIAL_FIXED = 'MATERIAL_FIXED',\n MATERIAL_VARIABLE = 'MATERIAL_VARIABLE',\n RENO_HELP = 'RENO_HELP',\n COMMENTS = 'COMMENTS',\n PAYMENTS_PLANNING = 'PAYMENTS_PLANNING',\n BANK_DETAILS = 'BANK_DETAILS',\n SIGNATURE_AREA = 'SIGNATURE_AREA',\n CGV = 'CGV',\n CERFA_CERTIFICATE = 'CERFA_CERTIFICATE',\n}\n\nexport enum DevisDocColorEnum {\n PRIMARY = 'PRIMARY',\n SECONDARY = 'SECONDARY',\n}\n\nexport enum DevisDocDurationEnum {\n DAYS = 'DAYS',\n WEEKS = 'WEEKS',\n MONTHS = 'MONTHS',\n YEARS = 'YEARS',\n}\n\n/**\n *\n */\nexport interface DevisTemplate extends Resource {\n /**\n * The devis name\n */\n name: string;\n\n /**\n * The devis description\n */\n description?: string;\n\n /**\n * Devis prices\n */\n price?: Price;\n\n /**\n * List of pieces\n */\n pieces?: DevisPiece[];\n\n /**\n * List of operations\n */\n operations?: DevisOperation[];\n\n /**\n * Lis of Materials icluded in each operation\n */\n materials?: DevisMaterial[];\n\n /**\n * Comments\n */\n comments?: string;\n\n /**\n * List of materials provider, by default same as the enterprise in active status\n * used to filter materials in operations from catalog and to display the list providers in addMaterial form\n */\n materialsProvider?: Array<string>;\n\n /**\n * Operations catalog assigned to devis\n */\n operationsCatalog: string;\n\n systemVersion?: number;\n\n format?: DevisFormatEnum;\n\n category?: string;\n}\n\n/**\n * Used on the devis payments\n */\nexport type Payment = Resource & {\n date: number;\n devisId: string;\n projectId: string;\n percent: number;\n description?: string;\n};\n\n/**\n * Used on accounting\n */\n\nexport type DownPayment = Payment & {\n devisPrice: number;\n devisTVA: number;\n bill?: {\n id: string;\n date: Date;\n price: number;\n };\n /**\n * This will change to true if any custom bill is created on the devis related with it\n */\n locked?: boolean;\n};\n\nexport type BillElement = {\n id: string;\n dataId: string;\n description: string;\n order: number;\n type: BillElementType;\n quantity: number;\n priceHT: number;\n tva: number;\n discount: number;\n discountType: BillDiscountType;\n totalHT: number;\n totalTTC: number;\n isUpdated: boolean;\n isInvoiced: boolean;\n devisId: string;\n};\n\nexport type EntityData = {\n name: string;\n id?: string;\n address?: string;\n email?: string;\n siret?: string;\n tva?: string;\n};\n\nexport type ReceptionVoucher = Resource & {\n status: ReceptionVoucherStatus;\n title: string;\n files: File[];\n statusComment?: string;\n statusDate?: number;\n};\n\nexport type BillStatusHistoryItem = {\n before: BillIssuedStatus | BillReceivedStatus;\n date: number;\n comment: string;\n user: {\n id: string;\n name: string;\n photo: string;\n role: ROLE;\n };\n};\n\nexport type BillStatusHistory = {\n [key in BillIssuedStatus | BillReceivedStatus]?: BillStatusHistoryItem;\n};\n\nexport type Bill = Resource & {\n title: string;\n projectId: string;\n devisIds: Array<string>;\n date: number;\n providerCommission?: boolean;\n reference?: string;\n pdf?: File;\n entityData?: EntityData;\n statusDate?: number;\n statusComment?: string;\n statusHistory?: BillStatusHistory;\n files?: File[];\n // used to save information related with any possible external system\n metadata?: {\n sentToIpaidthat?: boolean;\n };\n};\n\nexport type BillReceived = Bill & {\n status: BillReceivedStatus;\n type: BillType.RECEIVED;\n dueDate?: number;\n entityPro?: string;\n entityProvider?: string;\n entity: BillReceivedEntity;\n subType: BillReceivedType;\n prices: {\n HT: number;\n TTC?: number;\n };\n comment?: string;\n orderURL?: string;\n amountsBill?: {\n amountPaid?: number | null;\n amountRemain?: number | null;\n paymentMethod?: PaymentMethodTypeEnum;\n };\n billDoc?: {\n reference: string;\n type: string;\n date: number | null;\n };\n};\n\nexport type BillIssued = Bill & {\n type: BillType.ISSUED;\n status: BillIssuedStatus;\n entity: BillIssuedEntity;\n subType: BillIssuedType;\n discountType: BillDiscountType;\n paymentChoice?: PaymentChoice;\n lateInterest?: LateInterest;\n termsOfPayment?: TermsOfPayment;\n elements: BillElement[];\n tva: boolean;\n discount: number;\n comments?: string;\n pricesByTVA?: any;\n devis?: Array<any>;\n downPayments?: Array<any>;\n downPaymentsIds?: Array<string>;\n // used by subType CREDIT_NOTE to create the relation between bills\n billSource?: {\n id: string;\n reference: string;\n status?: BillIssuedStatus;\n };\n // bills list of CREDIT_NOTE associated with this bill\n creditNotes?: Array<{ id: string; reference: string }>;\n // used to save the reason for credits nontes (for the moment)\n reason?: BillIssuedReasons;\n // set the incremental number of bills on the enterprise\n referenceNumber?: number;\n // check if bill was imported from external documents or system\n imported?: boolean;\n dateSent?: number;\n\n // prices related with the bill\n prices: {\n // is the HT price without discounts\n HT: number;\n // this is the HT after apply the discount\n finalHT: number;\n // final value after discounts\n TTC: number;\n // TVA value is calculated using: TTC - HT\n TVA: number;\n // discount value is calculated using: finalHT - HT\n discount?: number;\n // this value is calculated using adjustments in each element\n adjustments?: number;\n };\n // used in balance bills to display elements grouped by tva and types (materials, operations)\n isGrouped?: boolean;\n // when the status PAID is selected, the user has to fill in the amount\n amountsBill?: {\n amountPaid?: number;\n amountRemain?: number;\n };\n};\n\nexport type Price = {\n /**\n * The price with taxes\n */\n TTC: number;\n\n /**\n * The price without taxes\n */\n HT: number;\n\n /**\n * The pro price with taxes\n */\n ProTTC: number;\n\n /**\n * The pro price without taxes\n */\n ProHT: number;\n\n /**\n * The materials price TTC\n */\n Mats: number;\n\n /**\n * The materials price HT\n */\n MatsHT: number;\n\n /**\n * The materials pro price HT\n */\n MatsProHT?: number;\n\n /**\n * The total price TTC (TTC + Mats)\n */\n total?: number;\n};\n\n/**\n * Represents a materials provider\n */\nexport interface MaterialsProvider extends Resource {\n /**\n * The material provider name\n */\n name: string;\n /**\n * The material provider status to display or not in devis and operations catalog\n */\n status: boolean;\n /**\n * identifier unique to create the tabs in form\n */\n identifier: string;\n /**\n * By default al providers comming from System index should be false,\n * only providers added by enterprise admins must be true\n */\n editable: boolean;\n /**\n * define if enterprise admins can add materials inside this provider\n */\n addMaterials: boolean;\n /**\n * The material provider description\n */\n description?: string | null;\n /**\n * The cloudinary logo of the material provider\n */\n logo?: File | null;\n\n price?: number;\n\n type?: 'internal' | 'api' | 'system' | MaterialsProviderType;\n\n url?: string;\n /**\n * APi credentials\n * See the credential type in @placeshakr/providers\n */\n apiCredentials?: {\n [key: string]: {\n name?: string;\n\n apiKey: string;\n\n apiSecret?: string;\n\n url?: string;\n };\n };\n}\n\nexport type File = {\n /**\n * the public id\n */\n fileId: string;\n\n /**\n * Original url\n */\n source: string;\n\n /**\n * Format\n */\n format?: string;\n\n /**\n *\n */\n resourceType?: string;\n\n /**\n * Number of pages\n */\n\n pages?: number;\n\n /**\n * ??\n */\n elements?: any[];\n\n /**\n * The original size of the file\n */\n size?: string;\n\n /**\n * The file name used to download files\n */\n name?: string;\n\n /**\n * Generation time\n */\n generatedAt?: number;\n\n /**\n * Update time\n */\n updatedAt?: number;\n};\n\nexport interface QuotesConfiguration {\n /**\n * Default devis type\n */\n devisType?: QuotesConfigurationItem;\n\n /**\n * Default operation catalog\n */\n operationCatalog?: QuotesConfigurationItem;\n\n /**\n * Default operation sector (need operationCatalog to have a value)\n */\n operationSector?: QuotesConfigurationItem;\n\n /**\n * Default material providers\n */\n materialProviders?: QuotesConfigurationItem[] | null;\n\n /**\n * Default payment planning\n */\n paymentPlanning?: QuotesConfigurationItem;\n\n /**\n * Default comment model\n */\n commentModel?: QuotesConfigurationItem;\n}\n\nexport interface ProviderCategory {\n /**\n * Category name\n */\n name: string;\n\n /**\n * Array of subcategories\n */\n subcategories: string[];\n}\n\nexport interface ProvidersConfiguration {\n /**\n * Array of categories\n */\n categories?: ProviderCategory[];\n\n /**\n * Array of origins\n */\n origins?: string[];\n}\n\ntype QuotesConfigurationItem = SelectOption;\n\nexport type Action =\n | { type: 'navigation'; link: { href: string; as?: string }; text: string }\n | { type: 'page_reload'; text: string }\n | { type: 'event'; text: string }\n | { type: 'activate_notifications'; text: string }\n | { type: 'close'; text: string };\n\nexport interface Notification {\n externalId?: string | number;\n id: string | number;\n type?: NotificationType;\n title: any;\n message: any;\n actions?: Action[];\n readed?: boolean;\n closable?: boolean;\n date: number;\n persistent?: boolean;\n}\n\nexport interface UserNotification extends Resource {\n total: number;\n totalUnread: number;\n notifications: {\n [key: string]: Notification;\n };\n}\n\nexport type SelectOption = {\n label: string;\n value: any;\n};\n\nexport enum MaterialsProviderType {\n // created by the enterprises and use algolia index 'materials'\n INTERNAL = 'internal',\n // any catalog that needs an external connection\n API = 'api',\n // every catalog created on the super-admin and use algolia index 'system-materials'\n SYSTEM = 'system',\n}\n\nexport enum ProjectType {\n ONE_PIECE = 'ONE_PIECE',\n FULL = 'FULL',\n COMPOUND = 'COMPOUND',\n CHILD = 'CHILD',\n}\n\nexport enum OperationStatusEnum {\n TODO = 'TODO',\n INPROGRESS = 'INPROGRESS',\n DONE = 'DONE',\n}\n\nexport enum NotesType {\n NOTE = 'NOTE',\n PROBLEM = 'PROBLEM',\n IMPORTANT = 'IMPORTANT',\n DELIVERY = 'DELIVERY',\n}\n\nexport enum NotificationType {\n SUCCESS,\n INFO,\n WARNING,\n DANGER,\n TOAST,\n}\n\nexport enum DevisStatusEnum {\n CREATED = 'CREATED',\n SENT = 'SENT',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n ABANDONED = 'ABANDONED',\n}\n\nexport enum DevisTypeEnum {\n DEVIS = 'DEVIS',\n SAV = 'SAV',\n TS = 'TS',\n}\n\nexport enum DevisViewMode {\n HOME,\n GENERAL,\n PRO,\n CLIENT,\n}\n\nexport enum DevisPdfSectionEnum {\n FINANCIAL_HELP = 'FINANCIAL_HELP',\n PROJECT = 'PROJECT',\n CLIENT = 'CLIENT',\n PROJECT_MANAGER = 'PROJECT_MANAGER',\n}\n\nexport enum DocumentsTypeEnum {\n DEVIS = 'DEVIS',\n DOCUMENT = 'DOCUMENT',\n CLIENT = 'CLIENT',\n OTHER = 'OTHER',\n}\n\nexport enum EventsTypeEnum {\n OTHER = 'AUTRE',\n VISIT = 'VISIT',\n DELIVERY = 'DELIVERY',\n CONSTRUCTION = 'CONSTRUCTION',\n SAV = 'SAV',\n TECHNICAL_STATEMENT = 'TECHNICAL_STATEMENT',\n TS_DESIGN = 'TS_DESIGN',\n}\n\nexport enum PaymentMethodTypeEnum {\n CREDIT_CARD = 'CREDIT_CARD',\n BANK_TRANSFERT = 'BANK_TRANSFERT',\n}\n\nexport enum BillDocTypeEnum {\n BILL = 'BILL',\n PURCHASE_ORDER = 'PURCHASE_ORDER',\n}\n\nexport enum BillIssuedStatus {\n PROVISIONAL = 'PROVISIONAL',\n WAITING = 'WAITING',\n CREATED = 'CREATED',\n SENT = 'SENT',\n PAID = 'PAID',\n BLOCKED = 'BLOCKED',\n CANCELED = 'CANCELED',\n}\n\nexport enum BillReceivedStatus {\n PROVISIONAL = 'PROVISIONAL',\n WAITING_AGENT_VALIDATION = 'WAITING_AGENT_VALIDATION',\n WAITING_ACCOUNT_VALIDATION = 'WAITING_ACCOUNT_VALIDATION',\n WAITING_FOR_ELEMENT = 'WAITING_FOR_ELEMENT',\n WAITING_FOR_PAYMENT = 'WAITING_FOR_PAYMENT',\n TO_PAY = 'TO_PAY',\n TRANSFER_TO_VALIDATE = 'TRANSFER_TO_VALIDATE',\n WITHOUT_INVOICE = 'WITHOUT_INVOICE',\n PAID = 'PAID',\n REFUSED = 'REFUSED',\n BLOCKED = 'BLOCKED',\n}\n\nexport enum ReceptionVoucherStatus {\n WAITING_AGENT_VALIDATION = 'WAITING_AGENT_VALIDATION',\n WAITING_ACCOUNT_VALIDATION = 'WAITING_ACCOUNT_VALIDATION',\n ACCEPTED = 'ACCEPTED',\n REFUSED = 'REFUSED',\n}\n\nexport enum BillType {\n RECEIVED = 'RECEIVED',\n ISSUED = 'ISSUED',\n}\n\nexport enum BillReceivedEntity {\n PRO = 'PRO',\n MATERIAL_PROVIDER = 'MATERIAL_PROVIDER',\n SERVICE_PROVIDER = 'SERVICE_PROVIDER',\n PROVIDER = 'PROVIDER',\n OTHER = 'OTHER',\n}\n\nexport enum BillReceivedType {\n FACTURE = 'FACTURE',\n CREDIT_NOTE = 'CREDIT_NOTE',\n}\n\nexport enum BillIssuedEntity {\n CLIENT = 'CLIENT',\n PRO = 'PRO',\n PROVIDER = 'PROVIDER',\n MATERIAL_PROVIDER = 'MATERIAL_PROVIDER',\n SERVICE_PROVIDER = 'SERVICE_PROVIDER',\n OTHER = 'OTHER',\n}\n\nexport enum BillIssuedType {\n CUSTOM = 'CUSTOM',\n DOWN_PAYMENT = 'DOWN_PAYMENT',\n BALANCE = 'BALANCE',\n CREDIT_NOTE = 'CREDIT_NOTE',\n}\n\nexport enum BillElementType {\n ADVANCE = 'ADVANCE',\n HOURS = 'HOURS',\n DAYS = 'DAYS',\n PRODUCT = 'PRODUCT',\n SERVICE = 'SERVICE',\n PROVIDER_COMMISSION = 'PROVIDER_COMMISSION',\n}\n\nexport enum BillDiscountType {\n PERCENT = 'PERCENT',\n MONEY = 'MONEY',\n}\n\nexport enum PaymentType {\n CREDIT = 'CREDIT',\n DEBIT = 'DEBIT',\n}\n\nexport enum ProjectTypeEnum {\n ONE_PIECE = 'ONE_PIECE',\n FULL = 'FULL',\n COMPOUND = 'COMPOUND',\n CHILD = 'CHILD',\n}\n\nexport enum ProjectCategoriesEnum {\n UNSPECIFIED = 'UNSPECIFIED',\n BATHROOM = 'BATHROOM',\n KITCHEN = 'KITCHEN',\n LIVINGROOM = 'LIVINGROOM',\n BEDROOM = 'BEDROOM',\n TOILET = 'TOILET',\n OFFICE = 'OFFICE',\n APARTMENT = 'APARTMENT',\n HOUSE = 'HOUSE',\n ELECTRICITY = 'ELECTRICITY',\n PLUMBIG = 'PLUMBIG',\n FLOORING = 'FLOORING',\n WALL_COVERING = 'WALL_COVERING',\n STAIRS = 'STAIRS',\n OUTSIDE = 'OUTSIDE',\n COMMERCE = 'COMMERCE',\n}\n\nexport enum ProSpecialitiesEnum {\n KITCHEN = 'kitchen',\n BATHROOM = 'bathroom',\n GENERAL = 'general_renovation',\n GARDEN = 'garden',\n ATTICS = 'attics',\n POOL = 'swimming_pool',\n}\n\nexport enum ProSkillsEnum {\n ELECTRICITY = 'electricity',\n PLUMBING = 'plumbing',\n CARPENTRY = 'carpentry',\n MASONRY = 'masonry',\n PAINTING = 'painting',\n GARDEN = 'garden',\n LOCKSMITH = 'locksmith',\n FRAME = 'frame',\n INSULATION = 'insulation',\n}\n\nexport enum MarketplaceProSkillsEnum {\n STRUCTURAL_WORKS = 'structural_works',\n WATERPROOFING = 'waterproofing',\n METAL_FRAME = 'metal_frame',\n ELECTRICAL_INSTALLATION = 'electrical_installation',\n VIDEO_CONTROL_SECURITY = 'video_control_security',\n INTERIOR_DESIGN = 'interior_design',\n INTERIOR_CARPENTRY = 'interior_carpentry',\n PLUMBING_WC = 'plumbing_wc',\n ALL_TRADES = 'all_trades', // TCE\n CLADDING = 'cladding',\n WATER_SUPPLY = 'water_supply',\n DECONTAMINATION = 'decontamination',\n DISPOSAL_SMOKES = 'disposal_smokes',\n ATMOSPHERE_RELEASES = 'atmosphere_releases',\n}\n\nexport enum CommercialStatusEnum {\n CONTRACTOR = 'CONTRACTOR',\n EIRL = 'EIRL',\n SARL = 'SARL',\n EURL = 'EURL',\n SASU = 'SASU',\n SAS = 'SAS',\n}\n\nexport enum Origin {\n PROVIDER = 'provider',\n INTERNET = 'internet',\n YELLOW_PAGES = 'yellow-pages',\n RUMOR = 'rumor',\n PUBLICITY = 'publicity',\n}\n\nexport enum OrderMaterialStatus {\n TODO = 'TODO',\n DOING = 'DOING',\n ORDERED = 'ORDERED',\n}\n\nexport enum PhonesEnum {\n MOBILE = 'mobile',\n WORK = 'work',\n LANDLINE = 'landline',\n OTHER = 'other',\n}\n\nexport enum SendgridTemplates {\n NOTES = 'notes',\n EVENTS = 'events',\n DOCUMENTS = 'documents',\n DEVIS = 'devis',\n}\n\nexport enum TermsOfPayment {\n UPON_RECEIPT = 'upon-receipt',\n MONTH_END = 'month-end',\n DAYS_10 = '10-days',\n DAYS_20 = '20-days',\n DAYS_30 = '30-days',\n DAYS_30_END_MONTH = '30-days-end-month',\n DAYS_45 = '45-days',\n DAYS_60 = '60-days',\n DAYS_60_END_MONTH = '60-days-end-month',\n DAYS_90 = '90-days',\n DAYS_90_END_MONTH = '90-days-end-month',\n DAYS_120 = '120-days',\n}\n\nexport enum PaymentChoice {\n UNSPECIFIED = 'unspecified',\n CASH = 'cash',\n CHECK = 'check',\n BANK_TRANSFER = 'bank-transfer',\n BANK_CARD = 'bank-card',\n PAYPAL = 'paypal',\n SAMPLE = 'sample',\n BILL_EXCHANGE = 'bill-exchange',\n STATEMENT_EXCHANGE = 'statement-exchange',\n BILL_EXCHANGE_WITHOUT_ACCEPTANCE = 'bill-exchange-without-acceptance',\n PROMISSORY_NOTE = 'promissory-note',\n}\n\nexport enum LateInterest {\n NO_LATE_INTEREST = 'No-late-interest',\n PER_MONTH_1 = '1%-per-month',\n PER_MONTH_15 = '1.5%-per-month',\n PER_MONTH_2 = '2%-per-month',\n CURRENT_LEGAL_INTEREST_RATE = 'current-legal-interest-rate',\n SPECIFY = 'specify',\n}\n\nexport enum ProfileStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n BLOCKED = 'blocked',\n SUSPENDED = 'suspended',\n}\n\nexport type GeoLocation = {\n lat: number | null;\n lng: number | null;\n};\n\nexport type Phone = {\n name: string;\n number: string;\n};\n\nexport interface ProjectCounter {\n bills: number;\n devis: number;\n documents: number;\n events: number;\n medias: number;\n notes: number;\n visitReports: number;\n plans: number;\n}\n\n/**\n * Index updated on firestore\n */\nexport type IndexUpdate = {\n /**\n * Timestamp of update\n */\n when: number;\n\n /**\n * The user who updated the index\n */\n userId: string;\n\n /**\n * If this index concerne a project\n */\n projectId?: string;\n};\n\nexport interface ClientCounter {\n projects: number;\n}\n\nexport interface EmployeeCounter {\n /**\n *\n */\n projects: number;\n\n /**\n * Chiffre d'affaires\n */\n ca: number;\n\n /**\n * Chiffre d'affaires Hors Taxes\n */\n caHT: number;\n\n byYear: {\n [month: string]: {\n projects: number;\n caSigned: number;\n ca: number;\n caHT: number;\n };\n };\n}\n\n/**\n * Keep counters in singular\n */\nexport interface EnterpriseCounter {\n /**\n *\n */\n projects: number;\n\n /**\n * Number of clients\n */\n client: number;\n\n /**\n * Number of pros\n */\n pro: number;\n\n /**\n * number of agents\n */\n agent: number;\n\n /**\n * Number of sellers\n */\n seller: number;\n\n /**\n * Chiffre d'affaires\n */\n ca: number;\n\n /**\n * Chiffre d'affaires Hors Taxes\n */\n caHT: number;\n\n byYear: {\n [month: string]: {\n projects: number;\n caSigned: number;\n ca: number;\n caHT: number;\n client: number;\n pro: number;\n };\n };\n}\n\nexport interface Invitation {\n id: string;\n\n /**\n * Display name (firstName + lastName)\n */\n displayName: string;\n\n /**\n * First name\n */\n firstName: string;\n\n /**\n * Last name\n */\n lastName: string;\n\n /**\n * Invited user avatar\n */\n photo?: File;\n\n /**\n * Invited user address\n */\n address?: string;\n\n /**\n * Invited user password\n */\n password?: string;\n\n /**\n * Invited user email\n */\n email: string;\n\n /**\n * Invited user role\n */\n role: ROLE;\n\n alias?: string;\n\n /**\n * Invited user job title (`job` property duplicate ?)\n */\n jobTitle?: string;\n\n /**\n * Invited user job (role or function in his/her enterprise)\n */\n job?: string;\n\n /**\n * Invited user status ('inactive' by default)\n */\n status?: ProfileStatus;\n\n /**\n * Invited user's regions and areas where he/she works\n */\n regions?: string[];\n\n /**\n * Invited user's entity name (where he/she actually works)\n */\n entity?: string;\n\n /**\n * Invited user's provider name\n */\n provider?: Provider;\n\n /**\n * Invited user's district where he/she works\n */\n district?: string[];\n\n /**\n * Array of phone number + phone's name\n */\n phones?: Phone[];\n\n updatedAt?: number;\n\n createdAt?: number;\n\n sentAt: number;\n\n updatedBy: string;\n\n action_host: string;\n\n ready?: boolean;\n\n canLogin?: boolean;\n\n enterprise: string;\n}\n\nexport enum EstimationOriginEnum {\n WEBSITE = 'WEBSITE',\n ARTICHO = 'ARTICHO',\n}\n\nexport enum EstimationTypeEnum {\n KITCHEN = 'KITCHEN',\n BATHROOM = 'BATHROOM',\n ONE_PIECE = 'ONE_PIECE',\n HOUSE = 'HOUSE',\n APARTMENT = 'APARTMENT',\n COMMERCIAL_LOCAL = 'COMMERCIAL_LOCAL',\n WITHOUT_ESTIMATION = 'WITHOUT_ESTIMATION',\n}\n\n/**\n * Represents a estimation project\n */\nexport interface Estimation extends Resource {\n seller: string | Seller;\n provider?: string | Provider;\n client: Partial<Client>;\n name: string;\n typeProject: ProjectTypeEnum;\n type: EstimationTypeEnum;\n address: string;\n surface: number;\n note: string;\n min: number;\n max: number;\n minMats: number;\n maxMats: number;\n origin: EstimationOriginEnum;\n summary: string[];\n status: EstimationStatusEnum;\n files?: Array<File>;\n comment?: string;\n /*\n * link to project if estimate generated one\n */\n projectId?: string;\n}\n\nexport enum EmailTemplate {\n USER_INVITATION = 'user-invitation',\n DOCUMENTS = 'documents',\n NOTES = 'notes',\n EVENTS = 'events',\n DEVIS = 'devis',\n CLIENT_ESTIMATION_WEBSITE = 'client-estimation-website',\n CLIENT_ESTIMATION_ARTICHO = 'client-estimation-articho',\n ENTERPRISE_ESTIMATION = 'enterprise-estimation',\n RESET_PASSWORD = 'reset-password',\n WELCOME_TO_ENTERPRISE = 'welcome-to-enterprise',\n WELCOME_TO_NEW_ENTERPRISE = 'welcome-to-new-enterprise',\n NEW_ENTERPRISE = 'new-enterprise',\n USER_CONTACT = 'user-contact',\n PLAN = 'plan',\n BILL = 'bill',\n MEDIAS = 'medias',\n EXPORT_LOGS = 'export-logs',\n PLAN_VALIDATED = 'plan-validated',\n\n MARKETPLACE_WORK_ORDER_APPROVED = 'marketplace-work-order-approved',\n MARKETPLACE_CLOSE_PROJECT = 'marketplace-close-project',\n MARKETPLACE_WRONG_BILL = 'marketplace-wrong-bill',\n MARKETPLACE_PROJECT_PRO_APPLIED = 'marketplace-project-pro-applied',\n MARKETPLACE_PROJECT_PRO_SELECTED = 'marketplace-project-pro-selected',\n MARKETPLACE_WORK_ORDER_READY_TO_VALIDATE = 'marketplace-workorder-ready-to-validate',\n MARKETPLACE_WORK_ORDER_STATUS_CHANGED = 'marketplace-workorder-status-changed',\n\n USER_DOC_TO_EXPIRE = 'user-doc-to-expire',\n USER_DOC_EXPIRED = 'user-doc-expired',\n}\n\nexport enum DevisPdfType {\n PROVIDER = 'provider',\n PROFESSIONAL = 'professional',\n ENTERPRISE = 'enterprise',\n}\n\nexport enum DevisPdfMode {\n REGULAR = 'regular',\n SIMPLE = 'simple',\n}\n\nexport enum DevisContractingEntity {\n PROVIDER = 'provider',\n ENTERPRISE = 'enterprise',\n}\n\nexport enum EnterpriseStatusEnum {\n INCOMPLETE = 'incomplete',\n INCOMPLETE_EXPIRED = 'incomplete_expired',\n TRIALING = 'trialing',\n ACTIVE = 'active',\n PAST_DUE = 'past_due',\n CANCELED = 'canceled',\n UNPAID = 'unpaid',\n}\n\nexport enum EnterpriseProductEnum {\n STANDARD = 'standard',\n PLUS = 'plus',\n PREMIUM = 'premium',\n}\n\nexport enum EstimationStatusEnum {\n WAITING = 'WAITING',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n}\n\nexport enum HistoryActionEnum {\n EDIT = 'EDIT',\n SEND_EMAIL = 'SEND_EMAIL',\n EDIT_STATUS = 'EDIT_STATUS',\n ASSIGN_AGENT = 'ASSIGN_AGENT',\n UNASSIGN_AGENT = 'UNASSIGN_AGENT',\n ASSIGN_PRO = 'ASSIGN_PRO',\n UNASSIGN_PRO = 'UNASSIGN_PRO',\n ASSIGN_SELLER = 'ASSIGN_SELLER',\n UNASSIGN_SELLER = 'UNASSIGN_SELLER',\n APPROVED_R_V = 'APPROVED_R_V',\n DEVIS_APPROVED = 'DEVIS_APPROVED',\n DEVIS_SENT = 'DEVIS_SENT',\n DEVIS_SIGNED = 'DEVIS_SIGNED',\n CREATE_DOCUMENT = 'CREATE_DOCUMENT',\n CREATE_MEDIA = 'CREATE_MEDIA',\n CREATE_EVENT = 'CREATE_EVENT',\n CREATE_PLAN = 'CREATE_PLAN',\n VALIDATE_PLAN = 'VALIDATE_PLAN',\n INVALIDATE_PLAN = 'INVALIDATE_PLAN',\n EDIT_USER_STATUS = 'EDIT_USER_STATUS',\n}\n\nexport interface History {\n /**\n * The internal ID of this resource\n */\n id?: string;\n\n /**\n * Algolia search ID\n */\n objectID?: string;\n\n /**\n * Define from which entity comes the data example: Note, ReceptionVoucher\n */\n entityType?: HistoryEntityType;\n\n actions: HistoryAction[];\n}\n\nexport enum HistoryEntityType {\n PROJECT = 'PROJECT',\n NOTE = 'NOTE',\n RECEPTION_VOUCHER = 'RECEPTION_VOUCHER',\n DOCUMENT = 'DOCUMENT',\n PLAN = 'PLAN',\n EVENT = 'EVENT',\n MEDIA = 'MEDIA',\n DEVIS = 'DEVIS',\n PROFILE = 'PROFILE',\n}\n\nexport interface HistoryAction {\n /**\n * When the action was performed\n */\n date?: number;\n\n /**\n * The action type performed\n */\n // action: HistoryActionEnum;\n type: HistoryActionEnum;\n\n /**\n * User who performed the action\n */\n owner?: {\n userId: string;\n displayName: string;\n role: ROLE;\n photo?: File;\n };\n\n /**\n * The action data\n */\n data?: any;\n}\n\nexport interface Category extends Resource {\n name: string;\n // with this field is possible to use categories in multiples area of the system and filter by it\n entity: CategoryEntityEnum;\n order?: number;\n description?: string;\n parent?: string;\n // create the relation between materials providers or operations catalogues\n provider?: string;\n}\n\nexport enum CategoryEntityEnum {\n MATERIAL = 'MATERIAL',\n OPERATION = 'OPERATION',\n RESOURCE_LIBRARY = 'RESOURCE_LIBRARY',\n IMAGE_LIBRARY = 'IMAGE_LIBRARY',\n DEVIS_TEMPLATE = 'DEVIS_TEMPLATE',\n}\n\nexport enum DevisTemplateCatProvider {\n BASIC = 'BASIC',\n ADVANCED_PIECE = 'ADVANCED_PIECE',\n ADVANCED_LOT = 'ADVANCED_LOT',\n}\n\nexport interface OperationCatalog extends Resource {\n name: string;\n status: boolean;\n sectors?: Array<{\n objectID: string;\n name: string;\n value: number;\n }>;\n description?: string;\n image?: File | null;\n}\n\nexport interface Nomenclature extends Resource {\n value: any;\n status: boolean;\n identifier: NomenclaturesIdentifier;\n color?: string;\n file?: File;\n order?: number;\n activeForPro?: boolean;\n setProjectDate?: boolean;\n label?: string;\n text?: string;\n visibleBy?: ROLE[];\n default?: boolean;\n}\n\nexport enum NomenclaturesIdentifier {\n OPERATIONS_SECTOR = 'OPERATIONS_SECTOR',\n OPERATIONS_PIECE = 'OPERATIONS_PIECE',\n OPERATIONS_LOT = 'OPERATIONS_LOT',\n EVENTS_TYPES = 'EVENTS_TYPES',\n PROJECTS_CATEGORY = 'PROJECTS_CATEGORY',\n TVA = 'TVA',\n SUPPLIERS = 'SUPPLIERS',\n MARGINS = 'MARGINS',\n TERMS_OF_SALE = 'TERMS_OF_SALE',\n NOTES_MODELS = 'NOTES_MODELS',\n DEVIS_TYPES = 'DEVIS_TYPES',\n COMMENTS_MODELS = 'COMMENTS_MODELS',\n EMAILS_COMMENTS_MODELS = 'EMAILS_COMMENTS_MODELS',\n PAYMENT_PLANNING = 'PAYMENT_PLANNING',\n PROJECTS_PRIORITY = 'PROJECTS_PRIORITY',\n}\n\n/**\n * New version of operations with more advanced config\n */\nexport interface Operation extends Resource {\n /**\n * The operation id\n */\n objectID?: string;\n\n /**\n * The operation name\n */\n name: string;\n\n /**\n * The operation surface\n */\n lot: string;\n\n /**\n * The operation unit price\n */\n unitPrice: number;\n\n /**\n * The operation unit\n */\n unit: string;\n\n /**\n * The operation description\n */\n description?: string;\n\n /**\n * The materials added by default to the operation\n */\n materials?: Material[] | [];\n\n /**\n * Number of materials assigned to the operation\n */\n numberOfMaterials?: number;\n\n /**\n * Used at the moment of copy catalogs from system-operations to the enterprise\n * to create the relation between operations and system-operations-materials\n */\n systemId?: string;\n\n /**\n *\n */\n tva?: number | null;\n\n /**\n * Used to create relation between operations and his catalog\n */\n catalogId: string;\n\n /**\n * Used in operations page to assign categories\n */\n category: string;\n\n /**\n * Used to restrict modification in devis page\n */\n blockPrice?: boolean;\n\n /**\n * Used to restrict modification in devis page\n */\n blockTVA?: boolean;\n\n /**\n * Quantity\n */\n quantity?: OperationQuantityEnum;\n\n /**\n * List of rules used to re-calculate the price\n */\n adjustments?: Array<OperationAdjustment>;\n\n reserves?: string;\n\n barcode?: BarCode;\n\n version?: number;\n\n responsible?: ItemResponsible;\n}\n\nexport type BarCode = {\n value: string;\n format: BarCodeEnum;\n};\n\nexport enum BarCodeEnum {\n CODE128 = 'code128',\n EAN13 = 'ean13',\n EAN8 = 'ean8',\n EAN5 = 'ean5',\n EAN2 = 'ean2',\n UPC = 'upc',\n CODE39 = 'code39',\n ITF14 = 'itf14',\n MSI = 'msi',\n PHARMACODE = 'pharmacode',\n}\n\nexport interface OperationAdjustment {\n rule: OperationRulesEnum;\n bigger?: number;\n lower?: number;\n equal?: number;\n complement?: string;\n percent: number;\n}\n\nexport enum OperationQuantityEnum {\n NOT_DEFINED = 'NOT_DEFINED',\n PERIMETER = 'PERIMETER',\n GROUND_CEILING_SURFACE = 'GROUND_CEILING_SURFACE',\n WALL_SURFACE = 'WALL_SURFACE',\n}\n\nexport enum OperationRulesEnum {\n BIGGER_THAN = 'BIGGER_THAN',\n LOWER_THAN = 'LOWER_THAN',\n EQUAL_TO = 'EQUAL_TO',\n BETWEEN = 'BETWEEN',\n}\n\nexport interface OperationMaterial extends Material {\n quantity: number;\n loss: number;\n rounded: boolean;\n responsible: ItemResponsible;\n fixed: boolean;\n optId: string;\n complement?: string;\n}\n\nexport enum ItemResponsible {\n NONE = 'NONE',\n CLIENT = 'CLIENT',\n PRO = 'PRO',\n AGENT = 'AGENT',\n SELLER = 'SELLER',\n ENTERPRISE = 'ENTERPRISE',\n PROVIDER = 'PROVIDER',\n}\n\nexport enum ProjectPriceTypeEnum {\n accepted = 'accepted',\n prospected = 'prospected',\n rejected = 'rejected',\n}\n\nexport enum DevisFormatEnum {\n PIECE = 'PIECE',\n LOT = 'LOT',\n}\n\nexport interface OperationsGroup extends Resource {\n name: string;\n status: boolean;\n operationsCatalog: string;\n operations: string[];\n}\n\nexport interface DevisVersion extends Devis {}\n\nexport enum ConfigurationsIdentifier {\n ADMIN_FORM = 'ADMIN_FORM',\n PROS_FORM = 'PROS_FORM',\n AGENTS_FORM = 'AGENTS_FORM',\n SELLERS_FORM = 'SELLERS_FORM',\n}\n\nexport enum ConfigurationFieldType {\n TEXT = 'users.admins.configPanel.inputType.text',\n PASSWORD = 'users.admins.configPanel.inputType.password',\n CHECKBOX = 'users.admins.configPanel.inputType.checkbox',\n EMAIL = 'users.admins.configPanel.inputType.email',\n FILE = 'users.admins.configPanel.inputType.file',\n SELECT_ONE = 'users.admins.configPanel.inputType.selectOne',\n SELECT_MULTI = 'users.admins.configPanel.inputType.selectMulti',\n GOOGLE_LOCATION = 'users.admins.configPanel.inputType.googleLocation',\n PHONE = 'users.admins.configPanel.inputType.phone',\n DOCUMENT = 'users.admins.configPanel.inputType.document',\n}\n\ntype ConfigurationTextInputType = {\n type: ConfigurationFieldType.TEXT;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationPasswordInputType = {\n type: ConfigurationFieldType.PASSWORD;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationEmailInputType = {\n type: ConfigurationFieldType.EMAIL;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationFileInputType = {\n type: ConfigurationFieldType.FILE;\n description?: string;\n defaultValue: File | null;\n};\ntype ConfigurationDocumentInputType = {\n type: ConfigurationFieldType.DOCUMENT;\n description?: string;\n defaultValue: ProDocument;\n};\ntype ConfigurationSelectOneInputType = {\n type: ConfigurationFieldType.SELECT_ONE;\n description?: string;\n options: SelectOption[];\n defaultValue: SelectOption | null;\n};\ntype ConfigurationSelectMultiInputType = {\n type: ConfigurationFieldType.SELECT_MULTI;\n description?: string;\n options: SelectOption[];\n defaultValue: SelectOption[];\n};\ntype ConfigurationGoogleLocationInputType = {\n type: ConfigurationFieldType.GOOGLE_LOCATION;\n description?: string;\n defaultValue: string;\n};\ntype ConfigurationCheckboxInputType = {\n type: ConfigurationFieldType.CHECKBOX;\n description?: string;\n defaultValue: boolean;\n};\ntype ConfigurationPhoneInputType = {\n type: ConfigurationFieldType.PHONE;\n description?: string;\n defaultValue: string;\n};\n\nexport enum ConfigurationDocumentType {\n LEGAL = 'LEGAL',\n REGULATORY = 'REGULATORY',\n SPECIFIC = 'SPECIFIC',\n}\n\ntype ConfigurationInputTypeAndDescription =\n | ConfigurationTextInputType\n | ConfigurationPasswordInputType\n | ConfigurationEmailInputType\n | ConfigurationFileInputType\n | ConfigurationSelectOneInputType\n | ConfigurationSelectMultiInputType\n | ConfigurationGoogleLocationInputType\n | ConfigurationCheckboxInputType\n | ConfigurationPhoneInputType\n | ConfigurationDocumentInputType;\n\nexport type ConfigurationField = {\n order: number;\n isActive: boolean;\n isRequired: boolean;\n label: string;\n isLocked: boolean;\n provider?: string;\n} & ConfigurationInputTypeAndDescription;\n\ninterface CommonConfigurationFormValues {\n photo: ConfigurationField;\n firstName: ConfigurationField;\n lastName: ConfigurationField;\n email: ConfigurationField;\n mainPhone: ConfigurationField;\n secondaryPhone: ConfigurationField;\n job: ConfigurationField;\n isUsingWhatsApp: ConfigurationField;\n password?: ConfigurationField;\n confirmPassword?: ConfigurationField;\n cgu?: ConfigurationField;\n}\n\nexport interface AdminConfigurationFormValues\n extends CommonConfigurationFormValues {\n job: ConfigurationField;\n entity: ConfigurationField;\n regions: ConfigurationField;\n address: ConfigurationField;\n}\n\nexport interface ProsConfigurationFormValues\n extends CommonConfigurationFormValues {\n specialities: ConfigurationField;\n skills: ConfigurationField;\n regions: ConfigurationField;\n address: ConfigurationField;\n commercialName: ConfigurationField;\n commercialStatus: ConfigurationField;\n siren: ConfigurationField;\n siret: ConfigurationField;\n manager: ConfigurationField;\n // required documents\n enterpriseIdentity: ConfigurationField; // Identité de l’entreprise\n socialRegime: ConfigurationField; // Régime Social\n foreignWorkers: ConfigurationField; // Travailleurs Etrangers\n professionalCivilLiabilityInsurance: ConfigurationField; // Assurance RCP\n decennialInsurance: ConfigurationField; // Attestation d’assurance décennale\n certificateOfTaxRegularity: ConfigurationField; // Attestation de régularité fiscale\n workAccidentCertificate: ConfigurationField; // Attestation CARSAT accidents du travail\n paidVacationAndBadWeatherUnemployment: ConfigurationField; // Certificat attestant le respect des obligations relatives aux congés payés et au chômage intempérie\n buildingCertification: ConfigurationField; // Certification Bâtiment\n publicMarketSwornStatement: ConfigurationField; // Déclaration sur l’honneur -Marchés Publics\n supplyRelationConvention: ConfigurationField; // Nouvelle charte relation fournisseurs & rse\n}\n\nexport interface AgentsConfigurationFormValues\n extends CommonConfigurationFormValues {\n specialities: ConfigurationField;\n offerType: ConfigurationField;\n area: ConfigurationField;\n}\n\nexport interface SellersConfigurationFormValues\n extends CommonConfigurationFormValues {\n district: ConfigurationField;\n}\n\nexport type UserConfigurationFormValues =\n | AdminConfigurationFormValues\n | ProsConfigurationFormValues\n | AgentsConfigurationFormValues\n | SellersConfigurationFormValues;\n\nexport type Configuration = Resource & {\n identifier: ConfigurationsIdentifier;\n data: UserConfigurationFormValues;\n};\n\nexport type Log = Resource & {\n identifier: LogsIdentifier;\n profile: {\n id: string;\n name: string;\n email: string;\n role: ROLE;\n roleName: string;\n };\n ip: string;\n date?: number;\n data: LogData;\n};\n\nexport enum LogsIdentifier {\n EXPORT_DATA = 'EXPORT_DATA',\n}\n\nexport type LogData = ExportLog;\n\nexport type ExportLog = {\n query: QueryIdentifier;\n queryName: string;\n filters: any;\n formattedFilters: { label: string; value: string }[];\n};\n\nexport enum QueryIdentifier {\n EXPORT_EVENTS = 'EXPORT_EVENTS',\n EXPORT_BILLS = 'EXPORT_BILLS',\n EXPORT_DEVIS = 'EXPORT_DEVIS',\n EXPORT_PROJECTS = 'EXPORT_PROJECTS',\n}\n\nexport type ExtraEmail = {\n label: string;\n email: string;\n};\n\n// following statuses come from Stripe documentation\n// https://stripe.com/docs/billing/migration/invoice-states\nexport type StripeInvoiceStatus =\n | 'draft'\n | 'open'\n | 'paid'\n | 'void'\n | 'uncollectible';\n\nexport interface SystemVersion {\n date: number;\n version: string;\n}\n\nexport enum BillIssuedReasons {\n CREDIT_NOTE_ADMINISTRATIVE = 'CREDIT_NOTE_ADMINISTRATIVE',\n CREDIT_NOTE_OPERATIONAL = 'CREDIT_NOTE_OPERATIONAL',\n}\n\nexport enum EvaluationConfigIdentifier {\n PRO = 'PRO',\n}\n\nexport interface EvaluationConfigQuestion {\n order: number;\n title: string;\n weight: number;\n required: boolean;\n description?: string;\n}\n\nexport interface EvaluationConfig extends Resource {\n identifier: EvaluationConfigIdentifier;\n questions: EvaluationConfigQuestion[];\n}\n\nexport interface Evaluation extends Resource {\n identifier: EvaluationConfigIdentifier;\n questions: QuestionResponse[];\n result: number;\n projectId: string;\n userId: string;\n notes: string;\n}\n\nexport interface QuestionResponse extends EvaluationConfigQuestion {\n value?: number;\n text?: string;\n}\n\ninterface DevisCandidateFile extends File {\n lastConsultationDate?: number;\n lastConstultationUser?: {\n userId: string;\n displayName: string;\n };\n}\n\nexport interface DevisCandidate extends Devis {\n files: DevisCandidateFile[];\n}\n\nexport enum WorkOrderStatusEnum {\n CREATED = 'CREATED',\n TO_VALIDATE = 'TO_VALIDATE',\n APPROVED = 'APPROVED',\n REFUSED = 'REFUSED',\n}\n\nexport interface WorkOrderStatusHistory {\n before: WorkOrderStatusEnum;\n after: WorkOrderStatusEnum;\n date: number;\n userId: string;\n comments: string;\n}\n\nexport enum WorkOrderPriceRange {\n LESS_2500 = 'LESS_2500',\n MORE_2500_LESS_10000 = 'MORE_2500_LESS_10000',\n MORE_10000_LESS_40000 = 'MORE_10000_LESS_40000',\n MORE_40000 = 'MORE_40000',\n}\n\nexport interface WorkOrder extends Resource {\n title: string;\n /**\n * Référence interne à la SNCF généré par l’outil iGO en\n * amont de la création de l’OT dans la marketplace\n */\n reference: string;\n /**\n * Nom de l’Agence Bâtiment Energies (ABE) de la SNCF\n */\n agenceName: string;\n /**\n * Permet de retranscrire précisément le besoin travaux\n */\n description: string;\n /**\n * Adresse du lieu des travaux (N°-Rue-Nom de la voie-CP-Ville)\n */\n address: string;\n addressComments: string;\n region: string;\n priority: string;\n estimatedDate: number;\n files: File[];\n images: File[];\n estimatedPrice?: number;\n rangeOfPrice?: WorkOrderPriceRange;\n daysToClose: number;\n status: WorkOrderStatusEnum;\n statusHistory: WorkOrderStatusHistory[];\n\n mandatorySiteVisit: boolean;\n client: string;\n centralInformationAccounting: string;\n localInformationAccounting: string;\n /**\n * It is used to filter professionals projects inside marketplace based on his skills\n */\n skills: string[];\n /**\n * It is used to determine if it is a job where there are toxic substances such as lead.\n */\n toxicSubstances: boolean;\n /**\n * Reference to the project once the order is approved and a new project created with its data\n */\n projectId?: string;\n}\n\nexport enum CandidatureValidation {\n VALID = 'valid',\n NOT_VALID = 'not-valid',\n NOT_ANALYSED = 'not-analysed',\n}\n\nexport interface Candidatures extends Resource {\n userId: string;\n isValid: CandidatureValidation;\n comment?: string;\n validatedAt: number;\n}\n","function isBuffer(obj: any): boolean {\n return (\n obj &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n );\n}\n\nfunction keyIdentity(key: string | number) {\n return key;\n}\n\ntype FlattenOptions = {\n delimiter?: string;\n maxDepth?: number;\n transformKey?: (key: string | number) => string;\n safe?: boolean;\n};\n\nexport function flatten(target: any, options?: FlattenOptions) {\n const opts = options || {};\n\n const delimiter = opts.delimiter || '.';\n const maxDepth = opts.maxDepth;\n const transformKey = opts.transformKey || keyIdentity;\n const output: any = {};\n\n function step(object: any, prev: any, currentDepth: number) {\n const depth = currentDepth || 1;\n\n Object.keys(object).forEach(key => {\n const value = object[key];\n const isarray = opts.safe && Array.isArray(value);\n const type = Object.prototype.toString.call(value);\n const isbuffer = isBuffer(value);\n const isobject = type === '[object Object]' || type === '[object Array]';\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key);\n\n if (\n !isarray &&\n !isbuffer &&\n isobject &&\n Object.keys(value).length &&\n (!maxDepth || depth < maxDepth)\n ) {\n step(value, newKey, depth + 1);\n }\n\n output[newKey] = value;\n });\n }\n\n step(target, null, 0);\n\n return output;\n}\n","import * as articho from '../types';\n\nexport type EventMap = {\n 'enterprise.created': articho.Enterprise;\n 'enterprise.updated': articho.Enterprise;\n 'enterprise.removed': articho.Enterprise;\n 'enterprise.subscription.updated': articho.Enterprise;\n\n 'project.created': articho.Project;\n 'project.updated': articho.Project;\n 'project.removed': articho.Project;\n 'project.status.updated': articho.Project;\n\n 'devis.created': articho.Devis;\n 'devis.updated': articho.Devis;\n 'devis.removed': articho.Devis;\n 'devis.status.updated': articho.Devis;\n\n 'bill.created': articho.BillIssued | articho.BillReceived;\n 'bill.updated': articho.BillIssued | articho.BillReceived;\n 'bill.removed': articho.BillIssued | articho.BillReceived;\n 'bill.status.updated': articho.BillIssued | articho.BillReceived;\n};\n\nexport interface EventMetadata {\n /**\n * Timestamp of event\n */\n timestamp: number | string;\n\n /**\n * Data Id to be used in filters and queries\n */\n entityId: string;\n\n /**\n * To whom this data belongs?\n */\n scope: string;\n\n /**\n * Object that contains the values of the id of the entities \n * that make up the path of the modified entity\n */\n params: {\n [option: string]: any;\n };\n}\n\n/**\n * Event\n */\nexport interface AppEvent<T extends keyof EventMap> {\n /**\n * Event metadata to filter\n */\n meta: EventMetadata;\n\n /**\n * Type of event\n */\n type: T;\n\n /**\n * data associate to the event\n */\n data: EventMap[T];\n}\n\nexport const createEvent = <T extends keyof EventMap>(\n type: T,\n data: EventMap[T],\n meta: EventMetadata\n): AppEvent<T> => {\n return {\n data,\n type,\n meta,\n };\n};\n"],"names":["ROLE","env","orderedAccess","CLIENT","PRO","AGENT","ADMIN","SUPERADMIN","hasRole","claims","security","role","is","canActAs","userRole","getRole","indexOf","getRoles","filter","acls","productionEnvironment","credentials","algolia","cloudinary","stripe","isTest","name","search","scopeField","visibleBy","ownerField","enterprise","secureSearchApiKey","realtime","projects","schema","collections","users","enterprises","billing","medias","events","notes","visitReports","documents","devis","plans","downPayments","providers","statuses","orders","bills","counters","invoices","materialsProvider","materials","invitations","devisTemplates","estimations","userNotifications","histories","receptionVouchers","indexes","notifications","nomenclatures","categories","operationsCatalogs","operationsGroups","operations","operationMaterials","devisVersions","enterpriseDocuments","enterpriseMedias","configurations","logs","systemVersions","userProfiles","evaluationsConfig","evaluations","devisCandidates","workOrders","candidatures","docs","user","userProfile","global","project","paymentMethods","provider","status","counter","invoice","material","invitation","devisTemplate","estimation","userNotification","history","notification","category","operation","operationMaterial","devisVersion","enterpriseDocument","enterpriseMedia","configuration","log","systemVersion","evaluationConfig","evaluation","devisCandidate","workOrder","candidature","admins","agents","pros","sellers","clients","operationsMaterials","systemMaterials","systemOperations","systemOperationsMaterials","systemMaterialsProvider","systemStatus","systemNomenclatures","systemCategories","searchableAttributes","attributesForFaceting","maxValuesPerFacet","maxFacetHits","ranking","dev","base","_extends","staging","test","emulator","Environments","getEnv","envName","production","FactoryCreateFunction","create","id","data","createdAt","updatedAt","Date","now","objectID","helpers","profiles","payments","billsIssued","billsReceived","downPayment","receptionVoucher","operationsCatalog","ASCII_CHARS","uid","generate","lastPushTime","lastRandChars","getTime","duplicateTime","timeStampChars","Array","i","charAt","Math","floor","Error","join","random","length","timestamp","asDate","time","substring","reversePathName","path","pathParts","split","pathnames","Object","keys","pathName","pathvalues","values","pathvalue","index","findIndex","p","parts","fulfilledParts","map","part","idx","getPath","params","regex","RegExp","m","generatedPath","toString","exec","_m","match","paramName","hasOwnProperty","String","createProducts","products","classic","internal","product","description","type","price","main","active","isPrivate","rating","order","includes","maxAdminUsers","maxAgentUsers","maxProUsers","maxSellerUsers","authorizationManagement","dashboard","accounting","projectStorage","customCatalog","customConfig","exportReports","externalApiIntegration","support","tariffs","t","tax_rates","standard","plus","testing","usageType","additionalAdmin","additionalAgent","additionalPro","additionalSeller","ProDocumentEmailSend","MarketplaceStatus","VisitReportStatus","DevisOriginEnum","DevisCommissionsEntity","DevisHistoryType","DevisDocSectionEnum","DevisDocColorEnum","DevisDocDurationEnum","MaterialsProviderType","ProjectType","OperationStatusEnum","NotesType","NotificationType","DevisStatusEnum","DevisTypeEnum","DevisViewMode","DevisPdfSectionEnum","DocumentsTypeEnum","EventsTypeEnum","PaymentMethodTypeEnum","BillDocTypeEnum","BillIssuedStatus","BillReceivedStatus","ReceptionVoucherStatus","BillType","BillReceivedEntity","BillReceivedType","BillIssuedEntity","BillIssuedType","BillElementType","BillDiscountType","PaymentType","ProjectTypeEnum","ProjectCategoriesEnum","ProSpecialitiesEnum","ProSkillsEnum","MarketplaceProSkillsEnum","CommercialStatusEnum","Origin","OrderMaterialStatus","PhonesEnum","SendgridTemplates","TermsOfPayment","PaymentChoice","LateInterest","ProfileStatus","EstimationOriginEnum","EstimationTypeEnum","EmailTemplate","DevisPdfType","DevisPdfMode","DevisContractingEntity","EnterpriseStatusEnum","EnterpriseProductEnum","EstimationStatusEnum","HistoryActionEnum","HistoryEntityType","CategoryEntityEnum","DevisTemplateCatProvider","NomenclaturesIdentifier","BarCodeEnum","OperationQuantityEnum","OperationRulesEnum","ItemResponsible","ProjectPriceTypeEnum","DevisFormatEnum","ConfigurationsIdentifier","ConfigurationFieldType","ConfigurationDocumentType","LogsIdentifier","QueryIdentifier","BillIssuedReasons","EvaluationConfigIdentifier","WorkOrderStatusEnum","WorkOrderPriceRange","CandidatureValidation","isBuffer","obj","constructor","keyIdentity","key","flatten","target","options","opts","delimiter","maxDepth","transformKey","output","step","object","prev","currentDepth","depth","forEach","value","isarray","safe","isArray","prototype","call","isbuffer","isobject","newKey","createEvent","meta"],"mappings":"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;AACtB,KAAA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACD,CAAA;AAED,EAAA,OAAO1B,QAAQ,CAAA;AACjB,CAAC;;AC7OD,IAAM+B,OAAO,GAA0B;AACrC9B,EAAAA,OAAO,EAAE;AACPtE,IAAAA,EAAE,EAAE,qBAAqB;IACzBiG,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC3CF,IAAAA,OAAO,EAAE;AACP1G,MAAAA,IAAI,EAAE;AAAEW,QAAAA,EAAE,EAAE,gCAAgC;AAAE2E,QAAAA,KAAK,EAAE,GAAG;AAAE0B,QAAAA,SAAS,EAAE,UAAU;AAAE3B,QAAAA,IAAI,EAAE,MAAA;OAAQ;AAC/F4B,MAAAA,eAAe,EAAE;AAAEtG,QAAAA,EAAE,EAAE,gCAAgC;AAAE2E,QAAAA,KAAK,EAAE,EAAE;AAAE0B,QAAAA,SAAS,EAAE,SAAS;AAAE3B,QAAAA,IAAI,EAAE,YAAA;OAAc;AAC9G6B,MAAAA,eAAe,EAAE;AAAEvG,QAAAA,EA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"}