Ignore:
Timestamp:
01/19/25 23:18:37 (4 months ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
f5b256e
Parents:
db39d9e
Message:

Done with stupid timeslots

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java

    rdb39d9e r8ca35dc  
    22
    33import com.example.rezevirajmasa.demo.dto.CustomerDTO;
     4import com.example.rezevirajmasa.demo.dto.UserDto;
     5import com.example.rezevirajmasa.demo.mappers.UserMapper;
    46import 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;
     7import com.example.rezevirajmasa.demo.service.*;
     8import com.example.rezevirajmasa.demo.service.impl.TokenService;
     9import jakarta.servlet.http.HttpServletRequest;
    910import jdk.jfr.consumer.RecordingStream;
    1011import org.apache.coyote.Response;
     12import org.apache.http.protocol.HTTP;
    1113import org.springframework.format.annotation.DateTimeFormat;
    1214import org.springframework.http.HttpStatus;
    1315import org.springframework.http.ResponseEntity;
     16import org.springframework.security.core.Authentication;
     17import org.springframework.security.core.annotation.AuthenticationPrincipal;
     18import org.springframework.security.core.context.SecurityContextHolder;
     19import org.springframework.security.core.parameters.P;
     20import org.springframework.security.core.userdetails.UserDetails;
    1421import org.springframework.web.bind.annotation.*;
    1522
     23import java.nio.file.attribute.UserPrincipal;
     24import java.security.Principal;
    1625import java.time.LocalDateTime;
    1726import java.time.format.DateTimeFormatter;
     
    2635    private final RestaurantService restaurantService;
    2736    private final CustomerService customerService;
     37    private final UserService userService;
    2838    private final ReservationService reservationService;
     39    private final ReservationHistoryService reservationHistoryService;
    2940    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) {
    3244        this.restaurantService = restaurantService;
    3345        this.customerService = customerService;
     46        this.userService = userService;
    3447        this.reservationService = reservationService;
     48        this.reservationHistoryService = reservationHistoryService;
    3549        this.tableService = tableService;
     50        this.userMapper = userMapper;
     51        this.tokenService = tokenService;
    3652    }
    3753
     
    114130        );
    115131    }
     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
    116144
    117145    @PostMapping("/api/customers")
     
    137165//    Reservation Calls
    138166
    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
    148178        return new ResponseEntity<>(savedReservation, HttpStatus.CREATED);
    149179    }
     180
    150181
    151182    @GetMapping("/api/reservations/{reservationId}")
     
    159190    }
    160191
    161     @PostMapping("/api/reservations/{reservationId}")
     192    @PostMapping("/api/reservations/{reservationId}/{email}")
    162193    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
    164198        if (!reservation.getReservationID().equals(reservationId)) {
    165199            return ResponseEntity.badRequest().build();
    166200        }
    167201
    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());
    185223        return ResponseEntity.ok(updatedReservation);
    186224    }
     225
    187226
    188227    @DeleteMapping("/api/reservations/delete/{reservationId}")
     
    196235    }
    197236
     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
    198243//    TableEntity Calls
    199244
     
    203248    }
    204249
     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
    205258}
Note: See TracChangeset for help on using the changeset viewer.