Changeset 9bcad23


Ignore:
Timestamp:
01/25/25 23:12:23 (3 months ago)
Author:
Nikola Jordanoski <nikolaj_koko@…>
Branches:
master
Children:
2a2614e
Parents:
d9884b2
Message:

List, add, remove favourite local for user. Added and optimized exceptions.

Location:
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo
Files:
2 added
9 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EmailNotFoundException.java

    rd9884b2 r9bcad23  
    33public class EmailNotFoundException extends RuntimeException {
    44    public EmailNotFoundException(String username) {
    5         super(String.format("User with email: %s was not found", username));
     5        super("User with email: " + username + " was not found");
    66    }
    77}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ReservationNotFoundException.java

    rd9884b2 r9bcad23  
    11package mk.ukim.finki.it.reservengo.model.exceptions;
    22
    3 public class ReservationIdNotFoundException extends RuntimeException {
    4     public ReservationIdNotFoundException(Long id) {
     3public class ReservationNotFoundException extends RuntimeException {
     4    public ReservationNotFoundException(Long id) {
    55        super("Reservation with ID " + id + " was not found");
    66    }
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java

    rd9884b2 r9bcad23  
    22
    33import mk.ukim.finki.it.reservengo.model.Local;
     4import mk.ukim.finki.it.reservengo.model.exceptions.LocalNotFoundException;
    45import mk.ukim.finki.it.reservengo.repository.LocalRepository;
    56import mk.ukim.finki.it.reservengo.service.intf.AdminService;
     
    2324    @Override
    2425    public void deleteLocal(Long id) {
    25         localRepository.deleteById(id);
     26        Local local = localRepository.findById(id).orElseThrow(() -> new LocalNotFoundException(id));
     27        localRepository.delete(local);
    2628    }
    2729}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java

    rd9884b2 r9bcad23  
    4040        customerRepository.save(customer);
    4141        String jwt = jwtService.generateTokenNoClaims(customer);
    42 
    43         System.out.println(jwt);
    44         System.out.println(customer);
    4542
    4643        return new JWTAuthenticationResponse(
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java

    rd9884b2 r9bcad23  
    11package mk.ukim.finki.it.reservengo.service.impl;
    22
     3import jakarta.transaction.Transactional;
    34import mk.ukim.finki.it.reservengo.model.Customer;
     5import mk.ukim.finki.it.reservengo.model.Local;
     6import mk.ukim.finki.it.reservengo.model.exceptions.CustomerNotFoundException;
     7import mk.ukim.finki.it.reservengo.model.exceptions.LocalNotFoundException;
    48import mk.ukim.finki.it.reservengo.repository.CustomerRepository;
     9import mk.ukim.finki.it.reservengo.repository.LocalRepository;
    510import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
    611import org.springframework.stereotype.Service;
     12
     13import java.util.List;
    714
    815@Service
    916public class CustomerServiceImpl implements CustomerService {
    1017    private final CustomerRepository customerRepository;
     18    private final LocalRepository localRepository;
    1119
    12     public CustomerServiceImpl(CustomerRepository customerRepository) {
     20    public CustomerServiceImpl(CustomerRepository customerRepository, LocalRepository localRepository) {
    1321        this.customerRepository = customerRepository;
     22        this.localRepository = localRepository;
    1423    }
    1524
    1625    @Override
    1726    public Customer getCustomerProfile(Long id) {
    18         return customerRepository.findById(id).orElseThrow(RuntimeException::new);
     27        return customerRepository.findById(id).orElseThrow(() -> new CustomerNotFoundException(id));
     28    }
     29
     30    @Override
     31    public List<Local> listFavouriteLocals(Long id) {
     32        Customer customer = customerRepository.findById(id).orElseThrow(() -> new CustomerNotFoundException(id));
     33        return customer.getFavouriteLocals();
     34    }
     35
     36    @Override
     37    public void addFavouriteLocal(Long userId, Long localId) {
     38        Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerNotFoundException(userId));
     39        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalNotFoundException(localId));
     40
     41        if (!customer.getFavouriteLocals().contains(local)) {
     42            customer.getFavouriteLocals().add(local);
     43        }
     44
     45        customerRepository.save(customer);
     46    }
     47
     48    @Override
     49    public void removeFavouriteLocal(Long userId, Long localId) {
     50        Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerNotFoundException(userId));
     51        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalNotFoundException(localId));
     52
     53        customer.getFavouriteLocals().remove(local);
     54
     55        customerRepository.save(customer);
    1956    }
    2057}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java

    rd9884b2 r9bcad23  
    22
    33import mk.ukim.finki.it.reservengo.model.Reservation;
    4 import mk.ukim.finki.it.reservengo.model.exceptions.ReservationIdNotFoundException;
     4import mk.ukim.finki.it.reservengo.model.exceptions.ReservationNotFoundException;
    55import mk.ukim.finki.it.reservengo.repository.ReservationRepository;
    66import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
     
    2121    @Override
    2222    public Reservation getReservationById(Long id) {
    23         return this.reservationRepository.findById(id).orElseThrow(() -> new ReservationIdNotFoundException(id));
     23        return this.reservationRepository.findById(id).orElseThrow(() -> new ReservationNotFoundException(id));
    2424    }
    2525
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java

    rd9884b2 r9bcad23  
    22
    33public interface AdminService {
    4 
    54    void addLocal(String name);
    65
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java

    rd9884b2 r9bcad23  
    22
    33import mk.ukim.finki.it.reservengo.model.Customer;
     4import mk.ukim.finki.it.reservengo.model.Local;
     5
     6import java.util.List;
    47
    58public interface CustomerService {
    69    Customer getCustomerProfile(Long id);
     10
     11    List<Local> listFavouriteLocals(Long id);
     12
     13    void addFavouriteLocal(Long userId, Long localId);
     14
     15    void removeFavouriteLocal(Long userId, Long localId);
    716}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java

    rd9884b2 r9bcad23  
    22
    33import mk.ukim.finki.it.reservengo.model.Customer;
     4import mk.ukim.finki.it.reservengo.model.Local;
    45import mk.ukim.finki.it.reservengo.model.Reservation;
    56import mk.ukim.finki.it.reservengo.model.User;
     
    2526    }
    2627
    27     @GetMapping
    28     public ResponseEntity<?> getCustomer() {
    29         return ResponseEntity.ok("ok");
    30     }
    31 
    3228    @GetMapping("/profile")
    3329    public ResponseEntity<?> getUserProfile(@AuthenticationPrincipal User user) {
    34         System.out.println(user.getId());
    3530        Customer userProfile = customerService.getCustomerProfile(user.getId());
    3631        return ResponseEntity.ok(userProfile);
     
    4237        return ResponseEntity.ok(customerReservations);
    4338    }
     39
     40    @GetMapping("/favourite-locals")
     41    public ResponseEntity<?> listFavouriteLocals(@AuthenticationPrincipal User user) {
     42        List<Local> favouriteLocals = customerService.listFavouriteLocals(user.getId());
     43        return ResponseEntity.ok(favouriteLocals);
     44    }
     45
     46    @PostMapping("/favourite-locals/add/{id}")
     47    public ResponseEntity<?> addFavouriteLocal(@AuthenticationPrincipal User user, @PathVariable Long id) {
     48        customerService.addFavouriteLocal(user.getId(), id);
     49        return ResponseEntity.ok().build();
     50    }
     51
     52    @PostMapping("/favourite-locals/remove/{id}")
     53    public ResponseEntity<?> removeFavouriteLocal(@AuthenticationPrincipal User user, @PathVariable Long id) {
     54        customerService.removeFavouriteLocal(user.getId(), id);
     55        return ResponseEntity.ok().build();
     56    }
    4457}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java

    rd9884b2 r9bcad23  
    2626
    2727    @PostMapping("/reservations/{id}/status")
    28     public ResponseEntity<?> updateReservationStatus(@PathVariable Long id,
    29                                                      @RequestParam ReservationStatus status) {
     28    public ResponseEntity<?> updateReservationStatus(@PathVariable Long id, @RequestParam ReservationStatus status) {
    3029        Reservation reservation = reservationService.getReservationById(id);
    3130        reservation.setStatus(status);
Note: See TracChangeset for help on using the changeset viewer.