import { Injectable, NotFoundException } from "@nestjs/common"; import { PaginationDto } from "../../../common/DTO/pagination.dto"; import { CommonMessage, SliderMessage } from "../../../common/enums/message.enum"; import { CreateSliderDto } from "../DTO/create-slider.dto"; import { UpdateSliderDto } from "../DTO/update-slider.dto"; import { SlidersRepository } from "../repositories/sliders.repository"; @Injectable() export class SlidersService { constructor(private readonly slidersRepository: SlidersRepository) {} async create(createSliderDto: CreateSliderDto) { const slider = this.slidersRepository.create(createSliderDto); await this.slidersRepository.save(slider); return { message: CommonMessage.CREATED, slider, }; } //*************************** */ async getSlidersList(queryDto: PaginationDto) { const [sliders, count] = await this.slidersRepository.getSlidersListForAdmin(queryDto); return { sliders, count, paginate: true, }; } //************************* */ async getSliderById(id: string) { const slider = await this.slidersRepository.findOne({ where: { id } }); if (!slider) throw new NotFoundException(SliderMessage.SLIDER_NOT_FOUND); return { slider, }; } //****************** */ async update(id: string, updateSliderDto: UpdateSliderDto) { const { slider } = await this.getSliderById(id); await this.slidersRepository.save({ ...slider, ...updateSliderDto }); return { message: CommonMessage.UPDATE_SUCCESS, }; } //****************** */ async remove(id: string) { const { slider } = await this.getSliderById(id); await this.slidersRepository.remove(slider); return { message: CommonMessage.DELETED, }; } //****************** */ async toggleSliderStatus(id: string) { const { slider } = await this.getSliderById(id); slider.isActive = !slider.isActive; await this.slidersRepository.save(slider); return { message: CommonMessage.UPDATE_SUCCESS, }; } //****************** */ async getSlidersListForLanding() { const sliders = await this.slidersRepository.find({ where: { isActive: true } }); return sliders; } //****************** */ }