Skip to content

Commit

Permalink
Feature/29 schedule (#52)
Browse files Browse the repository at this point in the history
* (TK-29)schedule

* (TK-29)schedule

---------

Co-authored-by: 서민지 <[email protected]>
  • Loading branch information
chelmang and 서민지 authored Sep 16, 2023
1 parent 899edd0 commit 504d179
Show file tree
Hide file tree
Showing 15 changed files with 470 additions and 0 deletions.
1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

127 changes: 127 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,4 @@ out/

.DS_Store

.idea/
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.example.backend.domain.schedule.controller;

import com.example.backend.domain.schedule.dto.request.ScheduleRequest;
import com.example.backend.domain.schedule.dto.response.ScheduleResponse;
import com.example.backend.domain.schedule.service.ScheduleService;
import com.example.backend.global.jwt.CustomUserDetails;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import java.util.List;


@RestController
@RequestMapping("/api/schedule")
@RequiredArgsConstructor
public class ScheduleController {

private final ScheduleService scheduleService;

@PostMapping
public ResponseEntity<ScheduleResponse> createSchedule(
@AuthenticationPrincipal CustomUserDetails customUserDetails,
@RequestBody ScheduleRequest request
) {
ScheduleResponse response = scheduleService.createSchedule(customUserDetails.getUsername(), request);
return new ResponseEntity<>(response, HttpStatus.CREATED);
}

@GetMapping("/{scheduleId}")
public ResponseEntity<ScheduleResponse> getSchedule(@PathVariable Long scheduleId) {
ScheduleResponse response = scheduleService.getSchedule(scheduleId);
return ResponseEntity.ok(response);
}

@GetMapping("/manager")
public ResponseEntity<List<ScheduleResponse>> getAllSchedules(
@AuthenticationPrincipal CustomUserDetails customUserDetails
) {
List<ScheduleResponse> responseList = scheduleService.getAllSchedules(customUserDetails.getUsername());
return ResponseEntity.ok(responseList);
}

@PutMapping("/{scheduleId}")
public ResponseEntity<ScheduleResponse> updateSchedule(
@PathVariable Long scheduleId,
@RequestBody ScheduleRequest request
) {
ScheduleResponse response = scheduleService.updateSchedule(scheduleId, request);
return ResponseEntity.ok(response);
}
@DeleteMapping("/{scheduleId}")
public ResponseEntity<Void> deleteSchedule(@PathVariable Long scheduleId) {
scheduleService.deleteSchedule(scheduleId);
return ResponseEntity.ok().build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.backend.domain.schedule.dto.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;

import java.time.LocalDateTime;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ScheduleRequest {
private Long userId;
private String title;
private String content;

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime startDate;

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime endDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.example.backend.domain.schedule.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ScheduleResponse {
private Long scheduleId;
private Long managerId;
private Long userId;
private String title;
private String content;
private LocalDateTime startDate;
private LocalDateTime endDate;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private boolean activated;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.backend.domain.schedule.entity;

import com.example.backend.domain.managers.entity.Managers;
import com.example.backend.domain.users.entity.Users;
import lombok.*;
import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Schedule {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long scheduleId;

@ManyToOne
@JoinColumn(name = "user_id")
private Users user;

@ManyToOne
@JoinColumn(name = "manager_id")
private Managers manager;
private String title;
private String content;
private LocalDateTime startDate;
private LocalDateTime endDate;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private boolean activated;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.backend.domain.schedule.repository;

import com.example.backend.domain.schedule.entity.Schedule;
import com.example.backend.domain.managers.entity.Managers;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ScheduleRepository extends JpaRepository<Schedule, Long> {
List<Schedule> findByManager(Managers manager);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.backend.domain.schedule.service;

import com.example.backend.domain.schedule.dto.request.ScheduleRequest;
import com.example.backend.domain.schedule.dto.response.ScheduleResponse;
import java.util.List;
public interface ScheduleService {
ScheduleResponse createSchedule(String username, ScheduleRequest request);
ScheduleResponse updateSchedule(Long scheduleId, ScheduleRequest request);
ScheduleResponse getSchedule(Long scheduleId);
List<ScheduleResponse> getAllSchedules(String username);
void deleteSchedule(Long scheduleId);
}
Loading

0 comments on commit 504d179

Please sign in to comment.