history status reserve
This commit is contained in:
@@ -19,6 +19,7 @@ import { CreateReserveDto } from './dto/create-reserve.dto';
|
||||
import { FindReservesQueryDto } from './dto/find-reserves-query.dto';
|
||||
import { UpdateReserveDto } from './dto/update-reserve.dto';
|
||||
import { ReserveItem } from './entities/reserve-item.entity';
|
||||
import { ReserveStatusHistory } from './entities/reserve-status-history.entity';
|
||||
import { Reserve } from './entities/reserve.entity';
|
||||
import { ReserveStatus } from './enums/reserve-status.enum';
|
||||
|
||||
@@ -29,6 +30,8 @@ export class ReservesService {
|
||||
private readonly reservesRepository: Repository<Reserve>,
|
||||
@InjectRepository(ReserveItem)
|
||||
private readonly reserveItemsRepository: Repository<ReserveItem>,
|
||||
@InjectRepository(ReserveStatusHistory)
|
||||
private readonly reserveStatusHistoryRepository: Repository<ReserveStatusHistory>,
|
||||
@InjectRepository(Service)
|
||||
private readonly servicesRepository: Repository<Service>,
|
||||
@InjectRepository(ServiceSkill)
|
||||
@@ -86,6 +89,7 @@ export class ReservesService {
|
||||
});
|
||||
|
||||
const saved = await this.reservesRepository.save(reserve);
|
||||
await this.logStatusChange(saved.id, null, saved.status, user.id);
|
||||
return this.findOne(saved.id, user);
|
||||
}
|
||||
|
||||
@@ -199,6 +203,9 @@ export class ReservesService {
|
||||
}
|
||||
|
||||
if (status !== undefined) {
|
||||
if (status !== reserve.status) {
|
||||
await this.logStatusChange(reserve.id, reserve.status, status, user.id);
|
||||
}
|
||||
reserve.status = status;
|
||||
if (status === ReserveStatus.CANCELLED) {
|
||||
reserve.cancellationReason = cancellationReason ?? null;
|
||||
@@ -213,6 +220,34 @@ export class ReservesService {
|
||||
return this.findOne(id, user);
|
||||
}
|
||||
|
||||
async findStatusHistory(
|
||||
id: string,
|
||||
user: AuthUser,
|
||||
): Promise<ReserveStatusHistory[]> {
|
||||
await this.findOne(id, user);
|
||||
|
||||
return this.reserveStatusHistoryRepository.find({
|
||||
where: { reserveId: id },
|
||||
relations: { changedByUser: true },
|
||||
order: { createdAt: 'ASC' },
|
||||
});
|
||||
}
|
||||
|
||||
private async logStatusChange(
|
||||
reserveId: string,
|
||||
fromStatus: ReserveStatus | null,
|
||||
toStatus: ReserveStatus,
|
||||
changedByUserId: string,
|
||||
): Promise<void> {
|
||||
const entry = this.reserveStatusHistoryRepository.create({
|
||||
reserveId,
|
||||
fromStatus,
|
||||
toStatus,
|
||||
changedByUserId,
|
||||
});
|
||||
await this.reserveStatusHistoryRepository.save(entry);
|
||||
}
|
||||
|
||||
private readonly defaultRelations = {
|
||||
salon: true,
|
||||
customer: { user: true },
|
||||
|
||||
Reference in New Issue
Block a user