From d9ec91cd7ef0d7e4984888f9a2bbc20e4a7d8053 Mon Sep 17 00:00:00 2001 From: Akram Zaabi Date: Fri, 6 Dec 2024 10:11:46 +0100 Subject: [PATCH] commit --- .../java/com/example/demo/entities/Event.java | 4 +- .../example/demo/entities/Participation.java | 6 + .../repositories/ParticipationRepository.java | 4 +- .../example/demo/services/EventService.java | 41 ++++++- .../com/example/demo/entities/Event.class | Bin 8646 -> 8540 bytes .../example/demo/entities/Participation.class | Bin 4722 -> 4934 bytes .../ParticipationRepository.class | Bin 373 -> 565 bytes .../example/demo/services/EventService.class | Bin 6676 -> 7771 bytes Frontend/src/app/events/events.component.css | 6 +- Frontend/src/app/events/events.component.html | 64 ++++++++++- Frontend/src/app/events/events.component.ts | 108 ++++++++++++++++-- Frontend/src/app/models/Participation.ts | 10 ++ Frontend/src/app/models/event.model.ts | 2 +- .../registration.service.spec.ts | 16 +++ .../participation/registration.service.ts | 32 ++++++ 15 files changed, 268 insertions(+), 25 deletions(-) create mode 100644 Frontend/src/app/models/Participation.ts create mode 100644 Frontend/src/app/services/participation/registration.service.spec.ts create mode 100644 Frontend/src/app/services/participation/registration.service.ts 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 859f360ba5d85d1a20756420528f6cbf53b0e825..402274b68de580d9aee014b61957f97053a7579c 100644 GIT binary patch literal 8540 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 U^IJT>raxj72J|Pi0I!qrU;A3jEC2ui 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 03c6f9e545f5b3549f0f5a16ad55971a8fbc4c79..b9996171f694f7b9fb11629839f806f1527b1320 100644 GIT binary patch literal 4934 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 E0J}&G2LJ#7 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 56f3d2017d93967147291846af88328b85a80b94..1ac46fbdffb6a0383eca1ea09c8d42ca15eb79d9 100644 GIT binary patch literal 7771 zcmd5>33wFc8GdK8n@N`8K6GgX(UpVeBe zRcoz1Y_(Q;i`D{>*515Gwa2wvgWhE)<0}&h4HGIVo0OFq&rU>}?6gPO zlQ3Dw6ay#VL=9sGKGslXdzNcbZw*rh>|U3hr-Z3^la4nVI0@5uMnOVu303GZ(=FC6 zx|E*WB0FXnI2kiF1e0odQciY}|Lb+k)-ZjLwe+U#<^3eE%r!6%6?ApVa??&SY2}?? zJ=oQGm^KbvTpz|PR2is7jfPR(mbYPN(sJAFc#+?fc1=#Qn^vEKsE+vt-hu@hDhFvf z+%Y7Y;IS%`_MBeJZRlIa0~S>HxD@194puyG_gR#!v|VIiF_sXdbXHppvnpO|V`ZE0 zX{mwJP{*yJjITsRu@Zg=)EDz*L&~$Aq?zE+%dlL>3IlJ&=>rhYEn(<5Zet>CF;0e; zT8woV4OpdPwSh*g$?-7n4l-zmnaEfhx-?9zSfAA@|CkyzV6B05Sg)ZxL44X|wPM?P zfwjp%v%p$LSU0*1(l9n)qmH*3h@o}Bam}XJ!;QV>E)AiI_3JB@fU_h?v}w4gVoMQH zt)6R>3&)&MY$;k%bg!atwdq;IN+_)GQ9H-LW^s8iZSJ5ATXC+A^9-Dib`A3!w>z3n ziAG(n*=y}|-0jgG&r3yPRyyS*(^jJd4)agI*{)&vkhqLc1|7Z?rhyK0(y2+uTjOMs z6AW38`Y$3pGW4SmWU$%Hcpd9*kMsgfoBy2`-S63~VOw94a5)H<$ZdMMPNm9A^{$(As# zL5UnZR?6Kw4BUWsGRDm~51d?lU@q%zkuz>G@Gji!Cygv7vq-8zR_AHrgChCn76Z46 zdLgQ}E?$oJ;C3DFHE;*s#}qv*wbwFQTRqduq^Z}smQ9VZmX%HIt&Op^##nn}EVd!0 zVb1UYR@koM^Zf=sfDbYir?Vn2s2IuKRZiSu-XB)Uf!SnsgA?y7#PD7Cu#S%yxLY#P z!q*{#xvhf|#s5w6bFYDq;XXewROXffaCADYWM+=UGE8s1R-2u+I}+B)B(su=SNd}4 zkk)iqW-=Y^GCQR!i<<_gA6mV=p&Q`@U4pf`vz|UG|!1te_R6$=c5C&1Nd=hw@gtJ4qh9JbiJlwacGB zGMS5p1Z}6)5$#~hQj8Z}$fHwIiWzdMQD8QV`kp0qI8g2&BL`FGHSJ@)lpZka#6o80 zQ3^FaYPP%{C(ew?vdgxZIF9mP0-_h&@k^Q1268jMZ~#e{jM(0dY*BK=6N)BzERR%f z*p&^Eu$f4-=U5f!WivBAs}eh#c6JG!R+MwD)y@29xynC6E)91V`)DK`&fqmgm9Wsk z6cOv_o=2@8amo>pQ$3F7ND!)QuRzJF!H4W}Btl2Ut#qertFBeHh|O#d<7~KATOAp` zj1&ik(uuT@$7^iXcHNQwUusfW(%PvUL|z=|kb2>Bwm9XDmm z{dZG!x^79j7ix{mt6;_3ecl|a!x+$%(dP5tIF)^NO!84?&6hmkdx}t(DFc)(6Pb33 zj1U``|LO-Rc0A#oeIFW8!5HWgVf2dEf3|P*l&G?z$f|4}AKhWc<1900rG!)(HVske z^WES;#g51PfW>sJ@m04x<#-~`Ot1rCLeGm-y~5>h!0E>-&H2+MT>{FTSRiTD(MMJN~G)A$Up8a|5&R6#a>nTLjW zT~YNA^nQ%i&{W-zi5i+~`VrA^C+2W4UE{)8EnG9Fb}uUXQ5!&Aur?Chi-o(7JX5`g z5`vIZr}A82Ho}<0-+5R_BTqvmzf)ByO{%zVA=liGJsi!(WITWesS7p8Y8S>Ld=3v$ z%g=LGH1}ura#V-Prm@j52ynEDE(?&n+p{mPMJxaML09oPyjjW2NYMLfcD#L|no zD#+_Rv6MER8i2MJ^|Y&5?5fGx)lx$f7uJYL0cFwzwJl1Q&BqLWWSoNqc~dAZtG0~3 zL@%)wqETO=Q30;jm7yj0Dy4-qF2E3aehpveydfxlgMW{vxlY4D)KG+Ievk?XMhyjw z%J*Ysvkz2DZ5F869QZ)h1!>J0g3g(|?njHP-hJd*WmGXvr_#4eF_s8bp&rYL(&_va z#t2STm`L>>ROUD2(OHUbDs;vY$8RbA6mXJfIh@8La2Qh*P7MmG${|dDjD~(2-=TS8 z=!;Y*EQTJytj#60HIZOMkA$itrTeg{u1u_tl=b860L~V~BIK*^usl-sDEPAO89!KcwTzc-kcVh}x7Z>W+eT2&d_orQ;bziIa4m z2A%_+0LliXg7QE~$Wr^qdB6RHdim7;siMpUIwyW6lWEGy4<9cKpC}BUq$%08KgTaP z|I0LfRhavAVJOu#wZF6-^B(x8Sy3$B# zB(xU}FJxnyt9L|7`*9H=jFbvsl;=m;G$s2S2K;7B#}<-*D{(p(bvO@e(5|pr>z|*; zs!5?CST*4}MMW7s&ru2GoQ~hCBr~08NIZrpa|Q|h0Vo1_@zIsO zV?*RV9hcsHCRGb4K#-Sd<*Xgk1iuEz9M$m-0UR zbKZxAT>O_IbKGC?H{V;@Q!Bqax&ud+~1WmCJnyM@s90yHUFP$di%a zK^Xa5BGAYQIb=cyG44U!wjXzD{rFG-dm=$TzGp8!DoTrTir>L3zkR4;%mlzr0@lY0 zaS?0DB}})M@qe;hfwj1bndxc*crDA+b^IiIJ!fv<-HrUc3Af>9+=E-_)>{e8?JR0{ zF!kQ4pp8-Dd}f@#6VMPPMDP#AaLFouxtEc!o-Ye5CI3{=PN0l`aa6){uTgu0JfSvA z5CMJ)0rA%h@c#Ojxn3wR7iEVrRZ&2yaMdePlEXT-@#YlXjD8g}aw(2g?|yFaqwC*! zX8ech_^Ip_#SC4l-+#HV1h4WpfJ18OG~OTP{gK>qE|Y%&Dezi}CYg8wS6kSsg-XkD K7q6wI<^Kapfu@uI delta 2481 zcmZ`)X>?OX7`^lIlJ}Clq#GiEwg!ZjrYV%AP!QQ}U{iL&0Tm zU%(CAK%g2L5L6UU1VIoLPz2m@!{r>$K?Lu-loSqCn2o22iJ!h1MvRyR|kx589%gf%X@8oZ+1m53%$`tE)=cNq!=;TSG$5kl3DHg6rv49bcR9_a2RJmayYM~la zKOh=k3^F|9X%$24YG%GRB!p)d3i_La9Ik?rr zZ7R5v0sB|DaR(L{xYNR2SSaV3<6U=KxCi&jW9B5k#9{;YTX+DY1=`7SXG=NQ?UhU1 zZeJw^sw5w_@CY82uey)QW1fhNcz+U2Q5T6Xtk$|<^6PWH7ROoseDqd;!*&C!1iGzE|rJ0Yy#(( zPo{^}%19p)89OdoT~%HksTi%`lHrViOiv5Rjah!#C3BIfPvxz^1v2O@q-na#z?XtF zV+#yrAP`G=ot{}BbF-$^Y|m;hVk9609wT*K+#lzz!3*m@ckIl+?hKxtw$&4~YR!}2 z?hLJkSZ%vm!e8YSXoRKwRZgjZC-D?_fv1s)m;=gs7>}A#3B3X%0iVFY!c{ywpqzN@ zZ_T;4upKo_>ee|@U!TFV^sr2M;GVo$PU$(`Xn5YP&(HG8>tEI>yUb#h96V6;@*nt%ER76T>Sk@>RNX3ToginZ~h}_m+aUmMamZp1?Zf(TBor zDeQPmDsV_gZ&n`>1 z%WBNdfiHvy?U07{2%!VtwvOn|>08P#s=N@gP{UFbZaq`YD8+ia8ELe9jU{Vmv_*YW zZP`GJ3}`3OkPlX=fwl&^9!J4hir+}>*O|1_E_DaxtPYK?{CdQ&~yhTZou>@~Za@f*l z`c-w7U<(0PaF^g6#J1WnmEc_}8VnS~HUeVW1)2~i5H|Rfs`lm>i~#xuy#kxLws5_} z^)6SEsPCl^*v?#%MBQPxe~g;8_tj;Teol)q`a3PtZA#qC{Ogo=Vi)f}h+=pB-Jbfp zl*xzG+KZ1^q~g?gDyzbSiu{FfjJL^OR!HJZ=2aEBHBH0iF?&eQ9E8E};}Y^>2y!vh zMmm^ultMa4&V0;ZevZN?WWRQr{WXlI-XS%o_2uug%QqDJ_w%E`0eqTdgV=+ZM%00w z>oN0+wV16&wJL!*N!FA6o%MiTNB?{!+5E5U>%waG=vT+Y+T3xy>Xbw|E60o5exW7 zD`S|#_q2+06(yR}NWB?k)GQnOA#_vA{RNMKN*-GA z;5&h!fiKQ%dy@TMrP}{B`qRVb-DirE#vNv 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); + } + +}