Files
NTO-2025-Backend-TeamTask/src/main/java/com/example/nto/entity/Booking.java
2025-12-05 15:57:07 +03:00

77 lines
1.9 KiB
Java

package com.example.nto.entity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
/**
* TODO: ДОРАБОТАТЬ в рамках задания
* =================================
* МОЖНО: Добавлять методы, аннотации, зависимости
* НЕЛЬЗЯ: Изменять название класса и пакета
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Booking {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private LocalDate date;
@ManyToOne(targetEntity = Place.class, fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
private Place place;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "employee_id")
@JsonBackReference
private Employee employee;
@Data
public static class AvailablePlaceDto {
private long id;
private String place;
}
@Data
public static class CreateBookingRequest {
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
private long placeId;
}
@Data
public static class ErrorResponse {
private String error;
private String message;
public ErrorResponse(String error, String message) {
this.error = error;
this.message = message;
}
}
@Data
public static class BookingResponse {
private Long id;
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
private Long placeId;
private String placeName;
private Long employeeId;
private String employeeName;
}
}