src/blog/blog.service.ts
Methods |
|
constructor(blogRp: Repository<BlogEntity>, blogCategoryRp: Repository<BlogCategoryDetailEntity>, categoryRp: Repository<CategoryEntity>, datasource: DataSource)
|
|||||||||||||||
Defined in src/blog/blog.service.ts:12
|
|||||||||||||||
Parameters :
|
Async deleteBlog | ||||||
deleteBlog(id: any)
|
||||||
Defined in src/blog/blog.service.ts:204
|
||||||
Parameters :
Returns :
unknown
|
Async findAllBlogs |
findAllBlogs()
|
Defined in src/blog/blog.service.ts:51
|
Returns :
unknown
|
Async findAllBlogsAnalitics | ||||
findAllBlogsAnalitics(slug)
|
||||
Defined in src/blog/blog.service.ts:20
|
||||
Parameters :
Returns :
unknown
|
Async findAllBlogsPublic |
findAllBlogsPublic()
|
Defined in src/blog/blog.service.ts:36
|
Returns :
unknown
|
Async findAllBlogsPublicated |
findAllBlogsPublicated()
|
Defined in src/blog/blog.service.ts:64
|
Returns :
unknown
|
Async findByCategory | ||||||
findByCategory(param: any)
|
||||||
Defined in src/blog/blog.service.ts:136
|
||||||
Parameters :
Returns :
unknown
|
Async findlastestBlogs |
findlastestBlogs()
|
Defined in src/blog/blog.service.ts:80
|
Returns :
unknown
|
Async findlByIdOrSlug | ||||||
findlByIdOrSlug(param: any)
|
||||||
Defined in src/blog/blog.service.ts:89
|
||||||
Parameters :
Returns :
unknown
|
Async getListBlogSlug |
getListBlogSlug()
|
Defined in src/blog/blog.service.ts:115
|
Returns :
unknown
|
Async getPrevAndNextBlog | ||||||
getPrevAndNextBlog(param: Array
|
||||||
Defined in src/blog/blog.service.ts:125
|
||||||
Parameters :
Returns :
unknown
|
Async saveBlog |
saveBlog(blog: any, blogCategory: any)
|
Defined in src/blog/blog.service.ts:154
|
Returns :
unknown
|
Async updateBlog |
updateBlog(id: any, blog: any, blogCategory: any)
|
Defined in src/blog/blog.service.ts:177
|
Returns :
unknown
|
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'
import { BlogCategoryDetailEntity } from 'src/database/entity/blog-category-detail-entity/blog-category-detail-entity';
import { BlogEntity } from 'src/database/entity/blog-entity/blog-entity';
import { CategoryEntity } from 'src/database/entity/category-entity/category-entity';
import { getYearAndTimeFormat } from 'src/utils/utils';
import { ExceptionErrorMessage } from 'src/validation/exception-error';
import { DataSource, In, LessThan, MoreThan, Repository, createQueryBuilder } from 'typeorm';
@Injectable()
export class BlogService {
constructor(@InjectRepository(BlogEntity) private readonly blogRp:Repository<BlogEntity>,
@InjectRepository(BlogCategoryDetailEntity) private readonly blogCategoryRp:Repository<BlogCategoryDetailEntity>,
@InjectRepository(CategoryEntity) private readonly categoryRp:Repository<CategoryEntity>,
private datasource:DataSource
){}
//Listado todos los blos
async findAllBlogsAnalitics(slug){
try {
const currentTime = getYearAndTimeFormat(new Date());
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.where('blog.slug IN (:slug)',{slug:slug})
.andWhere(`blog.datePublication < '${currentTime}'`)
.getMany();
} catch (error) {
console.log(error)
ExceptionErrorMessage(error);
}
}
//Listado todos los blos habilitados
async findAllBlogsPublic(){
try {
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.where('blog.status=:status',{status:'active'})
.orderBy('blog.createdAt', 'DESC')
.getMany();
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado todos los blos
async findAllBlogs(){
try {
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.orderBy('blog.createdAt', 'DESC')
.getMany();
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado todos los blos
async findAllBlogsPublicated(){
try {
const currentTime = getYearAndTimeFormat(new Date());
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.where(`blog.datePublication < '${currentTime}'`)
.orderBy('blog.datePublication', 'DESC')
.getMany();
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado de los 3 ultimos blogs
async findlastestBlogs(){
try {
return await this.blogRp.find({order:{createdAt:'DESC'},take:3,where:{datePublication:LessThan(new Date())}});
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado mediante slug o id
async findlByIdOrSlug(param:any){
try {
const currentTime = getYearAndTimeFormat(new Date());
console.log(currentTime)
if(param.name=="slug")
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.where(`blog.slug='${param.value}'`)
.andWhere(`blog.datePublication < '${currentTime}'`)
.getOne();
return await this.datasource.getRepository(BlogEntity).createQueryBuilder("blog")
.innerJoinAndSelect("blog.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.category',"category")
.where(`blog.id=${param.value}`)
.andWhere(`blog.datePublication < '${currentTime}'`)
.getOne();
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado de slugs
async getListBlogSlug(){
try {
return await this.blogRp.find({order:{createdAt:'DESC'},where:{datePublication:LessThan(new Date())},select:{slug:true,id:true,title:true}});
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Obtener el siguiente y previo blog
async getPrevAndNextBlog(param:Array<number>){
try {
return await this.blogRp.find({order:{createdAt:'DESC'},where:{id:In([...param]) },select:{slug:true,id:true}});
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Listado mediante el nombre de categoria o id
async findByCategory(param:any){
try {
const currentTime = getYearAndTimeFormat(new Date());
return await this.datasource.getRepository(CategoryEntity).createQueryBuilder("category")
.innerJoinAndSelect("category.blogDetail","blogcategorydetail")
.innerJoinAndSelect('blogcategorydetail.blog',"blog")
.where(`category.slug='${param}'`)
.andWhere(`category.status=true`)
.andWhere(`blog.datePublication < '${currentTime}'`)
.orderBy('blog.createdAt','DESC')
.getMany();
} catch (error) {
console.log(error)
ExceptionErrorMessage(error);
}
}
//Almacenar un nuevo blog
async saveBlog(blog:any,blogCategory:any){
try {
let blogCreate;
await this.datasource.manager.transaction(async (transactionalEntityManager) => {
blogCreate = await transactionalEntityManager.withRepository(this.blogRp).save(blog);
await blogCategory.forEach(async blogCategoryDetail => {
const blogTempor = new BlogCategoryDetailEntity();
blogTempor.createdAt = new Date();
blogTempor.blog = blogCreate.id;
blogTempor.category = blogCategoryDetail.categoryId;
await transactionalEntityManager.withRepository(this.blogCategoryRp).save(blogTempor);
});
})
return await this.findlByIdOrSlug({ name:"id", value:blogCreate.id});
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Actualizar un blog
async updateBlog(id:any, blog:any, blogCategory:any){
try {
let blogCreate;
await this.datasource.manager.transaction(async (transactionalEntityManager) => {
await transactionalEntityManager.withRepository(this.blogRp).update(id,blog);
await transactionalEntityManager.withRepository(this.blogCategoryRp).createQueryBuilder('blogcategorydetail')
.delete()
.from("blogcategorydetail")
.where("blogId = :blogId", { blogId: id })
.execute();
await blogCategory.forEach(async blogCategoryDetail => {
const blogTempor = new BlogCategoryDetailEntity();
blogTempor.createdAt = new Date();
blogTempor.blog = id;
blogTempor.category = blogCategoryDetail.categoryId;
await transactionalEntityManager.withRepository(this.blogCategoryRp).save(blogTempor);
});
})
return await this.findlByIdOrSlug({ name:"id", value:id});
} catch (error) {
ExceptionErrorMessage(error);
}
}
//Borrar Blog
async deleteBlog(id:any){
try {
return await this.blogRp.createQueryBuilder()
.update(BlogEntity)
.set({ status: false})
.where("id = :id", { id: id})
.execute();
}
catch(error){
ExceptionErrorMessage(error);
}
}
}