Changeset 4894099 for ReserveNGo-backend


Ignore:
Timestamp:
01/25/25 03:35:08 (3 months ago)
Author:
ivanov1332 <zareivanov070@…>
Branches:
master
Children:
47890c4
Parents:
17bf12d
Message:

Added admin functionality add & delete local, reservations listing, and method for calculating average rating for local

Location:
ReserveNGo-backend
Files:
4 added
14 edited

Legend:

Unmodified
Added
Removed
  • ReserveNGo-backend/.gitignore

    r17bf12d r4894099  
    1515
    1616### IntelliJ IDEA ###
    17 .idea
     17.idea/
    1818*.iws
    1919*.iml
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java

    r17bf12d r4894099  
    4242                        .permitAll()
    4343                        .requestMatchers("/api/customer/**").hasRole("CUSTOMER")
     44                        .requestMatchers("/api/admin/**").hasRole("ADMIN")
    4445                        .anyRequest()
    4546                        .authenticated()
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java

    r17bf12d r4894099  
    6969    private List<LocalWorker> workers;
    7070
     71    public Local(String name) {
     72        this.name = name;
     73    }
     74
     75    public double calculateLocalAverageRating() {
     76        if (ratings == null || ratings.isEmpty()) {
     77            return 0.0;
     78        }
     79        double sum = 0.0;
     80        for (Integer rating : ratings.values()) {
     81            sum += rating;
     82        }
     83        return sum / ratings.size();
     84    }
     85
    7186
    7287    public Long getId() {
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java

    r17bf12d r4894099  
    4242    @Enumerated(EnumType.STRING)
    4343    private ReservationStatus status;
     44
     45    public void setStatus(ReservationStatus status) {
     46        this.status = status;
     47    }
    4448}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java

    r17bf12d r4894099  
    55import org.springframework.stereotype.Repository;
    66
     7import java.util.List;
     8
    79@Repository
    810public interface ReservationRepository extends JpaRepository<Reservation, Long> {
     11    List<Reservation> findAllByCustomerId(Long customerId);
    912}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java

    r17bf12d r4894099  
    11package mk.ukim.finki.it.reservengo.service.impl;
    22
     3import mk.ukim.finki.it.reservengo.model.Local;
     4import mk.ukim.finki.it.reservengo.repository.LocalRepository;
    35import mk.ukim.finki.it.reservengo.service.intf.AdminService;
    46import org.springframework.stereotype.Service;
     
    68@Service
    79public class AdminServiceImpl implements AdminService {
     10
     11    private final LocalRepository localRepository;
     12
     13    public AdminServiceImpl(LocalRepository localRepository) {
     14        this.localRepository = localRepository;
     15    }
     16
     17    @Override
     18    public void addLocal(String name) {
     19        Local local = new Local(name);
     20        localRepository.save(local);
     21    }
     22
     23    @Override
     24    public void deleteLocal(Long id) {
     25        localRepository.deleteById(id);
     26    }
    827}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java

    r17bf12d r4894099  
    9292        String jwt = jwtService.generateTokenNoClaims(user);
    9393
    94         System.out.println(jwt);
    95         System.out.println(user);
    96 
    9794        return new JWTAuthenticationResponse(
    9895                user.getId(),
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java

    r17bf12d r4894099  
    22
    33import mk.ukim.finki.it.reservengo.model.Local;
     4import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
    45import mk.ukim.finki.it.reservengo.repository.LocalRepository;
    56import mk.ukim.finki.it.reservengo.service.intf.LocalService;
     
    2223    }
    2324
    24    
     25    @Override
     26    public Local getLocalById(Long id) {
     27        return localRepository.findById(id)
     28                .orElseThrow(() -> new LocalIdNotFoundException(id));
     29    }
     30
    2531
    2632}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java

    r17bf12d r4894099  
    11package mk.ukim.finki.it.reservengo.service.impl;
    22
     3import mk.ukim.finki.it.reservengo.model.Reservation;
     4import mk.ukim.finki.it.reservengo.model.exceptions.ReservationIdNotFoundException;
     5import mk.ukim.finki.it.reservengo.repository.ReservationRepository;
    36import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
    47import org.springframework.stereotype.Service;
    58
     9import java.util.List;
     10
     11
    612@Service
    713public class ReservationServiceImpl implements ReservationService {
     14
     15    private final ReservationRepository reservationRepository;
     16
     17    public ReservationServiceImpl(ReservationRepository reservationRepository) {
     18        this.reservationRepository = reservationRepository;
     19    }
     20
     21    @Override
     22    public Reservation getReservationById(Long id) {
     23        return this.reservationRepository.findById(id).orElseThrow(() -> new ReservationIdNotFoundException(id));
     24    }
     25
     26    @Override
     27    public List<Reservation> getCustomerReservations(Long id) {
     28        return this.reservationRepository.findAllByCustomerId(id);
     29    }
     30
    831}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java

    r17bf12d r4894099  
    22
    33public interface AdminService {
     4
     5    void addLocal(String name);
     6
     7    void deleteLocal(Long id);
    48}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java

    r17bf12d r4894099  
    77public interface LocalService {
    88    List<Local> listAll();
     9
     10    Local getLocalById(Long id);
    911}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java

    r17bf12d r4894099  
    11package mk.ukim.finki.it.reservengo.service.intf;
    22
     3import mk.ukim.finki.it.reservengo.model.Reservation;
     4
     5import java.util.List;
     6
    37public interface ReservationService {
     8    Reservation getReservationById(Long id);
     9    List<Reservation> getCustomerReservations(Long id);
    410}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java

    r17bf12d r4894099  
    22
    33import mk.ukim.finki.it.reservengo.model.Customer;
     4import mk.ukim.finki.it.reservengo.model.Reservation;
    45import mk.ukim.finki.it.reservengo.model.User;
    56import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
     7import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
    68import org.springframework.http.ResponseEntity;
    79import org.springframework.security.core.annotation.AuthenticationPrincipal;
    8 import org.springframework.web.bind.annotation.CrossOrigin;
    9 import org.springframework.web.bind.annotation.GetMapping;
    10 import org.springframework.web.bind.annotation.RequestMapping;
    11 import org.springframework.web.bind.annotation.RestController;
     10import org.springframework.web.bind.annotation.*;
     11
     12import java.util.List;
    1213
    1314@RestController
     
    1718
    1819    private final CustomerService customerService;
     20    private final ReservationService reservationService;
    1921
    20     public CustomerController(CustomerService customerService) {
     22    public CustomerController(CustomerService customerService, ReservationService reservationService) {
    2123        this.customerService = customerService;
     24        this.reservationService = reservationService;
    2225    }
    2326
     
    3336        return ResponseEntity.ok(userProfile);
    3437    }
     38
     39
     40    @GetMapping("/reservations")
     41    public ResponseEntity<?> getCustomerReservations(@AuthenticationPrincipal User user) {
     42        List<Reservation> customerReservations = reservationService.getCustomerReservations(user.getId());
     43        return ResponseEntity.ok(customerReservations);
     44    }
    3545}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java

    r17bf12d r4894099  
    11package mk.ukim.finki.it.reservengo.web;
    22
     3import mk.ukim.finki.it.reservengo.model.Local;
    34import mk.ukim.finki.it.reservengo.service.intf.LocalService;
    45import org.springframework.http.ResponseEntity;
    5 import org.springframework.web.bind.annotation.CrossOrigin;
    6 import org.springframework.web.bind.annotation.GetMapping;
    7 import org.springframework.web.bind.annotation.RequestMapping;
    8 import org.springframework.web.bind.annotation.RestController;
     6import org.springframework.web.bind.annotation.*;
    97
    108@RestController
    11 @RequestMapping("/api")
     9@RequestMapping("/api/locals")
    1210@CrossOrigin("*")
    1311public class LocalController {
     
    1917    }
    2018
    21     @GetMapping("/locals")
    22     public ResponseEntity<?> getLocals(){
     19    @GetMapping
     20    public ResponseEntity<?> getLocals() {
    2321        return ResponseEntity.ok(localService.listAll());
    2422    }
     23
     24    @GetMapping("/{id}")
     25    public ResponseEntity<?> getLocalInformation(@PathVariable Long id) {
     26        Local local = localService.getLocalById(id);
     27        return ResponseEntity.ok(local);
     28    }
     29
     30
    2531}
Note: See TracChangeset for help on using the changeset viewer.