diff --git a/src/rate-plans/graphql/examples/createRatePlan.txt b/src/rate-plans/graphql/examples/createRatePlan.txt new file mode 100644 index 0000000..9585796 --- /dev/null +++ b/src/rate-plans/graphql/examples/createRatePlan.txt @@ -0,0 +1,27 @@ +# Create a rate plan +mutation { + createRatePlan( + ratePlanObj:{ + name: "IOPA-278", + description: "plan for groupal annual subscriptions, until ten peoples", + versionId: 7822111, + versionPlan: "2.4", + status: "Published", + typePlan: "Annually - Groupal Subscribers", + subscriptionCharge: 1.1, + numberOfTiers: 3, +} + ) { + id + name + description + versionId + versionPlan + status + typePlan + subscriptionCharge + numberOfTiers + creationDate + updateDate + } +} \ No newline at end of file diff --git a/src/rate-plans/graphql/examples/getAllRatePlans.txt b/src/rate-plans/graphql/examples/getAllRatePlans.txt new file mode 100644 index 0000000..f069b5a --- /dev/null +++ b/src/rate-plans/graphql/examples/getAllRatePlans.txt @@ -0,0 +1,16 @@ +# Get All Rate Plans +query { + getAllRatePlans(pageNro: 0, pageSize: 100, orderBy: "name", orderAt: "asc") { + id + name + description + versionId + versionPlan + status + typePlan + subscriptionCharge + numberOfTiers + creationDate + updateDate + } +} diff --git a/src/rate-plans/graphql/examples/getByIdRatePlans.txt b/src/rate-plans/graphql/examples/getByIdRatePlans.txt new file mode 100644 index 0000000..d606730 --- /dev/null +++ b/src/rate-plans/graphql/examples/getByIdRatePlans.txt @@ -0,0 +1,16 @@ +# get by id Rate Plan +query { + getByIdRatePlans(inputId: 2) { + id + name + description + versionId + versionPlan + status + typePlan + subscriptionCharge + numberOfTiers + creationDate + updateDate + } +} diff --git a/src/rate-plans/graphql/examples/updateRatePlan.txt b/src/rate-plans/graphql/examples/updateRatePlan.txt new file mode 100644 index 0000000..a5504ca --- /dev/null +++ b/src/rate-plans/graphql/examples/updateRatePlan.txt @@ -0,0 +1,25 @@ +# Update a Rate Plan +mutation { + updateRatePlan( + id : 2, + ratePlanObj:{ + name: "IOPA-27822", + description: "plan for groupal annual subscriptions, until ten peoples", + versionId: 7822111, + versionPlan: "2.4", + status: "Published", + typePlan: "Annually - Groupal Subscribers", + subscriptionCharge: 1.1, + numberOfTiers: 3, +} + ) { + name + description + versionId + versionPlan + status + typePlan + subscriptionCharge + numberOfTiers + } +} \ No newline at end of file diff --git a/src/rate-plans/graphql/mutations.txt b/src/rate-plans/graphql/mutations.txt deleted file mode 100644 index bdc9d1c..0000000 --- a/src/rate-plans/graphql/mutations.txt +++ /dev/null @@ -1,56 +0,0 @@ -# Add a rate plan -mutation { - createRatePlan( - ratePlanObj:{ - name: "IOPA-278", - description: "plan for groupal annual subscriptions, until ten peoples", - versionId: 7822111, - versionPlan: "2.4", - status: "Published", - typePlan: "Annually - Groupal Subscribers", - subscriptionCharge: 1.1, - numberOfTiers: 3, -} - ) { - id - name - description - versionId - versionPlan - status - typePlan - subscriptionCharge - numberOfTiers - creationDate - updateDate - } -} - -# Update a rate plan -mutation { - updateRatePlan( - id:8, - ratePlanObj:{ - name: "IOPA-279", - description: "plan for groupal annual subscriptions, until ten peoples", - versionId: 7822114, - versionPlan: "2.5", - status: "Published", - typePlan: "Annually - Groupal Subscribers", - subscriptionCharge: 1.2, - numberOfTiers: 3, -} - ) { - id - name - description - versionId - versionPlan - status - typePlan - subscriptionCharge - numberOfTiers - creationDate - updateDate - } -} \ No newline at end of file diff --git a/src/rate-plans/graphql/queries.txt b/src/rate-plans/graphql/queries.txt deleted file mode 100644 index 1a9e8d4..0000000 --- a/src/rate-plans/graphql/queries.txt +++ /dev/null @@ -1,44 +0,0 @@ - -# Get All paginated list -query { - getAllRatePlans( - pageNro: 0, - pageSize: 100, - orderBy: "id", - orderAt: "asc" - ) { - id - name - description - versionId - versionPlan - status - typePlan - subscriptionCharge - numberOfTiers - creationDate - updateDate - } -} - -# Get by id -query { - getByIdRatePlans( - inputId: 1, - ) { - id - name - description - versionId - versionPlan - status - typePlan - subscriptionCharge - numberOfTiers - creationDate - updateDate - } -} - - - diff --git a/src/rate-plans/rate-plans.module.ts b/src/rate-plans/rate-plans.module.ts index bd8a909..f0fb71b 100644 --- a/src/rate-plans/rate-plans.module.ts +++ b/src/rate-plans/rate-plans.module.ts @@ -1,16 +1,35 @@ //External import { Module } from '@nestjs/common'; -//Service -import { RatePlansService } from './rate-plans.service'; -//Resolvers -import { RatePlansResolver } from './rate-plans.resolver'; //Modules import { DatabaseModule } from 'src/database/database.module'; //Providers import { RatePlansProviders } from './rate-plans.providers'; +import { CreateRatePlansService } from './services/create.service'; +import { CreateRatePlansResolver } from './resolvers/create.resolver'; +import { UpdateRatePlansService } from './services/update.service'; +import { UpdateRatePlansResolver } from './resolvers/update.resolver'; +import { GetAllRatePlansService } from './services/get-all.service'; +import { GetAllRatePlansResolver } from './resolvers/get-all.resolver'; +import { GetByIdRatePlansService } from './services/get-by-id.service'; +import { GetByIdRatePlansResolver } from './resolvers/get-by-id.resolver'; @Module({ imports: [DatabaseModule], - providers: [...RatePlansProviders, RatePlansService, RatePlansResolver], + providers: [ + //Providers + ...RatePlansProviders, + //CreateRatePlan + CreateRatePlansService, + CreateRatePlansResolver, + //UpdateRatePlan + UpdateRatePlansService, + UpdateRatePlansResolver, + //GetAllRatePlan + GetAllRatePlansService, + GetAllRatePlansResolver, + //GetByIdRatePlan + GetByIdRatePlansService, + GetByIdRatePlansResolver, + ], }) export class RatePlansModule {} diff --git a/src/rate-plans/rate-plans.resolver.ts b/src/rate-plans/rate-plans.resolver.ts deleted file mode 100644 index 93e5493..0000000 --- a/src/rate-plans/rate-plans.resolver.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* eslint-disable prettier/prettier */ -//External -import { Query, Resolver, Args, Int, Mutation } from '@nestjs/graphql'; -import { ApiOperation, ApiTags } from '@nestjs/swagger'; -import { Get, Patch, Post } from '@nestjs/common'; -//Service -import { RatePlansService } from './rate-plans.service'; -//Models -import { RatePlans } from './models/rate-plans.entity'; -import { RatePlansDTO } from './models/rate-plans.dto'; -//const-vars -let msgResponse: string; -let msgLog: string; - -//Check - -@Resolver() -@ApiTags('RatePlansResolver') -export class RatePlansResolver { - constructor(private ratePlansService: RatePlansService) {} - - /** - * @description Controller to add a rate plan - * @param {RatePlansDTO} ratePlanObj RatePlansDTO type - * @returns a response with the rate plan object and status code - */ - @Mutation(() => RatePlans, { name: 'createRatePlan' }) - @Post('/') - @ApiOperation({ summary: 'Add a rate plans' }) - async createRatePlan( - @Args({ name: 'ratePlanObj' }) ratePlanObj: RatePlansDTO, - ): Promise { - try { - msgResponse = null; - msgLog = null; - - // --- start with database operations --- - return await this.ratePlansService.createRatePlan(ratePlanObj); - // --- end with database operations --- - } catch (error) { - msgResponse = 'ERROR in createRatePlan function resolver'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Controller to update a rate plan - * @param {number} id number type - * @param {RatePlansDTO} ratePlanObj RatePlansDTO type - * @returns a response with the rate plan object and status code - */ - @Mutation(() => RatePlans, { name: 'updateRatePlan' }) - @Patch('/:id') - @ApiOperation({ summary: 'Update a rate plans' }) - async updateRatePlan( - @Args({ name: 'id' }) id: number, - @Args({ name: 'ratePlanObj' }) ratePlanObj: RatePlansDTO, - ): Promise { - try { - msgResponse = null; - msgLog = null; - - //--- start with database operations ---- - return await this.ratePlansService.updateRatePlan(id, ratePlanObj); - //--- end with database operations ---- - } catch (error) { - msgResponse = 'ERROR in updateRatePlan function resolver'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Controller to get a paginated listing of all rate plans - * @param {number} pageNro number type - * @param {number} pageSize number type - * @param {string} orderBy string type - * @param {string} orderAt string type - * @returns a response with the rate plans paginated list and status code - */ - @Get('/list') - @ApiOperation({ summary: 'Get all paginated rate plans' }) - @Query(() => [RatePlans], { name: 'getAllRatePlans' }) - async getAllRatePlans( - @Args({ name: 'pageNro', type: () => Int }) pageNro: number, - @Args({ name: 'pageSize', type: () => Int }) pageSize: number, - @Args({ name: 'orderBy' }) orderBy: string, - @Args({ name: 'orderAt' }) orderAt: string, - ): Promise { - try { - msgResponse = null; - msgLog = null; - - //--- start with database operations ---- - return await this.ratePlansService.getAllRatePlans( - pageNro, - pageSize, - orderBy, - orderAt, - ); - //--- end with database operations ---- - } catch (error) { - msgResponse = 'ERROR in getAllRatePlans function resolver'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Controller to get a rate plan according to your id - - * @param {number} inputId number type - * @returns a response with the rate plan and status code - */ - @Get('/id/:inputId') - @ApiOperation({ summary: 'Get a rate plan according to your id' }) - @Query(() => RatePlans, { name: 'getByIdRatePlans' }) - async getByIdRatePlans( - @Args({ name: 'inputId', type: () => Int }) inputId: number, - ): Promise { - try { - msgResponse = null; - msgLog = null; - - //--- start with database operations ---- - return await this.ratePlansService.getByIdRatePlans(inputId); - //--- end with database operations ---- - } catch (error) { - msgResponse = 'ERROR in getByIdRatePlans function resolver'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } -} diff --git a/src/rate-plans/rate-plans.service.ts b/src/rate-plans/rate-plans.service.ts deleted file mode 100644 index ed38aa4..0000000 --- a/src/rate-plans/rate-plans.service.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable prettier/prettier */ -//External -import { Injectable, Inject } from '@nestjs/common'; -import { Repository } from 'typeorm'; -//Models -import { RatePlans } from './models/rate-plans.entity'; -import { RatePlansDTO } from './models/rate-plans.dto'; -//Enums -import { paginationNameValueError } from './enums/pagination/errors'; -//Helpers -import { validateObject } from './helpers/models/validateObject'; -import { checkOrderAt, checkOrderBy } from './helpers/pagination/rate-plans'; -//const -const ORDER_BY_NAME_VALUE_ERROR = - paginationNameValueError.ORDER_BY_NAME_VALUE_ERROR; -const ORDER_AT_NAME_VALUE_ERROR = - paginationNameValueError.ORDER_AT_NAME_VALUE_ERROR; -//vars -let checkObj: any; -let ratePlansList: RatePlans[]; -let ratePlanObj: RatePlans; -let newRatePlan: any; -let updateRatePlan: any; -let msgResponse: string; -let msgLog: string; -//Pagination -let pageSize: number; -let pageNro: number; -let orderBy: string; -let orderAt: string; -/** - * @description Rate plants service for all crud operations - * @param {Object} event Object type - */ -@Injectable() -export class RatePlansService { - constructor( - @Inject('RATE_PLANS_REPOSITORY') - private ratePlansRepository: Repository, - ) {} - - /** - * @description Service to create and save a rate plan - * @param {RatePlansDTO} ratePlan RatePlansDTO type - * @returns an object with the ratePlan - */ - async createRatePlan(ratePlan: RatePlansDTO): Promise { - try { - msgResponse = null; - msgLog = null; - - //-- start with validation object --- - checkObj = await validateObject(ratePlan); - if (checkObj.length) { - return checkObj; - } - //-- end with validation object --- - newRatePlan = this.ratePlansRepository.create(ratePlan); - - return await this.ratePlansRepository.save(newRatePlan); - } catch (error) { - msgResponse = 'ERROR in createRatePlan function service'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Service to update and save a rate plan - * @param {number} inputId number type - * @param {RatePlansDTO} ratePlan RatePlansDTO type - * @returns an object with the ratePlan - */ - async updateRatePlan( - inputId: number, - ratePlan: RatePlansDTO, - ): Promise { - try { - msgResponse = null; - msgLog = null; - - //-- start with validation object --- - checkObj = await validateObject(ratePlan); - if (checkObj.length) { - return checkObj; - } - //-- end with validation object --- - - //-- start with database operation --- - updateRatePlan = await this.ratePlansRepository.update(inputId, ratePlan); - - if (updateRatePlan != (null || undefined)) { - return await this.getByIdRatePlans(inputId); - } - //-- end with database operation --- - } catch (error) { - msgResponse = 'ERROR in updateRatePlan function service'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Service to get a paginated listing of all rate plans - * @param {number} pageNroParam number type - * @param {number} pageSizeParam number type - * @param {string} orderByParam string type - * @param {string} orderAtParam string type - * @returns an object with the products paginated list - */ - async getAllRatePlans( - pageNroParam: number, - pageSizeParam: number, - orderByParam: string, - orderAtParam: string, - ): Promise { - try { - //pagination - pageSize = 20; - pageNro = 0; - orderBy = 'id'; - orderAt = 'ASC'; - msgResponse = null; - msgLog = null; - - //-- start with pagination --- - pageNro = pageNroParam != (null && undefined) ? pageNroParam : pageNro; - pageSize = - pageSizeParam != (null && undefined) ? pageSizeParam : pageSize; - orderBy = orderByParam != (null && undefined) ? orderByParam : orderBy; - orderAt = orderAtParam != (null && undefined) ? orderAtParam : orderAt; - - orderBy = await checkOrderBy(orderBy); - - if (orderBy == (null || undefined)) { - return ORDER_BY_NAME_VALUE_ERROR; - } - - orderAt = await checkOrderAt(orderAt); - - if (orderAt == (undefined || null)) { - return ORDER_AT_NAME_VALUE_ERROR; - } - - //-- end with pagination --- - - // --- start with database operations --- - ratePlansList = await this.ratePlansRepository.find({ - order: { - [orderBy]: orderAt, - }, - skip: pageNro, - take: pageSize, - }); - //--- end with database operations --- - - return ratePlansList; - } catch (error) { - msgResponse = 'ERROR in getAllRatePlans function service'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } - - /** - * @description Service to get a rate plans - * @param {number} inputId number type - * @returns an object with the products paginated list - */ - async getByIdRatePlans(inputId: number): Promise { - try { - msgResponse = null; - msgLog = null; - - // --- start with database operations --- - inputId = (inputId == (null || undefined || 0) ? 1 : inputId) || 1; - - ratePlanObj = await this.ratePlansRepository.findOne({ - where: { - id: inputId, - }, - }); - //--- end with database operations --- - - return ratePlanObj; - } catch (error) { - msgResponse = 'ERROR in getByIdRatePlans function service'; - msgLog = msgResponse + `Caused by ${error}`; - console.log(msgLog); - return msgResponse; - } - } -} diff --git a/src/rate-plans/resolvers/create.resolver.ts b/src/rate-plans/resolvers/create.resolver.ts new file mode 100644 index 0000000..9b85863 --- /dev/null +++ b/src/rate-plans/resolvers/create.resolver.ts @@ -0,0 +1,47 @@ +/* eslint-disable prettier/prettier */ +//External +import { Resolver, Args, Mutation } from '@nestjs/graphql'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Post } from '@nestjs/common'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +import { RatePlansDTO } from '.././models/rate-plans.dto'; +//Service +import { CreateRatePlansService } from '.././services/create.service'; +//const-vars +let msgResponse: string; +let msgLog: string; + +//Check +@Resolver() +@ApiTags('CreateRatePlansResolver') +export class CreateRatePlansResolver { + constructor(private createPlansService: CreateRatePlansService) {} + + /** + * @description function for add a rate plan to database + * @param {RatePlansDTO} ratePlanObj RatePlansDTO type + * @returns a response with the rate plan object and status code + */ + @Mutation(() => RatePlans, { name: 'createRatePlan' }) + @Post('/') + @ApiOperation({ summary: 'Add a rate plans' }) + async createRatePlan( + @Args({ name: 'ratePlanObj' }) ratePlanObj: RatePlansDTO, + ): Promise { + try { + msgResponse = null; + msgLog = null; + + // --- start with database operations --- + return await this.createPlansService.create(ratePlanObj); + // --- end with database operations --- + } catch (error) { + msgResponse = + 'ERROR in createRatePlan function for CreateRatePlansResolver class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/resolvers/get-all.resolver.ts b/src/rate-plans/resolvers/get-all.resolver.ts new file mode 100644 index 0000000..e3c8501 --- /dev/null +++ b/src/rate-plans/resolvers/get-all.resolver.ts @@ -0,0 +1,58 @@ +/* eslint-disable prettier/prettier */ +//External +import { Query, Resolver, Args, Int } from '@nestjs/graphql'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Get } from '@nestjs/common'; +//Service +import { GetAllRatePlansService } from '../services/get-all.service'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +//const-vars +let msgResponse: string; +let msgLog: string; + +//Check + +@Resolver() +@ApiTags('GetAllRatePlansResolver') +export class GetAllRatePlansResolver { + constructor(private getAllService: GetAllRatePlansService) {} + + /** + * @description Controller to get a paginated listing of all rate plans + * @param {number} pageNro number type + * @param {number} pageSize number type + * @param {string} orderBy string type + * @param {string} orderAt string type + * @returns a response with the rate plans paginated list and status code + */ + @Get('/list') + @ApiOperation({ summary: 'Get all paginated rate plans' }) + @Query(() => [RatePlans], { name: 'getAllRatePlans' }) + async getAllRatePlans( + @Args({ name: 'pageNro', type: () => Int }) pageNro: number, + @Args({ name: 'pageSize', type: () => Int }) pageSize: number, + @Args({ name: 'orderBy' }) orderBy: string, + @Args({ name: 'orderAt' }) orderAt: string, + ): Promise { + try { + msgResponse = null; + msgLog = null; + + //--- start with database operations ---- + return await this.getAllService.getAll( + pageNro, + pageSize, + orderBy, + orderAt, + ); + //--- end with database operations ---- + } catch (error) { + msgResponse = + 'ERROR in getAllRatePlans function for GetAllRatePlansResolver class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/resolvers/get-by-id.resolver.ts b/src/rate-plans/resolvers/get-by-id.resolver.ts new file mode 100644 index 0000000..4a63c49 --- /dev/null +++ b/src/rate-plans/resolvers/get-by-id.resolver.ts @@ -0,0 +1,47 @@ +/* eslint-disable prettier/prettier */ +//External +import { Query, Resolver, Args, Int } from '@nestjs/graphql'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Get } from '@nestjs/common'; +//Service +import { GetByIdRatePlansService } from '../services/get-by-id.service'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +//const-vars +let msgResponse: string; +let msgLog: string; + +//Check + +@Resolver() +@ApiTags('GetByIdRatePlansResolver') +export class GetByIdRatePlansResolver { + constructor(private getByIdRatePlansService: GetByIdRatePlansService) {} + + /** + * @description Controller to get a rate plan according to your id + + * @param {number} inputId number type + * @returns a response with the rate plan and status code + */ + @Get('/id/:inputId') + @ApiOperation({ summary: 'Get a rate plan according to your id' }) + @Query(() => RatePlans, { name: 'getByIdRatePlans' }) + async getByIdRatePlans( + @Args({ name: 'inputId', type: () => Int }) inputId: number, + ): Promise { + try { + msgResponse = null; + msgLog = null; + + //--- start with database operations ---- + return await this.getByIdRatePlansService.getById(inputId); + //--- end with database operations ---- + } catch (error) { + msgResponse = 'ERROR in getByIdRatePlans function resolver'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/resolvers/update.resolver.ts b/src/rate-plans/resolvers/update.resolver.ts new file mode 100644 index 0000000..52a6b47 --- /dev/null +++ b/src/rate-plans/resolvers/update.resolver.ts @@ -0,0 +1,47 @@ +/* eslint-disable prettier/prettier */ +//External +import { Resolver, Args, Mutation } from '@nestjs/graphql'; +import { ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Patch } from '@nestjs/common'; +//Service +import { UpdateRatePlansService } from '../services/update.service'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +import { RatePlansDTO } from '.././models/rate-plans.dto'; +//Vars +let msgResponse: string; +let msgLog: string; + +@Resolver() +@ApiTags('UpdateRatePlansResolver') +export class UpdateRatePlansResolver { + constructor(private updateRatePlansService: UpdateRatePlansService) {} + + /** + * @description Controller to update a rate plan + * @param {number} id number type + * @param {RatePlansDTO} ratePlanObj RatePlansDTO type + * @returns a response with the rate plan object and status code + */ + @Mutation(() => RatePlans, { name: 'updateRatePlan' }) + @Patch('/:id') + @ApiOperation({ summary: 'Update a rate plans' }) + async updateRatePlan( + @Args({ name: 'id' }) id: number, + @Args({ name: 'ratePlanObj' }) ratePlanObj: RatePlansDTO, + ): Promise { + try { + msgResponse = null; + msgLog = null; + + //--- start with database operations ---- + return await this.updateRatePlansService.update(id, ratePlanObj); + //--- end with database operations ---- + } catch (error) { + msgResponse = 'ERROR in updateRatePlan function resolver'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/services/create.service.ts b/src/rate-plans/services/create.service.ts new file mode 100644 index 0000000..dc1097d --- /dev/null +++ b/src/rate-plans/services/create.service.ts @@ -0,0 +1,54 @@ +/* eslint-disable prettier/prettier */ +//External +import { Injectable, Inject } from '@nestjs/common'; +import { Repository } from 'typeorm'; +//Models +import { RatePlans } from '../models/rate-plans.entity'; +import { RatePlansDTO } from '../models/rate-plans.dto'; +//Enums +//Helpers +import { validateObject } from '../helpers/models/validateObject'; +//Const-vars +let checkObj: any; +let newRatePlan: any; +let msgResponse: string; +let msgLog: string; + +/** + * @description Class service for create a rate plan + * @param {Object} event Object type + */ +@Injectable() +export class CreateRatePlansService { + constructor( + @Inject('RATE_PLANS_REPOSITORY') + private ratePlansRepository: Repository, + ) {} + + /** + * @description function to create and save a rate plan + * @param {RatePlansDTO} ratePlan RatePlansDTO type + * @returns an object with the ratePlan + */ + async create(ratePlan: RatePlansDTO): Promise { + try { + msgResponse = null; + msgLog = null; + + //-- start with validation object --- + checkObj = await validateObject(ratePlan); + if (checkObj.length) { + return checkObj; + } + //-- end with validation object --- + newRatePlan = this.ratePlansRepository.create(ratePlan); + + return await this.ratePlansRepository.save(newRatePlan); + } catch (error) { + msgResponse = 'ERROR in create function for CreateRatePlansService class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/services/get-all.service.ts b/src/rate-plans/services/get-all.service.ts new file mode 100644 index 0000000..881408a --- /dev/null +++ b/src/rate-plans/services/get-all.service.ts @@ -0,0 +1,100 @@ +/* eslint-disable prettier/prettier */ +//External +import { Injectable, Inject } from '@nestjs/common'; +import { Repository } from 'typeorm'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +//Enums +import { paginationNameValueError } from '.././enums/pagination/errors'; +//Helpers +import { checkOrderAt, checkOrderBy } from '.././helpers/pagination/rate-plans'; +//const +const ORDER_BY_NAME_VALUE_ERROR = + paginationNameValueError.ORDER_BY_NAME_VALUE_ERROR; +const ORDER_AT_NAME_VALUE_ERROR = + paginationNameValueError.ORDER_AT_NAME_VALUE_ERROR; +//vars +let ratePlansList: RatePlans[]; +let ratePlanObj: RatePlans; +let msgResponse: string; +let msgLog: string; +//Pagination +let pageSize: number; +let pageNro: number; +let orderBy: string; +let orderAt: string; +/** + * @description Rate plants service for all crud operations + * @param {Object} event Object type + */ +@Injectable() +export class GetAllRatePlansService { + constructor( + @Inject('RATE_PLANS_REPOSITORY') + private ratePlansRepository: Repository, + ) {} + + /** + * @description Service to get a paginated listing of all rate plans + * @param {number} pageNroParam number type + * @param {number} pageSizeParam number type + * @param {string} orderByParam string type + * @param {string} orderAtParam string type + * @returns an object with the products paginated list + */ + async getAll( + pageNroParam: number, + pageSizeParam: number, + orderByParam: string, + orderAtParam: string, + ): Promise { + try { + //pagination + pageSize = 20; + pageNro = 0; + orderBy = 'id'; + orderAt = 'ASC'; + msgResponse = null; + msgLog = null; + + //-- start with pagination --- + pageNro = pageNroParam != (null && undefined) ? pageNroParam : pageNro; + pageSize = + pageSizeParam != (null && undefined) ? pageSizeParam : pageSize; + orderBy = orderByParam != (null && undefined) ? orderByParam : orderBy; + orderAt = orderAtParam != (null && undefined) ? orderAtParam : orderAt; + + orderBy = await checkOrderBy(orderBy); + + if (orderBy == (null || undefined)) { + return ORDER_BY_NAME_VALUE_ERROR; + } + + orderAt = await checkOrderAt(orderAt); + + if (orderAt == (undefined || null)) { + return ORDER_AT_NAME_VALUE_ERROR; + } + + //-- end with pagination --- + + // --- start with database operations --- + ratePlansList = await this.ratePlansRepository.find({ + order: { + [orderBy]: orderAt, + }, + skip: pageNro, + take: pageSize, + }); + //--- end with database operations --- + + return ratePlansList; + } catch (error) { + msgResponse = + 'ERROR in get-all function for GetAllRatePlansService class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/services/get-by-id.service.ts b/src/rate-plans/services/get-by-id.service.ts new file mode 100644 index 0000000..69eaca5 --- /dev/null +++ b/src/rate-plans/services/get-by-id.service.ts @@ -0,0 +1,65 @@ +/* eslint-disable prettier/prettier */ +//External +import { Injectable, Inject } from '@nestjs/common'; +import { Repository } from 'typeorm'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +//Enums +import { paginationNameValueError } from '.././enums/pagination/errors'; +//Helpers +import { checkOrderAt, checkOrderBy } from '.././helpers/pagination/rate-plans'; +//const +const ORDER_BY_NAME_VALUE_ERROR = + paginationNameValueError.ORDER_BY_NAME_VALUE_ERROR; +const ORDER_AT_NAME_VALUE_ERROR = + paginationNameValueError.ORDER_AT_NAME_VALUE_ERROR; +//vars +let ratePlansList: RatePlans[]; +let ratePlanObj: RatePlans; +let msgResponse: string; +let msgLog: string; +//Pagination +let pageSize: number; +let pageNro: number; +let orderBy: string; +let orderAt: string; +/** + * @description Rate plants service for all crud operations + * @param {Object} event Object type + */ +@Injectable() +export class GetByIdRatePlansService { + constructor( + @Inject('RATE_PLANS_REPOSITORY') + private ratePlansRepository: Repository, + ) {} + + /** + * @description Service to get a rate plans + * @param {number} inputId number type + * @returns an object with the products paginated list + */ + async getById(inputId: number): Promise { + try { + msgResponse = null; + msgLog = null; + + // --- start with database operations --- + inputId = (inputId == (null || undefined || 0) ? 1 : inputId) || 1; + + ratePlanObj = await this.ratePlansRepository.findOne({ + where: { + id: inputId, + }, + }); + //--- end with database operations --- + + return ratePlanObj; + } catch (error) { + msgResponse = 'ERROR in getById function for GetByIdService class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +} diff --git a/src/rate-plans/services/update.service.ts b/src/rate-plans/services/update.service.ts new file mode 100644 index 0000000..677e52d --- /dev/null +++ b/src/rate-plans/services/update.service.ts @@ -0,0 +1,65 @@ +/* eslint-disable prettier/prettier */ +//External +import { Injectable, Inject } from '@nestjs/common'; +import { Repository } from 'typeorm'; +//Models +import { RatePlans } from '.././models/rate-plans.entity'; +import { RatePlansDTO } from '.././models/rate-plans.dto'; +//Helpers +import { validateObject } from '.././helpers/models/validateObject'; +//vars +let checkObj: any; +let updatedRatePlan: any; +let msgResponse: string; +let msgLog: string; +/** + * @description Rate plants service for all crud operations + * @param {Object} event Object type + */ +@Injectable() +export class UpdateRatePlansService { + constructor( + @Inject('RATE_PLANS_REPOSITORY') + private ratePlansRepository: Repository, + ) {} + + /** + * @description Service to update and save a rate plan + * @param {number} inputId number type + * @param {RatePlansDTO} ratePlan RatePlansDTO type + * @returns an object with the ratePlan + */ + async update( + inputId: number, + ratePlan: RatePlansDTO, + ): Promise { + try { + msgResponse = null; + msgLog = null; + + //-- start with validation object --- + checkObj = await validateObject(ratePlan); + if (checkObj.length) { + return checkObj; + } + //-- end with validation object --- + + //-- start with database operation --- + updatedRatePlan = await this.ratePlansRepository.update( + inputId, + ratePlan, + ); + + if (updatedRatePlan != (null || undefined)) { + return ratePlan; + } + + //-- end with database operation --- + } catch (error) { + msgResponse = 'ERROR in update function for UpdateRatePlansService class'; + msgLog = msgResponse + `Caused by ${error}`; + console.log(msgLog); + return msgResponse; + } + } +}