Files
dsc-api/src/modules/sliders/providers/sliders.service.ts
T
2025-04-19 09:46:10 +03:30

74 lines
2.2 KiB
TypeScript
Executable File

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;
}
//****************** */
}