package com.huixinpn.dionysus.dto.appointment; import com.fasterxml.jackson.annotation.JsonFormat; import com.huixinpn.dionysus.domain.appointment.Appointment; import com.huixinpn.dionysus.domain.appointment.AppointmentStatus; import com.huixinpn.dionysus.domain.user.Consultant; import com.huixinpn.dionysus.domain.user.User; import com.huixinpn.dionysus.dto.EntityData; import com.huixinpn.dionysus.dto.user.ConsultantData; import com.huixinpn.dionysus.dto.user.UserData; import com.huixinpn.dionysus.repository.appointment.AppointmentRepository; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Calendar; @Data @NoArgsConstructor @Component public class AppointmentData extends EntityData<Appointment> { @Autowired private AppointmentRepository appointmentRepository; private ConsultantData consultant; private UserData user; private String state; private String approach; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm") private Calendar date; public AppointmentData(Appointment appointment){ super(appointment); this.consultant = new ConsultantData(appointment.getConsultant()); this.user = new UserData(appointment.getUser()); this.state = appointment.getState().toString(); this.date = appointment.getDate(); this.approach = appointment.getApproach().toString(); } public void update(Appointment appointment){ if(this.getUser() != null){ appointment.setUser(new User(this.getUser().getId())); } if(this.getConsultant() != null){ appointment.setConsultant(new Consultant(this.getConsultant().getId())); } if(this.getDate() != null){ appointment.setDate(this.getDate()); } if(this.getState() != null) { appointment.setState(AppointmentStatus.valueOf(this.getState())); } } }