diff --git a/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Event.java b/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Event.java index 92c27ccc..1fee6de7 100644 --- a/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Event.java +++ b/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Event.java @@ -30,12 +30,12 @@ public class Event { @Column(name="photo",length=99999999) private String photo; - public Event(boolean b, String description, String title, Long price, String ownerId, Date dateDebut, String photo, Date dateFin) { + public Event(boolean b, String description, String title, Long price, Long ownerId, Date dateDebut, String photo, Date dateFin) { this.status = b; this.description = description; this.title = title; this.price = price; - this.owner_id = Long.parseLong(ownerId); + this.owner_id = ownerId; this.date_debut = dateDebut; this.photo = photo; this.date_fin=dateFin; diff --git a/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Participation.java b/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Participation.java index ad978318..6139ad43 100644 --- a/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Participation.java +++ b/Backend/service_event2/demo/src/main/java/com/example/demo/entities/Participation.java @@ -23,6 +23,12 @@ public class Participation { @JoinColumn(name = "event_id", nullable = false) private Event event; + public Participation(Long price,Long person_id, Event event) + { + this.price= price; + this.person_id = person_id; + this.event = event; + } @Transient private User user; } diff --git a/Backend/service_event2/demo/src/main/java/com/example/demo/repositories/ParticipationRepository.java b/Backend/service_event2/demo/src/main/java/com/example/demo/repositories/ParticipationRepository.java index cf5db5ab..3e10d1b9 100644 --- a/Backend/service_event2/demo/src/main/java/com/example/demo/repositories/ParticipationRepository.java +++ b/Backend/service_event2/demo/src/main/java/com/example/demo/repositories/ParticipationRepository.java @@ -4,7 +4,9 @@ import com.example.demo.entities.Participation; import org.springframework.data.jpa.repository.JpaRepository; -public interface ParticipationRepository extends JpaRepository { +import java.util.List; +public interface ParticipationRepository extends JpaRepository { + List findAllByEventId(Long eventId); } diff --git a/Backend/service_event2/demo/src/main/java/com/example/demo/services/EventService.java b/Backend/service_event2/demo/src/main/java/com/example/demo/services/EventService.java index 62644ad0..6612bd9a 100644 --- a/Backend/service_event2/demo/src/main/java/com/example/demo/services/EventService.java +++ b/Backend/service_event2/demo/src/main/java/com/example/demo/services/EventService.java @@ -34,6 +34,11 @@ public class EventService { public List GetAllevents() { List e= eventRepository.findAll(); + for(Event tmp :e) + { + User p = personneService.findCustomerById(tmp.getOwner_id()); + tmp.setOwner(p); + } return e ; } @GetMapping("/Event/{id}") @@ -63,10 +68,12 @@ public ResponseEntity registerEventUser( @RequestParam("photo") String photo, @RequestParam("price") Long price, @RequestParam("date_debut") @DateTimeFormat(pattern = "yyyy-MM-dd")Date dateDebut, @RequestParam("date_fin") @DateTimeFormat(pattern = "yyyy-MM-dd")Date dateFin, - @RequestParam("owner_id") String ownerId) { + @RequestParam("owner_id") Long ownerId) { Event newEvent = new Event(false,description,title,price,ownerId,dateDebut,photo,dateFin); eventRepository.save(newEvent); + User user = personneService.findCustomerById(ownerId); + if (newEvent != null) { return ResponseEntity.ok(newEvent); } else { @@ -75,13 +82,37 @@ public ResponseEntity registerEventUser( @RequestParam("photo") String photo, } @PostMapping("/EventResgistration/") - public Participation EventRegistration(@RequestBody Participation p ) - { - User Registrated_User = personneService.findCustomerById(p.getPerson_id()); + public ResponseEntity EventRegistration(@RequestParam("price") Long price, + @RequestParam("person_id") Long person_id, + @RequestParam("event_id") Long eventId) { + User Registrated_User = personneService.findCustomerById(person_id); + Event event = eventRepository.findById(eventId).orElse(null); // Fetch event by ID + Participation p = new Participation(price, person_id, event); + p.setEvent(event); p.setUser(Registrated_User); participationRepository.save(p); - return p ; + + return ResponseEntity.ok(p); + } + + + @GetMapping("/UsersRegistrated/{id}") + public ResponseEntity GetRegistratedUsers(@PathVariable(name="id") Long event_id) + { + Listp = participationRepository.findAllByEventId(event_id); + for(Participation tmp : p) + { + User user = personneService.findCustomerById(tmp.getPerson_id()); + tmp.setUser(user); + } + if (p != null) { + return ResponseEntity.ok(p); + } else { + return ResponseEntity.notFound().build(); + } } + + @PutMapping("/updateBidding") public ResponseEntity biddingUpdate(@RequestBody Participation p) { diff --git a/Backend/service_event2/demo/target/classes/com/example/demo/entities/Event.class b/Backend/service_event2/demo/target/classes/com/example/demo/entities/Event.class index 859f360b..402274b6 100644 Binary files a/Backend/service_event2/demo/target/classes/com/example/demo/entities/Event.class and b/Backend/service_event2/demo/target/classes/com/example/demo/entities/Event.class differ diff --git a/Backend/service_event2/demo/target/classes/com/example/demo/entities/Participation.class b/Backend/service_event2/demo/target/classes/com/example/demo/entities/Participation.class index 03c6f9e5..b9996171 100644 Binary files a/Backend/service_event2/demo/target/classes/com/example/demo/entities/Participation.class and b/Backend/service_event2/demo/target/classes/com/example/demo/entities/Participation.class differ diff --git a/Backend/service_event2/demo/target/classes/com/example/demo/repositories/ParticipationRepository.class b/Backend/service_event2/demo/target/classes/com/example/demo/repositories/ParticipationRepository.class index 91bbe03a..a3d3d0bc 100644 Binary files a/Backend/service_event2/demo/target/classes/com/example/demo/repositories/ParticipationRepository.class and b/Backend/service_event2/demo/target/classes/com/example/demo/repositories/ParticipationRepository.class differ diff --git a/Backend/service_event2/demo/target/classes/com/example/demo/services/EventService.class b/Backend/service_event2/demo/target/classes/com/example/demo/services/EventService.class index 56f3d201..1ac46fbd 100644 Binary files a/Backend/service_event2/demo/target/classes/com/example/demo/services/EventService.class and b/Backend/service_event2/demo/target/classes/com/example/demo/services/EventService.class differ diff --git a/Frontend/src/app/events/events.component.css b/Frontend/src/app/events/events.component.css index 99e1795a..8cbb8c91 100644 --- a/Frontend/src/app/events/events.component.css +++ b/Frontend/src/app/events/events.component.css @@ -1,4 +1,8 @@ -.event-block{ +.event-block { width: 80%; } + +*{ + box-sizing:border-box; +} diff --git a/Frontend/src/app/events/events.component.html b/Frontend/src/app/events/events.component.html index 60eefd63..25ea2888 100644 --- a/Frontend/src/app/events/events.component.html +++ b/Frontend/src/app/events/events.component.html @@ -1,10 +1,10 @@ -
+
-

+

Annonces des fermes à vendre en Tunisie !!!!!!!!
@@ -138,7 +138,7 @@

placeholder="Write the event description here ...">

- + + + +
+ +
+
Description :
+

{{ SelectedEvent.description }}

+
+ + +
+
Prix :
+

{{ SelectedEvent.price }}

+
+ +
+
Image :
+ Event Image +
+
+ + + + + + diff --git a/Frontend/src/app/events/events.component.ts b/Frontend/src/app/events/events.component.ts index 0f2c1b7f..4644ce6c 100644 --- a/Frontend/src/app/events/events.component.ts +++ b/Frontend/src/app/events/events.component.ts @@ -1,9 +1,14 @@ -import { Component,OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { NavbarComponent } from '../accueil/navbar/navbar.component'; import { CommonModule, CurrencyPipe, NgForOf, NgIf } from '@angular/common'; import { event } from '../models/event.model'; import { EventService } from '../services/event/event.service'; import { FormsModule } from '@angular/forms'; +import { User } from '../models/user.model'; +import { Participation} from '../models/Participation'; + +import { RegistrationService } from '../services/participation/registration.service'; +import { UserService } from '../services/user/user.service'; @Component({ selector: 'app-events', standalone: true, @@ -17,28 +22,90 @@ import { FormsModule } from '@angular/forms'; }) export class EventsComponent implements OnInit { - event_created={status:false,description:"",title:"",price:0, - photo:"",date_debut:'',date_fin:'',owner_id:1,owners:'',users:[] - } ; + Owner!: User; + + curr_users!: Participation[]; + + SelectedEvent: event = { + id: -1, + status: false, + description: '', + title: '', + price: 0, + owner_id: 0, + photo: '', + date_debut: '', + date_fin: '', + owner: this.Owner, + users: [], + } + value = 0 ; + isModalOpenDetailsEvent:boolean=false; + event_created = { + status: false, description: "", title: "", price: 0, + photo: "", date_debut: '', date_fin: '', owner_id: 1, owners: '', users: [] + }; annonces: event[] = []; - constructor(private eventService:EventService) { + constructor(private eventService: EventService , private registrationService:RegistrationService , private userService:UserService) { } ngOnInit(): void { + this.load_events(); + this.get_user(1); + + } + get_user(id:number) + { + this.userService.getUser(id).subscribe({ + next:(res) =>{ + this.Owner = res; + console.log(res); + + }, + error:(err)=>{ + console.log("error getting user",err); + + } + }) + } + + openModelDetailsEvent(Ev:event):void + { + this.SelectedEvent = Ev; + const formData = new FormData(); + formData.append("event_id",Ev.id.toString()); + this.registrationService.getRegistratedUsers(Ev.id).subscribe({ + next:(res)=>{ + this.curr_users = res; + console.log(res); + }, + error:(err)=>{ + console.log("error getting registrated users ",err); + + } + }) + + this.isModalOpenDetailsEvent= true; + + } + closeModalDetailsEvent():void{ + this.isModalOpenDetailsEvent=false; + } + load_events() { this.eventService.getEvents().subscribe({ - next:(data) => { + next: (data) => { this.annonces = data; }, - error:(err) =>{ - console.log("error : ",err); + error: (err) => { + console.log("error : ", err); } }) } onFileChanged(event: any) { const file = event.target.files[0]; - this.event_created.photo =file; + this.event_created.photo = file; const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { @@ -46,22 +113,41 @@ export class EventsComponent implements OnInit { }; } + RegisterForEvent() { + const formData = new FormData(); + + formData.append("price", this.value.toString()); + formData.append("person_id", this.Owner.id.toString()); + formData.append("event_id", this.SelectedEvent.id.toString()); + + this.registrationService.register(formData).subscribe({ + next: (response) => { + console.log("Registration successful", response); + }, + error: (err) => { + console.error("Error during registration", err); + } + }); +} + + CreateEvent(): void { - const formData = new FormData(); + const formData = new FormData(); formData.append("photo", this.event_created.photo.toString()); // Either the base64 or the file formData.append("title", this.event_created.title); formData.append("description", this.event_created.description); formData.append("price", this.event_created.price.toString()); formData.append("date_debut", this.event_created.date_debut); formData.append("date_fin", this.event_created.date_fin); - formData.append("owner_id","1"); + formData.append("owner_id", "1"); formData.forEach((value, key) => { console.log(key + ": " + value); }); this.eventService.addEvent(formData).subscribe({ next: (response) => { console.log("Event created successfully:", response); + this.load_events(); }, error: (error) => { console.error("Error creating event:", error); diff --git a/Frontend/src/app/models/Participation.ts b/Frontend/src/app/models/Participation.ts new file mode 100644 index 00000000..13d26416 --- /dev/null +++ b/Frontend/src/app/models/Participation.ts @@ -0,0 +1,10 @@ +import { event } from "./event.model"; +import { User } from "./user.model"; + +export interface Participation { + price: number, + user: User, + person_id:number, + id?:number, + Event: event +} diff --git a/Frontend/src/app/models/event.model.ts b/Frontend/src/app/models/event.model.ts index 8c6a2b9b..57039ec0 100644 --- a/Frontend/src/app/models/event.model.ts +++ b/Frontend/src/app/models/event.model.ts @@ -1,7 +1,7 @@ import { User } from "./user.model"; export interface event { - id?: number; + id: number; status: boolean; description: string; title: string; diff --git a/Frontend/src/app/services/participation/registration.service.spec.ts b/Frontend/src/app/services/participation/registration.service.spec.ts new file mode 100644 index 00000000..5f3dfc3c --- /dev/null +++ b/Frontend/src/app/services/participation/registration.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RegistrationService } from './registration.service'; + +describe('RegistrationService', () => { + let service: RegistrationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RegistrationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/Frontend/src/app/services/participation/registration.service.ts b/Frontend/src/app/services/participation/registration.service.ts new file mode 100644 index 00000000..67077f48 --- /dev/null +++ b/Frontend/src/app/services/participation/registration.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class RegistrationService { + + private apiUrl = 'http://localhost:8888/events/'; + + constructor(private http: HttpClient) { } + + // Méthode pour récupérer des données + getRegistratedUsers(id:any): Observable { + // console.log(this.http.get(this.apiUrl)) + return this.http.get(`${this.apiUrl}UsersRegistrated/${id}`); + } + + register(item: any): Observable { + return this.http.post(`${this.apiUrl}EventResgistration/`,item); + } + + deleteEvent(id: string): Observable { + return this.http.delete(`${this.apiUrl}Event/${id}`); + } + + updateEvent(id: string,item:any): Observable { + return this.http.put(`${this.apiUrl}/${id}`, item); + } + +}