- Timestamp:
- 01/19/25 23:18:37 (4 months ago)
- Branches:
- main
- Children:
- f5b256e
- Parents:
- db39d9e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java
rdb39d9e r8ca35dc 2 2 3 3 import com.example.rezevirajmasa.demo.dto.CustomerDTO; 4 import com.example.rezevirajmasa.demo.dto.UserDto; 5 import com.example.rezevirajmasa.demo.mappers.UserMapper; 4 6 import com.example.rezevirajmasa.demo.model.*; 5 import com.example.rezevirajmasa.demo.service.CustomerService; 6 import com.example.rezevirajmasa.demo.service.ReservationService; 7 import com.example.rezevirajmasa.demo.service.RestaurantService; 8 import com.example.rezevirajmasa.demo.service.TableService; 7 import com.example.rezevirajmasa.demo.service.*; 8 import com.example.rezevirajmasa.demo.service.impl.TokenService; 9 import jakarta.servlet.http.HttpServletRequest; 9 10 import jdk.jfr.consumer.RecordingStream; 10 11 import org.apache.coyote.Response; 12 import org.apache.http.protocol.HTTP; 11 13 import org.springframework.format.annotation.DateTimeFormat; 12 14 import org.springframework.http.HttpStatus; 13 15 import org.springframework.http.ResponseEntity; 16 import org.springframework.security.core.Authentication; 17 import org.springframework.security.core.annotation.AuthenticationPrincipal; 18 import org.springframework.security.core.context.SecurityContextHolder; 19 import org.springframework.security.core.parameters.P; 20 import org.springframework.security.core.userdetails.UserDetails; 14 21 import org.springframework.web.bind.annotation.*; 15 22 23 import java.nio.file.attribute.UserPrincipal; 24 import java.security.Principal; 16 25 import java.time.LocalDateTime; 17 26 import java.time.format.DateTimeFormatter; … … 26 35 private final RestaurantService restaurantService; 27 36 private final CustomerService customerService; 37 private final UserService userService; 28 38 private final ReservationService reservationService; 39 private final ReservationHistoryService reservationHistoryService; 29 40 private final TableService tableService; 30 31 public testController(RestaurantService restaurantService, CustomerService customerService, ReservationService reservationService, TableService tableService) { 41 private final UserMapper userMapper; 42 private final TokenService tokenService; 43 public testController(RestaurantService restaurantService, CustomerService customerService, UserService userService, ReservationService reservationService, ReservationHistoryService reservationHistoryService, TableService tableService, UserMapper userMapper, TokenService tokenService) { 32 44 this.restaurantService = restaurantService; 33 45 this.customerService = customerService; 46 this.userService = userService; 34 47 this.reservationService = reservationService; 48 this.reservationHistoryService = reservationHistoryService; 35 49 this.tableService = tableService; 50 this.userMapper = userMapper; 51 this.tokenService = tokenService; 36 52 } 37 53 … … 114 130 ); 115 131 } 132 @GetMapping("/api/user") 133 public ResponseEntity<?> getCurrentUser() { 134 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 135 136 if (authentication == null || !authentication.isAuthenticated() || authentication.getPrincipal().equals("anonymousUser")) { 137 return new ResponseEntity<>("User is not authenticated", HttpStatus.UNAUTHORIZED); 138 } 139 140 Customer customer = (Customer) authentication.getPrincipal(); 141 return new ResponseEntity<>(customer, HttpStatus.OK); 142 } 143 116 144 117 145 @PostMapping("/api/customers") … … 137 165 // Reservation Calls 138 166 139 @GetMapping("/api/reservations") 140 public ResponseEntity<List<Reservation>> getReservations() { 141 return new ResponseEntity<List<Reservation>>(reservationService.listAll(), HttpStatus.OK); 142 } 143 144 @PostMapping("/api/reservations") 145 public ResponseEntity<Reservation> createReservation(@RequestBody Reservation reservation) { 146 reservation.setReservationDateTime(LocalDateTime.now()); 147 Reservation savedReservation = reservationService.makeReservationRest(reservation); 167 @GetMapping("/api/reservations/by/{email}") 168 public ResponseEntity<List<Reservation>> getReservations(@PathVariable String email) { 169 User user = userService.findByMail(email); 170 return new ResponseEntity<List<Reservation>>(reservationService.findReservationByUser(user), HttpStatus.OK); 171 } 172 173 @PostMapping("/api/reservations/{email}") 174 public ResponseEntity<Reservation> createReservation(@RequestBody Reservation reservation, @PathVariable String email) { 175 User user = userService.findByMail(email); 176 Reservation savedReservation = reservationService.makeReservationRest(reservation, user); 177 148 178 return new ResponseEntity<>(savedReservation, HttpStatus.CREATED); 149 179 } 180 150 181 151 182 @GetMapping("/api/reservations/{reservationId}") … … 159 190 } 160 191 161 @PostMapping("/api/reservations/{reservationId} ")192 @PostMapping("/api/reservations/{reservationId}/{email}") 162 193 public ResponseEntity<Reservation> editReservation(@PathVariable Long reservationId, 163 @RequestBody Reservation reservation) { 194 @RequestBody Reservation reservation, 195 @PathVariable String email) { 196 User user = userService.findByMail(email); 197 164 198 if (!reservation.getReservationID().equals(reservationId)) { 165 199 return ResponseEntity.badRequest().build(); 166 200 } 167 201 168 Reservation savedReservation = reservationService.findById(reservationId); 169 if(!reservation.getCheckInTime().equals(savedReservation.getCheckInTime())) { 170 tableService.canceledTimeSlots(savedReservation.getTable().getId(), savedReservation.getCheckInTime()); 171 } 172 173 savedReservation.setReservationDateTime(LocalDateTime.now()); 174 savedReservation.setCheckInTime(reservation.getCheckInTime()); 175 savedReservation.setCheckOutTime(reservation.getCheckInTime().plusHours(2)); 176 savedReservation.setPartySize(reservation.getPartySize()); 177 savedReservation.setSpecialRequests(reservation.getSpecialRequests()); 178 tableService.deleteTimeSlotsForReservation(reservation.getTable().getId(), reservation.getCheckInTime()); 179 180 //moze da se vovede sistem za ako od 4ca doagjaat samo 2ca da se najde pomala masa po moznost ako ima u toj moment 181 //listaj samo slotovi za taa masa vo toj moment ili da ima da odbere od novo ama taka bolje nova rezevacij 182 183 Reservation updatedReservation = reservationService.makeReservationRest(savedReservation); 184 System.out.println("Saved reservation time: " + savedReservation.getCheckInTime()); 202 // Fetch existing reservation 203 Reservation existingReservation = reservationService.findById(reservationId); 204 if (existingReservation == null) { 205 return ResponseEntity.notFound().build(); 206 } 207 208 if (!reservation.getCheckInTime().equals(existingReservation.getCheckInTime())) { 209 tableService.canceledTimeSlots(existingReservation.getTable().getId(), existingReservation.getCheckInTime()); 210 211 tableService.deleteTimeSlotsForReservation(reservation.getTable().getId(), reservation.getCheckInTime()); 212 } 213 214 existingReservation.setReservationDateTime(LocalDateTime.now()); 215 existingReservation.setCheckInTime(reservation.getCheckInTime()); 216 existingReservation.setCheckOutTime(reservation.getCheckInTime().plusHours(2)); 217 existingReservation.setPartySize(reservation.getPartySize()); 218 existingReservation.setSpecialRequests(reservation.getSpecialRequests()); 219 220 Reservation updatedReservation = reservationService.makeReservationRest(existingReservation, user); 221 222 System.out.println("Updated reservation time: " + updatedReservation.getCheckInTime()); 185 223 return ResponseEntity.ok(updatedReservation); 186 224 } 225 187 226 188 227 @DeleteMapping("/api/reservations/delete/{reservationId}") … … 196 235 } 197 236 237 @GetMapping("/api/reservations/past/{email}") 238 public ResponseEntity<List<Restaurant.ReservationHistory>> pastReservations(@PathVariable String email) { 239 User user = userService.findByMail(email); 240 return null; 241 } 242 198 243 // TableEntity Calls 199 244 … … 203 248 } 204 249 250 // past reservation calls 251 @GetMapping("/api/past-reservations/{email}") 252 public ResponseEntity<List<Restaurant.ReservationHistory>> findPastReservationsByUser(@PathVariable String email) { 253 User user = userService.findByMail(email); 254 List<Restaurant.ReservationHistory> reservations = reservationHistoryService.findByUser(user); 255 return new ResponseEntity<>(reservations, HttpStatus.OK); 256 } 257 205 258 }
Note:
See TracChangeset
for help on using the changeset viewer.