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
Expand Up @@ -2,6 +2,9 @@

import static termproject.heroticketing.constant.SessionConst.*;

import java.util.List;

import org.springframework.ui.Model;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
Expand All @@ -13,19 +16,31 @@
import termproject.heroticketing.member.domain.Member;
import termproject.heroticketing.member.dto.LoginForm;
import termproject.heroticketing.member.service.LoginService;
import termproject.heroticketing.performance.dto.PerformanceResponse;
import termproject.heroticketing.performance.service.PerformanceService;

@Controller
@RequiredArgsConstructor
public class LoginController {

private final LoginService loginService;
private final PerformanceService performanceService;

@GetMapping("/")
public String home(HttpServletRequest request) {
public String home(HttpServletRequest request, Model model) {
HttpSession session = request.getSession(false);
if (session == null) {
return "index";
}
else if (session != null) {
Member loginMember = (Member) session.getAttribute(LOGIN_MEMBER.getMessage());
if (loginMember != null) {
model.addAttribute("loginMember", loginMember); // 로그인한 멤버를 모델에 추가
}
}
List<PerformanceResponse> result = performanceService.showAll();
model.addAttribute("performances", result);
System.out.println("result = " + result);
return "main";
}

Expand Down Expand Up @@ -55,4 +70,6 @@ public String logout(HttpServletRequest request) {
}
return "redirect:/";
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package termproject.heroticketing.performance.controller;

import static termproject.heroticketing.constant.SessionConst.*;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import termproject.heroticketing.member.domain.Member;
import termproject.heroticketing.performance.service.PerformanceService;

@Controller
@RequiredArgsConstructor
@RequestMapping("/performances")
public class MypageController {

@GetMapping("/mypage")
public String myPage(Model model, HttpServletRequest request) {
HttpSession session = request.getSession(false);
Member loginMember = (Member) session.getAttribute(LOGIN_MEMBER.getMessage());
if (loginMember != null) {
model.addAttribute("loginMember", loginMember); // 로그인한 멤버를 모델에 추가
}
return "mypage";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class PerformanceController {
public String showAll(Model model) {
List<PerformanceResponse> result = performanceService.showAll();
model.addAttribute("performances", result);
return "performance";
return "main";
}

@GetMapping("/add")
Expand All @@ -39,7 +39,7 @@ public String performanceForm() {
@PostMapping("/add")
public String savePerformance(@ModelAttribute PerformanceForm form) {
performanceService.savePerformance(form);
return "redirect:/performances";
return "redirect:/";
}

@GetMapping("/{id}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@RequiredArgsConstructor
@Getter
@ToString
public class PerformanceForm {
private Long id;
private String name;
Expand All @@ -19,8 +21,8 @@ public class PerformanceForm {

@Builder
public PerformanceForm(String name, LocalDateTime startPerformanceTime, LocalDateTime endPerformanceTime,
LocalDateTime startReservationTime, LocalDateTime endReservationTime, Integer totalSeat,
Integer remainingSeat) {
LocalDateTime startReservationTime, LocalDateTime endReservationTime, Integer totalSeat,
Integer remainingSeat) {
this.name = name;
this.startPerformanceTime = startPerformanceTime;
this.endPerformanceTime = endPerformanceTime;
Expand All @@ -29,4 +31,37 @@ public PerformanceForm(String name, LocalDateTime startPerformanceTime, LocalDat
this.totalSeat = totalSeat;
this.remainingSeat = remainingSeat;
}

// Setter 메서드 추가
public void setId(Long id) {
this.id = id;
}

public void setName(String name) {
this.name = name;
}

public void setStartPerformanceTime(LocalDateTime startPerformanceTime) {
this.startPerformanceTime = startPerformanceTime;
}

public void setEndPerformanceTime(LocalDateTime endPerformanceTime) {
this.endPerformanceTime = endPerformanceTime;
}

public void setStartReservationTime(LocalDateTime startReservationTime) {
this.startReservationTime = startReservationTime;
}

public void setEndReservationTime(LocalDateTime endReservationTime) {
this.endReservationTime = endReservationTime;
}

public void setTotalSeat(Integer totalSeat) {
this.totalSeat = totalSeat;
}

public void setRemainingSeat(Integer remainingSeat) {
this.remainingSeat = remainingSeat;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import termproject.heroticketing.performance.domain.Performance;

@RequiredArgsConstructor
@Getter
@ToString
public class PerformanceResponse {
private String name;
private LocalDateTime startPerformanceTime;
Expand All @@ -32,6 +34,7 @@ public PerformanceResponse(String name, LocalDateTime startPerformanceTime, Loca

public static PerformanceResponse convertFromEntity(Performance performance) {
return PerformanceResponse.builder()
.name(performance.getName())
.startPerformanceTime(performance.getStartPerformanceTime())
.endPerformanceTime(performance.getEndPerformanceTime())
.startReservationTime(performance.getStartReservationTime())
Expand Down
68 changes: 68 additions & 0 deletions src/main/resources/templates/addPerformace-form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<!doctype html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>공연 등록</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<style>
body {
background-color: #f4f4f4;
padding: 20px;
}
.container {
max-width: 500px; /* 최대 너비를 400px로 줄임 */
background: white;
padding: 20px;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1><strong>공연 등록</strong></h1>
<form id="eventForm" th:action="@{/performances/add}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">공연 제목:</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>

<div class="form-group">
<label for="startPerformanceTime">공연 시작 시각:</label>
<input type="datetime-local" class="form-control" id="startPerformanceTime" name="startPerformanceTime" required>
</div>

<div class="form-group">
<label for="endPerformanceTime">공연 종료 시각:</label>
<input type="datetime-local" class="form-control" id="endPerformanceTime" name="endPerformanceTime" required>
</div>

<div class="form-group">
<label for="startReservationTime">예매 시작 시각:</label>
<input type="datetime-local" class="form-control" id="startReservationTime" name="startReservationTime" required>
</div>

<div class="form-group">
<label for="endReservationTime">예매 종료 시각:</label>
<input type="datetime-local" class="form-control" id="endReservationTime" name="endReservationTime" required>
</div>

<div class="form-group">
<label for="totalSeat">총 좌석 수:</label>
<input type="number" class="form-control" id="totalSeat" name="totalSeat" min="1" required>
</div>

<button type="submit" class="btn btn-primary btn-block">등록하기</button>
</form>
</div>

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.0.7/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
9 changes: 4 additions & 5 deletions src/main/resources/templates/details.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,9 @@ <h1>좌석 선택</h1>
<!-- 좌석 배치 -->
<table>
<tbody>
<tr th:each="row, rowStat : ${rows}">
<td th:text="${row}"></td> <!-- 좌석 행 표시 -->
<td th:each="seatNum : ${rowStat.index < 8 ? 16 : 16 - (rowStat.index - 8) * 2}">
<div class="seat" th:data-row="${row}" th:data-seat-number="${seatNum}" onclick="toggleSeat(this)">
<tr>
<td th:each="seatNum : ${#numbers.sequence(1, 30)}">
<div class="seat" th:data-seat-number="${seatNum}" onclick="toggleSeat(this)">
<span th:text="${seatNum}"></span>
</div>
</td>
Expand All @@ -103,7 +102,7 @@ <h2>예약 정보</h2>
seat.classList.toggle('selected');

const selectedSeats = document.querySelectorAll('.seat.selected');
const selectedSeatsText = Array.from(selectedSeats).map(seat => seat.dataset.row + seat.dataset.seatNumber).join(', ');
const selectedSeatsText = Array.from(selectedSeats).map(seat => seat.dataset.seatNumber).join(', ');

document.getElementById('selected-seats').innerText = selectedSeatsText.length > 0 ? selectedSeatsText : '없음';

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<div class="wrapper">
<h1>티켓 히어로</h1>
<form class="login" th:action="@{/login}" method="post">
<input type="text" name="ID" placeholder="아이디" required>
<input type="text" name="loginId" placeholder="아이디" required>
<input type="password" name="password" placeholder="비밀번호" required>
<button type="submit">로그인</button>
</form>
Expand Down
Loading