src/blog/blog.controller.ts
blog
Methods |
createObjectCategory | ||||||
createObjectCategory(modelBlog: any)
|
||||||
Defined in src/blog/blog.controller.ts:140
|
||||||
Parameters :
Returns :
any
|
deleteBlog | ||||||
deleteBlog(params: IsParameterWithIdOfTable)
|
||||||
Decorators :
@Delete(':id')
|
||||||
Defined in src/blog/blog.controller.ts:158
|
||||||
Parameters :
Returns :
any
|
getBlog |
getBlog()
|
Decorators :
@Get()
|
Defined in src/blog/blog.controller.ts:62
|
Returns :
any
|
getBlogByCategoryPublic | ||||||
getBlogByCategoryPublic(params: any)
|
||||||
Decorators :
@Public()
|
||||||
Defined in src/blog/blog.controller.ts:56
|
||||||
Parameters :
Returns :
any
|
Async getBlogByIdOrSlug | ||||||
getBlogByIdOrSlug(res, params)
|
||||||
Decorators :
@Public()
|
||||||
Defined in src/blog/blog.controller.ts:77
|
||||||
Parameters :
Returns :
Promise<any>
|
getBlogPublicated |
getBlogPublicated()
|
Decorators :
@Public()
|
Defined in src/blog/blog.controller.ts:69
|
Returns :
any
|
getLastestBlog |
getLastestBlog()
|
Decorators :
@Public()
|
Defined in src/blog/blog.controller.ts:116
|
Returns :
any
|
Async getMostReadBlog |
getMostReadBlog()
|
Decorators :
@Public()
|
Defined in src/blog/blog.controller.ts:34
|
Returns :
unknown
|
saveBlog | ||||||
saveBlog(modelBlog: BlogValidation)
|
||||||
Decorators :
@UseInterceptors(undefined)
|
||||||
Defined in src/blog/blog.controller.ts:124
|
||||||
Parameters :
Returns :
any
|
updateBlog | |||||||||
updateBlog(modelBlog: BlogValidation, params: IsParameterWithIdOfTable)
|
|||||||||
Decorators :
@UseInterceptors(undefined)
|
|||||||||
Defined in src/blog/blog.controller.ts:133
|
|||||||||
Parameters :
Returns :
any
|
import { Body, Controller, Get, Param, Post, Put, Req, UseInterceptors, Delete, Res, HttpStatus, NotFoundException } from '@nestjs/common';
import { BlogService } from './blog.service';
import { FileInterceptor } from '@nestjs/platform-express';
import { BlogValidation } from 'src/database/validation/blog-validation';
import { IsParameterWithIdOfTable } from 'src/database/validation/parameter-validation';
import { Public } from 'src/auth/auth.controller';
import { ExceptionErrorMessage } from 'src/validation/exception-error';
import { analytics } from 'src/utils/utils';
import { response } from 'express';
import { SkipThrottle } from '@nestjs/throttler';
//import { propertyId } from 'src/utils/constante';
//import { convertAnaliticsFormat, getYearFormat } from 'src/utils/utils';
@SkipThrottle()
@Controller('blog')
export class BlogController {
constructor(private blogService:BlogService){}
//Exponer punto para el listado de todas los Blogs
/*@Public()
@Get('list')
getBlogPublic():any{
return this.blogService.findAllBlogs();
}*/
//Exponer punto para el listado de los blogs mas vistos segun las analiticas
@Public()
@Get('popular')
async getMostReadBlog(){
try {
let iteration = 1, reponseAnalitics = [], isValid = false
while(iteration<4){
reponseAnalitics = await analytics(iteration);
if(reponseAnalitics.length>=4){
isValid = true
break;
}
iteration++
}
reponseAnalitics = reponseAnalitics.map(obj => obj.path.replace('/blog/', ''))
return isValid ? this.blogService.findAllBlogsAnalitics(reponseAnalitics) : [] ;
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Exponer punto para el listado de los blogs por categoria
@Public()
@Get('category/:slug')
getBlogByCategoryPublic(@Param() params:any):any{
return this.blogService.findByCategory(params.slug);
}
//Exponer punto para el listado de todas los Blogs
@Get()
getBlog():any{
return this.blogService.findAllBlogs();
}
//Exponer punto para el listado de todas los Blogs
@Public()
@Get('publish')
getBlogPublicated():any{
return this.blogService.findAllBlogsPublicated();
}
//Exponer punto para el listado de un blog por su id o slug
@Public()
@Get('search/:id')
async getBlogByIdOrSlug(@Res() res, @Param() params):Promise<any>{
try {
const isNumeric = n => !isNaN(n);
let parameter = { name:"", value:params.id}
isNumeric(params.id) ? parameter.name = "id": parameter.name = "slug";
const blog = await this.blogService.findlByIdOrSlug(parameter);
if(blog){
console.log("1")
const slugs = await this.blogService.getListBlogSlug();
const index = slugs.findIndex(object => {
return object.id === blog.id ;
});
const prev = index > 0 ? slugs[index-1]:[];
const next = index < slugs.length-1? slugs[index+1]:[];
const result = Object.assign(blog, {prev}, {next})
res.status(HttpStatus.OK).json(result).send();
//return result;
}
else{
res.status(HttpStatus.NOT_FOUND).send();
}
} catch (error) {
console.log(error)
ExceptionErrorMessage(error);
}
}
//Exponer punto para los 3 ultimos blog
@Public()
@Get('last')
getLastestBlog():any{
return this.blogService.findlastestBlogs();
}
//Exponer punto guardar blogs
@UseInterceptors(FileInterceptor(''))
@Post()
saveBlog(@Body() modelBlog:BlogValidation):any {
const [blogModel, blogCategoryDetail] = this.createObjectCategory(modelBlog)
return this.blogService.saveBlog(blogModel,blogCategoryDetail);
}
//Exponer punto para actualizar blog
@UseInterceptors(FileInterceptor(''))
@Put(':id')
updateBlog(@Body() modelBlog:BlogValidation, @Param() params:IsParameterWithIdOfTable ):any{
const [blogModel, blogCategoryDetail] = this.createObjectCategory(modelBlog)
return this.blogService.updateBlog(params.id, blogModel, blogCategoryDetail);
}
createObjectCategory(modelBlog:any):any{
try {
let blogCategoryDetail = [];
modelBlog.categories.forEach((element) => {
const blogCategory = { categoryId:element };
blogCategoryDetail.push(blogCategory);
});
delete modelBlog.categories;
return [modelBlog, blogCategoryDetail];
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Exponer punto para borrar un blog mediante su id
@Delete(':id')
deleteBlog(@Param() params:IsParameterWithIdOfTable){
return this.blogService.deleteBlog(params.id);
}
}