diff --git a/libs/common/src/constants/controller-route.ts b/libs/common/src/constants/controller-route.ts
index 4012c1a..f257e2a 100644
--- a/libs/common/src/constants/controller-route.ts
+++ b/libs/common/src/constants/controller-route.ts
@@ -404,6 +404,15 @@ export class ControllerRoute {
'This endpoint adds a new user role to the system based on the provided role data.';
};
};
+ static TERMS_AND_CONDITIONS = class {
+ public static readonly ROUTE = 'terms';
+
+ static ACTIONS = class {
+ public static readonly FETCH_TERMS_SUMMARY = 'Fetch Terms and Conditions';
+ public static readonly FETCH_TERMS_DESCRIPTION =
+ 'This endpoint retrieves the terms and conditions for the application.';
+ };
+ };
static GROUP = class {
public static readonly ROUTE = 'group';
diff --git a/libs/common/src/constants/terms-and-conditions.html b/libs/common/src/constants/terms-and-conditions.html
new file mode 100644
index 0000000..80bac71
--- /dev/null
+++ b/libs/common/src/constants/terms-and-conditions.html
@@ -0,0 +1,44 @@
+
+
User Agreement
+
Terms and Conditions
+
Last updated: {{lastUpdated}}
+
+ Please read these Terms and Conditions ("Terms", "Terms and Conditions")
+ carefully before using the
+ {{websiteUrl}} website and the {{mobileApp}}
+ mobile application (the "Service") operated by {{companyName}}.
+
+
+ Your access to and use of the Service is conditioned on your acceptance of
+ and compliance with these Terms. These Terms apply to all visitors, users,
+ and others who access or use the Service.
+
+
Content
+
+ Our Service allows you to post, link, store, share and otherwise make
+ available certain information, text, graphics, videos, or other material
+ ("Content"). You are responsible for the Content you post.
+
+
Links To Other Websites
+
+ Our Service may contain links to third-party websites or services that are
+ not owned or controlled by {{companyName}}.
+
+
+ {{companyName}} has no control over, and assumes no responsibility for, the
+ content, privacy policies, or practices of any third-party websites or
+ services.
+
+
Changes
+
+ We reserve the right, at our sole discretion, to modify or replace these
+ Terms at any time. If a revision is material, we will try to provide at
+ least 30 days' notice prior to any new terms taking effect. What constitutes
+ a material change will be determined at our sole discretion.
+
+
Contact Us
+
+ If you have any questions about these Terms, please
+ contact us.
+
+
diff --git a/libs/common/src/constants/terms-condtions.ts b/libs/common/src/constants/terms-condtions.ts
new file mode 100644
index 0000000..b0ba0af
--- /dev/null
+++ b/libs/common/src/constants/terms-condtions.ts
@@ -0,0 +1,7 @@
+export const termsAndConditionsData = {
+ lastUpdated: '25/01/2025',
+ websiteUrl: 'https://www.Syncrow.ae',
+ mobileApp: 'Syncrow Mobile App',
+ companyName: 'Syncrow',
+ contactEmail: 'contact@Syncrow.ae',
+};
diff --git a/src/app.module.ts b/src/app.module.ts
index fe656ff..d61ac4c 100644
--- a/src/app.module.ts
+++ b/src/app.module.ts
@@ -26,6 +26,7 @@ import { SpaceModelModule } from './space-model';
import { InviteUserModule } from './invite-user/invite-user.module';
import { PermissionModule } from './permission/permission.module';
import { RoleModule } from './role/role.module';
+import { TermsConditionsModule } from './terms-conditions/terms-conditions.module';
@Module({
imports: [
ConfigModule.forRoot({
@@ -55,6 +56,7 @@ import { RoleModule } from './role/role.module';
ProjectModule,
PermissionModule,
RoleModule,
+ TermsConditionsModule,
],
providers: [
{
diff --git a/src/terms-conditions/controllers/index.ts b/src/terms-conditions/controllers/index.ts
new file mode 100644
index 0000000..6d48cce
--- /dev/null
+++ b/src/terms-conditions/controllers/index.ts
@@ -0,0 +1 @@
+export * from './terms-conditions.controller';
diff --git a/src/terms-conditions/controllers/terms-conditions.controller.ts b/src/terms-conditions/controllers/terms-conditions.controller.ts
new file mode 100644
index 0000000..52849ae
--- /dev/null
+++ b/src/terms-conditions/controllers/terms-conditions.controller.ts
@@ -0,0 +1,32 @@
+import { Controller, Get, HttpStatus } from '@nestjs/common';
+import { ApiOperation, ApiTags } from '@nestjs/swagger';
+import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
+import { ControllerRoute } from '@app/common/constants/controller-route'; // Assuming this is where the routes are defined
+import { TermsAndConditionsService } from '../services';
+
+@ApiTags('Terms & Conditions Module')
+@Controller({
+ version: EnableDisableStatusEnum.ENABLED,
+ path: ControllerRoute.TERMS_AND_CONDITIONS.ROUTE, // use the static route constant
+})
+export class TermsConditionsController {
+ constructor(
+ private readonly termsAndConditionsService: TermsAndConditionsService,
+ ) {}
+
+ @Get()
+ @ApiOperation({
+ summary: ControllerRoute.TERMS_AND_CONDITIONS.ACTIONS.FETCH_TERMS_SUMMARY,
+ description:
+ ControllerRoute.TERMS_AND_CONDITIONS.ACTIONS.FETCH_TERMS_DESCRIPTION,
+ })
+ async fetchTermsAndConditions() {
+ const htmlContent =
+ await this.termsAndConditionsService.fetchTermsAndConditions();
+ return {
+ statusCode: HttpStatus.OK,
+ message: 'Terms and conditions fetched successfully',
+ data: htmlContent,
+ };
+ }
+}
diff --git a/src/terms-conditions/services/index.ts b/src/terms-conditions/services/index.ts
new file mode 100644
index 0000000..09d3783
--- /dev/null
+++ b/src/terms-conditions/services/index.ts
@@ -0,0 +1 @@
+export * from './terms-conditions.service';
diff --git a/src/terms-conditions/services/terms-conditions.service.ts b/src/terms-conditions/services/terms-conditions.service.ts
new file mode 100644
index 0000000..c8adf0f
--- /dev/null
+++ b/src/terms-conditions/services/terms-conditions.service.ts
@@ -0,0 +1,38 @@
+import { termsAndConditionsData } from '@app/common/constants/terms-condtions';
+import { Injectable } from '@nestjs/common';
+import * as fs from 'fs';
+import * as path from 'path';
+
+@Injectable()
+export class TermsAndConditionsService {
+ async fetchTermsAndConditions(): Promise