Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.sswugdsc4a.withparents.controller;

import com.sswugdsc4a.withparents.dto.Request.schedule.CreateScheduleRequest;
import com.sswugdsc4a.withparents.dto.dto.schedule.ScheduleDTO;
import com.sswugdsc4a.withparents.service.ScheduleService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@RestController
@RequiredArgsConstructor
public class ScheduleController {
private final ScheduleService scheduleService;

@PostMapping("/api/schedule/createSchedule")
public ScheduleDTO createSchedule(
@RequestBody CreateScheduleRequest body
) {
return scheduleService.createSchedule(
body.getUserId(),
body.getTitle(),
body.getDate(),
body.getTime()
);
}

@GetMapping("/api/schedule/getScheduleList")
public List<ScheduleDTO> getScheduleList(
@RequestParam LocalDate date, Long userId
) {
return scheduleService.getScheduleList(userId, date);
}

@DeleteMapping("/api/schedule/deleteSchedule")
public void deleteSchedule(
@RequestParam Long scheduleId
){
scheduleService.deleteSchedule(scheduleId);
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.sswugdsc4a.withparents.dto.Request.schedule;

import lombok.Getter;

import java.time.LocalDate;
import java.time.LocalTime;

@Getter
public class CreateScheduleRequest {
private Long userId;
private String title;
private LocalDate date;
private LocalTime time;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.sswugdsc4a.withparents.dto.dto.schedule;

import com.sswugdsc4a.withparents.entity.Schedule;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import javax.management.Notification;
import java.time.LocalDate;
import java.time.LocalTime;

@Getter
@Setter
@AllArgsConstructor

public class ScheduleDTO {
private Long id;
private Long userId;
private String title;
private LocalDate Date;
private LocalTime Time;

public static ScheduleDTO entityToDTO(Schedule e){
return new ScheduleDTO(
e.getId(),
e.getUser().getId(),
e.getTitle(),
e.getDate(),
e.getTime()
);
}
}



Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sswugdsc4a.withparents.entity;

public enum AlertStatus {
ON, OFF
}
37 changes: 37 additions & 0 deletions src/main/java/com/sswugdsc4a/withparents/entity/Schedule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.sswugdsc4a.withparents.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;

import javax.management.Notification;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Schedule{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "schedule_id")
private Long id;

@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createDate;
private String title;
private LocalDate date;
private LocalTime time;
private AlertStatus alert;
};

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.sswugdsc4a.withparents.repository;

import com.sswugdsc4a.withparents.entity.Medication;
import com.sswugdsc4a.withparents.entity.Schedule;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ScheduleRepository extends JpaRepository<Schedule, Long> {
List<Schedule> findAllByUserId(Long userId);
}

111 changes: 111 additions & 0 deletions src/main/java/com/sswugdsc4a/withparents/service/ScheduleService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.sswugdsc4a.withparents.service;

import com.sswugdsc4a.withparents.dto.dto.schedule.ScheduleDTO;
import com.sswugdsc4a.withparents.entity.AlertStatus;
import com.sswugdsc4a.withparents.entity.Schedule;
import com.sswugdsc4a.withparents.entity.User;
import com.sswugdsc4a.withparents.exception.CustomException;
import com.sswugdsc4a.withparents.repository.ScheduleRepository;
import com.sswugdsc4a.withparents.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.sql.Date;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
public class ScheduleService {
private final ScheduleRepository scheduleRepository;
private final UserRepository UserRepository;
private final UserService userService;

@Transactional
public ScheduleDTO createSchedule(
Long userId,
String title,
LocalDate date,
LocalTime time
) {
if (!userService.areTheyAFamily(userId)) {
throw new CustomException("Family id is different");
}

return ScheduleDTO.entityToDTO(
scheduleRepository.save(
new Schedule(
null,
userService.getUserById(userId),
null,
title,
date,
time,
AlertStatus.ON
)

)
);

}

public List<ScheduleDTO> getScheduleList(
Long userId,
LocalDate date
)
{

User user = userService.getUserById(userId);

if(!userService.areTheyAFamily(userId)) {
throw new CustomException("Family id is different");
}
return scheduleRepository.findAllByUserId(userId)
.stream()
.map(e -> ScheduleDTO.entityToDTO(e))
.collect(Collectors.toList());
}

@Transactional
public void deleteSchedule(
Long scheduleId
){
Schedule schedule = scheduleRepository.findById(scheduleId)
.orElseThrow(()->new CustomException("invalid schedule id"));
if (!userService.areTheyAFamily(schedule.getUser().getId())){
throw new CustomException("Family id is different");
}
scheduleRepository.delete(schedule);
}

// public List<ScheduleDTO> getTodayScheduleList(Long userId){
// User user = UserRepository.findById(userId)
// .orElseThrow(()->new IllegalArgumentException());
// }
// public List<ScheduleDTO> getTodayScheduleList(Long userId){
// User user = userService.getUserById(userId);
//
// if(!userService.areTheyAFamily(userId)){
// throw new CustomException("Family id is different");
// }
// int dayOfWeekNumber = switch (Calendar.getInstance().get(Calendar.D)){
// case 1 -> 6;
// case 2 -> 0;
// case 3 -> 1;
// case 4 -> 2;
// case 5 -> 3;
// case 6 -> 4;
// case 7 -> 5;
// default -> 8;
// };
// return scheduleRepository.findAllByUserId(userId)
// .stream()
// .filter(e -> {
// return e.get
// })
}