import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';

@Injectable()
export class ShiftsService {
  constructor(private prisma: PrismaService) {}

  async findAll() {
    return this.prisma.shift.findMany({
      orderBy: { name: 'asc' },
      include: { _count: { select: { employees: true } } },
    });
  }

  async findById(id: number) {
    return this.prisma.shift.findUnique({
      where: { id },
      include: { employees: true },
    });
  }

  async create(data: {
    name: string;
    startTime: string;
    endTime: string;
    breakMinutes?: number;
    workDays?: string;
  }) {
    return this.prisma.shift.create({
      data: {
        name: data.name,
        startTime: data.startTime,
        endTime: data.endTime,
        breakMinutes: data.breakMinutes ?? 0,
        workDays: data.workDays ?? '1,2,3,4,5',
      },
    });
  }

  async update(
    id: number,
    data: {
      name?: string;
      startTime?: string;
      endTime?: string;
      breakMinutes?: number;
      workDays?: string;
    },
  ) {
    return this.prisma.shift.update({
      where: { id },
      data,
    });
  }

  async delete(id: number) {
    return this.prisma.shift.delete({
      where: { id },
    });
  }
}
