Skip to content

Commit

Permalink
feat: added functionality for updating testimonial
Browse files Browse the repository at this point in the history
  • Loading branch information
Asin-Junior-Honore committed Aug 14, 2024
1 parent 5b693a8 commit fc886dd
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 117 deletions.
8 changes: 0 additions & 8 deletions src/helpers/language.decorator.ts

This file was deleted.

34 changes: 11 additions & 23 deletions src/modules/help-center/help-center.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import {
} from './dto/help-center.response.dto';
import { SuperAdminGuard } from '../../guards/super-admin.guard';
import { User } from '../user/entities/user.entity';
import { Language } from '../../helpers/language.decorator';

@ApiTags('help-center')
@Controller('help-center')
Expand All @@ -43,31 +42,27 @@ export class HelpCenterController {
@ApiResponse({ status: 400, description: 'This question already exists.' })
async create(
@Body() createHelpCenterDto: CreateHelpCenterDto,
@Req() req: { user: User },
@Language() language: string
@Req() req: { user: User }
): Promise<HelpCenterSingleInstancResponseType> {
const user: User = req.user;
return this.helpCenterService.create(createHelpCenterDto, user, language);
return this.helpCenterService.create(createHelpCenterDto, user);
}

@skipAuth()
@Get('topics')
@ApiOperation({ summary: 'Get all help center topics' })
@ApiResponse({ status: 200, description: 'The found records' })
async findAll(@Language() language: string): Promise<HelpCenter[]> {
return this.helpCenterService.findAll(language);
async findAll(): Promise<HelpCenter[]> {
return this.helpCenterService.findAll();
}

@skipAuth()
@Get('topics/:id')
@ApiOperation({ summary: 'Get a help center topic by ID' })
@ApiResponse({ status: 200, description: 'The found record' })
@ApiResponse({ status: 404, description: 'Topic not found' })
async findOne(
@Param() params: GetHelpCenterDto,
@Language() language: string
): Promise<HelpCenterSingleInstancResponseType> {
const helpCenter = await this.helpCenterService.findOne(params.id, language);
async findOne(@Param() params: GetHelpCenterDto): Promise<HelpCenterSingleInstancResponseType> {
const helpCenter = await this.helpCenterService.findOne(params.id);
if (!helpCenter) {
throw new NotFoundException(`Help center topic with ID ${params.id} not found`);
}
Expand All @@ -79,11 +74,8 @@ export class HelpCenterController {
@ApiOperation({ summary: 'Search help center topics' })
@ApiResponse({ status: 200, description: 'The found records' })
@ApiResponse({ status: 422, description: 'Invalid search criteria.' })
async search(
@Query() query: SearchHelpCenterDto,
@Language() language: string
): Promise<HelpCenterMultipleInstancResponseType> {
return this.helpCenterService.search(query, language);
async search(@Query() query: SearchHelpCenterDto): Promise<HelpCenterMultipleInstancResponseType> {
return this.helpCenterService.search(query);
}

@ApiBearerAuth()
Expand All @@ -94,13 +86,9 @@ export class HelpCenterController {
@ApiResponse({ status: 403, description: 'Access denied, only authorized users can access this endpoint' })
@ApiResponse({ status: 404, description: 'Topic not found, please check and try again' })
@ApiResponse({ status: 500, description: 'Internal Server Error' })
async update(
@Param('id') id: string,
@Body() updateHelpCenterDto: UpdateHelpCenterDto,
@Language() language: string
) {
async update(@Param('id') id: string, @Body() updateHelpCenterDto: UpdateHelpCenterDto) {
try {
const updatedHelpCenter = await this.helpCenterService.updateTopic(id, updateHelpCenterDto, language);
const updatedHelpCenter = await this.helpCenterService.updateTopic(id, updateHelpCenterDto);
return {
success: true,
message: 'Topic updated successfully',
Expand Down Expand Up @@ -202,4 +190,4 @@ export class HelpCenterController {
}
}
}
}
}
75 changes: 11 additions & 64 deletions src/modules/help-center/help-center.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { SearchHelpCenterDto } from './dto/search-help-center.dto';
import { REQUEST_SUCCESSFUL, QUESTION_ALREADY_EXISTS, USER_NOT_FOUND } from '../../helpers/SystemMessages';
import { CustomHttpException } from '../../helpers/custom-http-filter';
import { User } from '../user/entities/user.entity';
import { translateFields } from '../../translation/translation.service';

@Injectable()
export class HelpCenterService {
Expand All @@ -19,7 +18,7 @@ export class HelpCenterService {
private userRepository: Repository<User>
) {}

async create(createHelpCenterDto: CreateHelpCenterDto, user: User, language?: string) {
async create(createHelpCenterDto: CreateHelpCenterDto, user: User) {
const existingTopic = await this.helpCenterRepository.findOne({
where: { title: createHelpCenterDto.title },
});
Expand All @@ -43,65 +42,36 @@ export class HelpCenterService {
});
const newEntity = await this.helpCenterRepository.save(helpCenter);

const { translatedTitle, translatedContent } = await translateFields(newEntity.title, newEntity.content, language);

return {
status_code: HttpStatus.CREATED,
message: 'Request successful',
data: {
...newEntity,
title: translatedTitle,
content: translatedContent,
},
data: newEntity,
};
}

async findAll(language?: string): Promise<any> {
async findAll(): Promise<any> {
const centres = await this.helpCenterRepository.find();

const translatedCentres = await Promise.all(
centres.map(async centre => {
const { translatedTitle, translatedContent } = await translateFields(centre.title, centre.content, language);

return {
...centre,
title: translatedTitle,
content: translatedContent,
};
})
);

return {
data: translatedCentres,
data: centres,
status_code: HttpStatus.OK,
message: 'Request completed successfully',
message: REQUEST_SUCCESSFUL,
};
}

async findOne(id: string, language?: string) {
async findOne(id: string) {
const helpCenter = await this.helpCenterRepository.findOne({ where: { id } });
if (!helpCenter) {
throw new NotFoundException(`Help center topic with ID ${id} not found`);
}

const { translatedTitle, translatedContent } = await translateFields(
helpCenter.title,
helpCenter.content,
language
);

return {
status_code: HttpStatus.OK,
message: REQUEST_SUCCESSFUL,
data: {
...helpCenter,
title: translatedTitle,
content: translatedContent,
},
data: helpCenter,
};
}

async search(criteria: SearchHelpCenterDto, language?: string) {
async search(criteria: SearchHelpCenterDto) {
const queryBuilder = this.helpCenterRepository.createQueryBuilder('help_center');
if (criteria.title) {
queryBuilder.andWhere('help_center.title LIKE :title', { title: `%${criteria.title}%` });
Expand All @@ -110,27 +80,14 @@ export class HelpCenterService {
queryBuilder.andWhere('help_center.content LIKE :content', { content: `%${criteria.content}%` });
}
const query = await queryBuilder.getMany();

const translatedQuery = await Promise.all(
query.map(async centre => {
const { translatedTitle, translatedContent } = await translateFields(centre.title, centre.content, language);

return {
...centre,
title: translatedTitle,
content: translatedContent,
};
})
);

return {
status_code: HttpStatus.OK,
message: REQUEST_SUCCESSFUL,
data: translatedQuery,
data: query,
};
}

async updateTopic(id: string, updateHelpCenterDto: UpdateHelpCenterDto, language?: string) {
async updateTopic(id: string, updateHelpCenterDto: UpdateHelpCenterDto) {
const existingTopic = await this.helpCenterRepository.findOneBy({ id });
if (!existingTopic) {
throw new HttpException(
Expand All @@ -146,20 +103,10 @@ export class HelpCenterService {
await this.helpCenterRepository.update(id, updateHelpCenterDto);
const updatedTopic = await this.helpCenterRepository.findOneBy({ id });

const { translatedTitle, translatedContent } = await translateFields(
updatedTopic.title,
updatedTopic.content,
language
);

return {
status_code: HttpStatus.OK,
message: REQUEST_SUCCESSFUL,
data: {
...updatedTopic,
title: translatedTitle,
content: translatedContent,
},
data: updatedTopic,
};
}

Expand Down
22 changes: 0 additions & 22 deletions src/translation/translation.service.ts

This file was deleted.

0 comments on commit fc886dd

Please sign in to comment.