Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 31 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -32,11 +32,7 @@
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand All @@ -53,8 +49,35 @@
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/kernel -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>8.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/layout -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>8.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

</dependencies>
</dependencies>

<build>
<plugins>
Expand All @@ -73,4 +96,4 @@
</plugins>
</build>

</project>
</project>
4 changes: 3 additions & 1 deletion src/main/java/com/allali/Stock/StockApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ CommandLineRunner start(Initiation initiation){
//initiation.initTransition2();
};
}
}

}

50 changes: 50 additions & 0 deletions src/main/java/com/allali/Stock/config/SecurityConfiguration.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.allali.Stock.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;

import static org.springframework.security.config.Customizer.withDefaults;

@Configuration
public class SecurityConfiguration {

@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}

@Bean
public UserDetailsService userDetailsService(){
UserDetails user = User.builder()
.username("admin")
.password(passwordEncoder().encode("password"))
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/h2-console/**","/api/v1/**").permitAll() // Allow access to H2 console without authentication
.anyRequest().authenticated()) // All other requests require authentication
.formLogin(withDefaults()) // Enable form-based login with default configuration
.httpBasic(withDefaults()) // Enable HTTP Basic authentication with default configuration
.csrf(AbstractHttpConfigurer::disable) // Disable CSRF protection for H2 console
.headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)); // Disable frame options for H2 console

return http.build();
}


}
16 changes: 16 additions & 0 deletions src/main/java/com/allali/Stock/controllers/MessageController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.allali.Stock.controllers;



import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MessageController {

@GetMapping("/ok")
public String getMessage() {
return "Hello, world!";
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,13 @@ public ResponseEntity<Transition> addTransitionClient(@RequestBody Transition tr

@GetMapping("/all")
public List<Transition> getAllTransition() {
List<Transition> transitions = transitionService.findAll();
return transitions;
return transitionService.findAll();
}
//@DeleteMapping("/delete/{id}")
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteTransition(@PathVariable Long id) {
transitionService.deleteTransition(id);
return ResponseEntity.noContent().build();
}}
}


}
13 changes: 9 additions & 4 deletions src/main/java/com/allali/Stock/entitie/Article.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,18 @@ public class Article {
private String description ;
private Double price ;
private String brand ;
@ManyToOne

// Lazy loading for category
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnore
private Category category ;
@ManyToMany

// Lazy loading for list of fournisseurs
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnore
private List<Fournisseur> list = new ArrayList<>() ;
@ManyToOne
private Transition transition ;

// Lazy loading for transition
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Transition transition ;
}
3 changes: 2 additions & 1 deletion src/main/java/com/allali/Stock/entitie/Client.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.allali.Stock.entitie;


import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -15,7 +16,7 @@
@AllArgsConstructor @NoArgsConstructor

public class Client extends Users {

@JsonIgnore
@OneToMany(mappedBy = "client" , fetch = FetchType.LAZY,cascade = CascadeType.ALL)
private List<Transition> transitionList = new ArrayList<>() ;
}
2 changes: 1 addition & 1 deletion src/main/java/com/allali/Stock/entitie/Transition.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class Transition {
private Fournisseur fournisseur ;
@OneToMany(mappedBy = "transition" , fetch = FetchType.LAZY ,cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
private List<Article> articleList = new ArrayList<>() ;
private List<Article> article = new ArrayList<>() ;
@OneToMany(mappedBy = "transition" , fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JsonIgnore
private List<PrixAchat> prixAchats ;
Expand Down
10 changes: 7 additions & 3 deletions src/main/java/com/allali/Stock/entitie/Users.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@ public class Users {
private String address ;
private String phoneNumber ;
private Date dateNaissance ;
@ManyToMany

// Lazy loading for list of roles
@ManyToMany(fetch = FetchType.LAZY)
private List<Role> list = new ArrayList<>();
@ManyToMany
private List<Notification> notificationList = new ArrayList<>() ;

// Lazy loading for list of notifications
@ManyToMany(fetch = FetchType.LAZY)
private List<Notification> notificationList = new ArrayList<>();
}
8 changes: 4 additions & 4 deletions src/main/java/com/allali/Stock/service/Initiation.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void initTransition(){
transition.setStatus(TransactionStatus.COMPLETED);
transition.setTransitionType(TransitionType.ACHAT);
transition.setClient((Client) user);
transition.getArticleList().add(article);
transition.getArticle().add(article);
((Client) user).getTransitionList().add(transition);
userRepository.save(user);
transitionRepository.save(transition);
Expand All @@ -75,15 +75,15 @@ public void initTransition(){
}
public void initTransition2(){
userRepository.findAll().forEach(user -> {
if(user instanceof Fournisseur) {
if(user instanceof Fournisseur) {
Article article = articleRepository.findById(2L).orElse(null);
Transition transition1 = new Transition();
transition1.setTotalAmount(2004.5);
transition1.setTransactionDate(new Date());
transition1.setStatus(TransactionStatus.COMPLETED);
transition1.setTransitionType(TransitionType.ACHAT);
transition1.setFournisseur((Fournisseur)user);
transition1.getArticleList().add(article);
transition1.getArticle().add(article);
((Fournisseur) user).getTransitionList().add(transition1);
article.setTransition(transition1);
articleRepository.save(article);
Expand Down Expand Up @@ -117,4 +117,4 @@ public void initClient(){
});
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.allali.Stock.repositorie.UserRepository;
import com.allali.Stock.service.article.ArticleService;
import com.allali.Stock.service.users.UserService;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

Expand Down Expand Up @@ -41,26 +42,23 @@ public Transition addTransitionClient(Transition transition, Long idClient, Long
// Set transaction details in the transition entity
transition.setTransactionDate(new Date());
transition.setTotalAmount(article.getPrice());
client.getTransitionList().add(transition);
userRepository.save(client);
articleRepository.save(article);


// Set client and article in the transition entity
// Set the client and article in the transition entity
transition.setClient(client);
transition.getArticleList().add(article);
Transition transition1 =transitionRepository.save(transition);
transition.getArticle().add(article);

client.getTransitionList().add(transition1);
article.setTransition(transition);
userRepository.save(client);
articleRepository.save(article);
// Add the transition to the client's transition list
client.getTransitionList().add(transition);

return transition1 ;
// Save the client, which cascades to save the transition as well
userRepository.save(client);

return transition;
}


@Override
@JsonIgnore
public List<Transition> findAll() {
return transitionRepository.findAll();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import java.util.List;

public interface UserService {
public interface UserService {
public Fournisseur saveFournisseur(Fournisseur fournisseur);

Users saveUser(Users users);
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
spring.application.name=Stock
spring.datasource.url=jdbc:h2:mem:Stock
spring.h2.console.enabled=true
server.port=2018
server.port=2018