Implements the school fees gestion for a student and a payment table containing a history of all the financial transactions of the system
This commit is contained in:
		@ -13,6 +13,7 @@ import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class MinervalController {
 | 
			
		||||
    private final AuthenticatorService authServ;
 | 
			
		||||
    private final MinervalRepository mr;
 | 
			
		||||
@ -42,4 +43,14 @@ public class MinervalController {
 | 
			
		||||
        Minerval m = mlist.get(0);
 | 
			
		||||
        return new ResponseEntity<>(m, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PatchMapping("/minerval")
 | 
			
		||||
    public ResponseEntity<Object> updateMinerval(@RequestBody Minerval updatedMinerval){
 | 
			
		||||
        Minerval minerval = mr.findById(updatedMinerval.getId());
 | 
			
		||||
 | 
			
		||||
        minerval.setPaidAmount(updatedMinerval.getPaidAmount());
 | 
			
		||||
        minerval.setToPay(updatedMinerval.getToPay());
 | 
			
		||||
        mr.save(minerval);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package ovh.herisson.Clyde.EndPoints;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.MinervalRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.TokenRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
@ -29,7 +30,9 @@ public class MockController {
 | 
			
		||||
 | 
			
		||||
    public final UserCurriculumRepository ucr;
 | 
			
		||||
 | 
			
		||||
    public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService, UserCurriculumRepository ucr){
 | 
			
		||||
    public final MinervalRepository minervalRepository;
 | 
			
		||||
 | 
			
		||||
    public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService, UserCurriculumRepository ucr, MinervalRepository minervalRepository){
 | 
			
		||||
        this.tokenRepo = tokenRepo;
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
        this.tokenService = tokenService;
 | 
			
		||||
@ -38,6 +41,7 @@ public class MockController {
 | 
			
		||||
        this.courseService = courseService;
 | 
			
		||||
        this.inscriptionService = inscriptionService;
 | 
			
		||||
        this.ucr = ucr;
 | 
			
		||||
        this.minervalRepository = minervalRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Saves an example of each user type by :
 | 
			
		||||
@ -61,6 +65,8 @@ public class MockController {
 | 
			
		||||
 | 
			
		||||
        userRepo.saveAll(mockUsers);
 | 
			
		||||
 | 
			
		||||
        Minerval minerval = new Minerval(joe.getRegNo(), 0, 852, 2023);
 | 
			
		||||
        minervalRepository.save(minerval);
 | 
			
		||||
        // Course / Curriculum part
 | 
			
		||||
 | 
			
		||||
        Curriculum infoBab1 = new Curriculum(1,"info");
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,42 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.PaymentRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Minerval;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Payment;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
import java.util.GregorianCalendar;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class PaymentController {
 | 
			
		||||
 | 
			
		||||
    private final PaymentRepository paymentRepository;
 | 
			
		||||
 | 
			
		||||
    public PaymentController(PaymentRepository paymentRepository){
 | 
			
		||||
        this.paymentRepository = paymentRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Post a payment record
 | 
			
		||||
    @PostMapping("/payment")
 | 
			
		||||
    public ResponseEntity<Object> postPayment(@RequestBody Payment payment){
 | 
			
		||||
        paymentRepository.save(payment);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //Get all payment records of a student
 | 
			
		||||
    @GetMapping("/payment/{studentRegNo}")
 | 
			
		||||
    public ResponseEntity<ArrayList<Payment>> getPaymentsByUser(@PathVariable long studentRegNo){
 | 
			
		||||
        ArrayList<Payment> toReturn = paymentRepository.getPaymentsByStudentRegNo(studentRegNo);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -7,4 +7,6 @@ import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface MinervalRepository extends CrudRepository<Minerval, Long> {
 | 
			
		||||
    public ArrayList<Minerval> getMinervalsByStudentRegNoOrderByYearDesc(Long studentRegNo);
 | 
			
		||||
 | 
			
		||||
    public Minerval findById(long id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,10 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Payment;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface PaymentRepository extends CrudRepository<Payment, Long> {
 | 
			
		||||
    public ArrayList<Payment> getPaymentsByStudentRegNo(long regNo);
 | 
			
		||||
}
 | 
			
		||||
@ -2,14 +2,8 @@ package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.InscriptionRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.UserCurriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
public class InscriptionService {
 | 
			
		||||
@ -22,14 +16,16 @@ public class InscriptionService {
 | 
			
		||||
 | 
			
		||||
    private final CurriculumRepository curriculumRepo;
 | 
			
		||||
 | 
			
		||||
    private final MinervalRepository minervalRepository;
 | 
			
		||||
    private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo){
 | 
			
		||||
    public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo, MinervalRepository minervalRepository){
 | 
			
		||||
        this.inscriptionRepo = inscriptionRepo;
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
        this.userCurriculumRepo = userCurriculumRepo;
 | 
			
		||||
        this.curriculumRepo = curriculumRepo;
 | 
			
		||||
        this.minervalRepository = minervalRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest save(InscriptionRequest inscriptionRequest){
 | 
			
		||||
@ -82,6 +78,11 @@ public class InscriptionService {
 | 
			
		||||
 | 
			
		||||
            userRepo.save(userFromRequest);
 | 
			
		||||
            userCurriculumRepo.save(new UserCurriculum(userFromRequest, curriculumRepo.findById(inscrRequest.getCurriculumId()),0));
 | 
			
		||||
 | 
			
		||||
            //Create a minerval for the new student
 | 
			
		||||
            Minerval minerval = new Minerval(userFromRequest.getRegNo(), 0, 852, 2023);
 | 
			
		||||
            minervalRepository.save(minerval);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        inscrRequest.setState(requestState);
 | 
			
		||||
        save(inscrRequest);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										84
									
								
								backend/src/main/java/ovh/herisson/Clyde/Tables/Payment.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								backend/src/main/java/ovh/herisson/Clyde/Tables/Payment.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,84 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.Entity;
 | 
			
		||||
import jakarta.persistence.GeneratedValue;
 | 
			
		||||
import jakarta.persistence.GenerationType;
 | 
			
		||||
import jakarta.persistence.Id;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class Payment {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private long id;
 | 
			
		||||
 | 
			
		||||
    private long studentRegNo;
 | 
			
		||||
    private String card;
 | 
			
		||||
    private String client;
 | 
			
		||||
    private Date expDate;
 | 
			
		||||
    private int amount;
 | 
			
		||||
    private Date date;
 | 
			
		||||
    public Payment(){}
 | 
			
		||||
 | 
			
		||||
    public Payment(long studentRegNo, String card, String client, Date expDate, int amount, Date date){
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
        this.card = card;
 | 
			
		||||
        this.client = client;
 | 
			
		||||
        this.expDate = expDate;
 | 
			
		||||
        this.amount = amount;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getStudentRegNo() {
 | 
			
		||||
        return studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setStudentRegNo(long studentRegNo) {
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCard() {
 | 
			
		||||
        return card;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCard(String card) {
 | 
			
		||||
        this.card = card;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getClient() {
 | 
			
		||||
        return client;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setClient(String client) {
 | 
			
		||||
        this.client = client;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getExpDate() {
 | 
			
		||||
        return expDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setExpDate(Date expDate) {
 | 
			
		||||
        this.expDate = expDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getAmount() {
 | 
			
		||||
        return amount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAmount(int amount) {
 | 
			
		||||
        this.amount = amount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getDate() {
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDate(Date date) {
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user