From ed1586a2073f7510adb3b04d0f9fb1d5a412db6a Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Fri, 31 May 2024 00:29:34 +0200 Subject: [PATCH] feat: added rest of components --- .../backend/src/app/danie/danie.controller.ts | 33 +++++++++- .../backend/src/app/danie/danie.module.ts | 3 +- .../backend/src/app/danie/danie.service.ts | 35 +++++++++- monorepo/apps/frontend/src/app/app.routes.ts | 16 ++++- .../src/app/danie/danie.component.html | 28 +++++++- .../frontend/src/app/danie/danie.component.ts | 63 +++++++++++++++++- .../historia-zamowien.component.html | 24 ++++++- .../historia-zamowien.component.ts | 62 +++++++++++++++++- .../src/app/recenzja/recenzja.component.html | 30 ++++++++- .../src/app/recenzja/recenzja.component.ts | 62 +++++++++++++++++- .../app/uzytkownik/uzytkownik.component.html | 30 ++++++++- .../app/uzytkownik/uzytkownik.component.ts | 64 ++++++++++++++++++- .../app/zamowienie/zamowienie.component.html | 24 ++++++- .../app/zamowienie/zamowienie.component.ts | 60 ++++++++++++++++- .../zamowione-danie.component.html | 24 ++++++- .../zamowione-danie.component.ts | 59 ++++++++++++++++- .../src/app/znizka/znizka.component.html | 30 ++++++++- .../src/app/znizka/znizka.component.ts | 62 +++++++++++++++++- 18 files changed, 679 insertions(+), 30 deletions(-) diff --git a/monorepo/apps/backend/src/app/danie/danie.controller.ts b/monorepo/apps/backend/src/app/danie/danie.controller.ts index 73d28717..20f1458a 100644 --- a/monorepo/apps/backend/src/app/danie/danie.controller.ts +++ b/monorepo/apps/backend/src/app/danie/danie.controller.ts @@ -1,4 +1,33 @@ -import { Controller } from '@nestjs/common'; +import { Controller, Get, Post, Put, Delete, Param, Body } from '@nestjs/common'; +import { DanieService } from './danie.service'; +import { Danie } from '@prisma/client'; @Controller('danie') -export class DanieController {} +export class DanieController { + constructor(private readonly danieService: DanieService) {} + + @Get() + async findAll(): Promise { + return this.danieService.findAll(); + } + + @Get(':id') + async findOne(@Param('id') id: string): Promise { + return this.danieService.findOne(+id); + } + + @Post() + async create(@Body() data: { cena: number; kategoria: string; nazwa: string }): Promise { + return this.danieService.create(data); + } + + @Put(':id') + async update(@Param('id') id: string, @Body() data: Partial): Promise { + return this.danieService.update(+id, data); + } + + @Delete(':id') + async delete(@Param('id') id: string): Promise { + return this.danieService.delete(+id); + } +} diff --git a/monorepo/apps/backend/src/app/danie/danie.module.ts b/monorepo/apps/backend/src/app/danie/danie.module.ts index c5edf4db..b3294053 100644 --- a/monorepo/apps/backend/src/app/danie/danie.module.ts +++ b/monorepo/apps/backend/src/app/danie/danie.module.ts @@ -1,9 +1,10 @@ import { Module } from '@nestjs/common'; import { DanieService } from './danie.service'; import { DanieController } from './danie.controller'; +import { DatabaseService } from '../database/database.service'; @Module({ - providers: [DanieService], + providers: [DanieService, DatabaseService], controllers: [DanieController], }) export class DanieModule {} diff --git a/monorepo/apps/backend/src/app/danie/danie.service.ts b/monorepo/apps/backend/src/app/danie/danie.service.ts index bfabc509..359b3956 100644 --- a/monorepo/apps/backend/src/app/danie/danie.service.ts +++ b/monorepo/apps/backend/src/app/danie/danie.service.ts @@ -1,4 +1,37 @@ import { Injectable } from '@nestjs/common'; +import { Danie } from '@prisma/client'; +import { DatabaseService } from '../database/database.service'; @Injectable() -export class DanieService {} +export class DanieService { + constructor(private prisma: DatabaseService) {} + + async findAll(): Promise { + return this.prisma.danie.findMany(); + } + + async findOne(id: number): Promise { + return this.prisma.danie.findUnique({ + where: { id }, + }); + } + + async create(data: { cena: number; kategoria: string; nazwa: string }): Promise { + return this.prisma.danie.create({ + data, + }); + } + + async update(id: number, data: Partial): Promise { + return this.prisma.danie.update({ + where: { id }, + data, + }); + } + + async delete(id: number): Promise { + return this.prisma.danie.delete({ + where: { id }, + }); + } +} diff --git a/monorepo/apps/frontend/src/app/app.routes.ts b/monorepo/apps/frontend/src/app/app.routes.ts index f3ef99c1..db789541 100644 --- a/monorepo/apps/frontend/src/app/app.routes.ts +++ b/monorepo/apps/frontend/src/app/app.routes.ts @@ -1,6 +1,20 @@ import { Route } from '@angular/router'; import { RestauracjaComponent } from './restauracja/restauracja.component'; +import { RecenzjaComponent } from './recenzja/recenzja.component'; +import { UzytkownikComponent } from './uzytkownik/uzytkownik.component'; +import { ZamowienieComponent } from './zamowienie/zamowienie.component'; +import { ZamowioneDanieComponent } from './zamowione-danie/zamowione-danie.component'; +import { ZnizkaComponent } from './znizka/znizka.component'; +import { HistoriaZamowienComponent } from './historia-zamowien/historia-zamowien.component'; +import { DanieComponent } from './danie/danie.component'; export const appRoutes: Route[] = [ - {path: 'restauracja', component: RestauracjaComponent} + {path: 'restauracja', component: RestauracjaComponent}, + {path: 'uzytkownik', component: UzytkownikComponent}, + {path: 'zamowienie', component: ZamowienieComponent}, + {path: 'zamowione-danie', component: ZamowioneDanieComponent}, + {path: 'znizka', component: ZnizkaComponent}, + {path: 'historia-zamowien', component: HistoriaZamowienComponent}, + {path: 'danie', component: DanieComponent}, + {path: 'recenzja', component: RecenzjaComponent} ]; diff --git a/monorepo/apps/frontend/src/app/danie/danie.component.html b/monorepo/apps/frontend/src/app/danie/danie.component.html index 54624065..4fbf728d 100644 --- a/monorepo/apps/frontend/src/app/danie/danie.component.html +++ b/monorepo/apps/frontend/src/app/danie/danie.component.html @@ -1 +1,27 @@ -

danie works!

+ +
+

Dania List

+
    +
  • + {{ danie.nazwa }} - {{ danie.kategoria }} - {{ danie.cena }} PLN + + +
  • +
+ +

Create Danie

+ + + + + +
+

Edit Danie

+ + + + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/danie/danie.component.ts b/monorepo/apps/frontend/src/app/danie/danie.component.ts index 0af64b5a..2a9761cc 100644 --- a/monorepo/apps/frontend/src/app/danie/danie.component.ts +++ b/monorepo/apps/frontend/src/app/danie/danie.component.ts @@ -1,11 +1,68 @@ -import { Component } from '@angular/core'; +// src/app/danie/danie.component.ts +import { Component, OnInit } from '@angular/core'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +interface Danie { + id?: number; + cena: number; + kategoria: string; + nazwa: string; +} @Component({ selector: 'app-danie', standalone: true, - imports: [CommonModule], + imports: [CommonModule, HttpClientModule, FormsModule], templateUrl: './danie.component.html', styleUrl: './danie.component.css', }) -export class DanieComponent {} +export class DanieComponent { + dania: Danie[] = []; + newDanie: Danie = { cena: 0, kategoria: '', nazwa: '' }; + editDanie: Danie | null = null; + private apiUrl = 'http://localhost:3000/api/danie'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadDania(); + } + + loadDania(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.dania = data; + }); + } + + createDanie(): void { + this.http.post(this.apiUrl, this.newDanie).subscribe(data => { + this.dania.push(data); + this.newDanie = { cena: 0, kategoria: '', nazwa: '' }; + }); + } + + updateDanie(): void { + if (this.editDanie && this.editDanie.id) { + this.http.put(`${this.apiUrl}/${this.editDanie.id}`, this.editDanie).subscribe(data => { + this.loadDania(); + this.editDanie = null; + }); + } + } + + deleteDanie(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.dania = this.dania.filter(d => d.id !== id); + }); + } + + startEdit(danie: Danie): void { + this.editDanie = { ...danie }; + } + + cancelEdit(): void { + this.editDanie = null; + } +} diff --git a/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.html b/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.html index d5e7f1df..8a1c3193 100644 --- a/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.html +++ b/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.html @@ -1 +1,23 @@ -

historia-zamowien works!

+ +
+

Historia Zamowien List

+
    +
  • + {{ historia.data_zamowienia }} + + +
  • +
+ +

Create Historia Zamowien

+ + + +
+

Edit Historia Zamowien

+ + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.ts b/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.ts index 8f6787ff..6019a246 100644 --- a/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.ts +++ b/monorepo/apps/frontend/src/app/historia-zamowien/historia-zamowien.component.ts @@ -1,11 +1,67 @@ -import { Component } from '@angular/core'; +// src/app/historia-zamowien/historia-zamowien.component.ts +import { Component, OnInit } from '@angular/core'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +interface HistoriaZamowien { + id?: number; + data_zamowienia: string; +} @Component({ selector: 'app-historia-zamowien', standalone: true, - imports: [CommonModule], + imports: [CommonModule, HttpClientModule, FormsModule], templateUrl: './historia-zamowien.component.html', styleUrl: './historia-zamowien.component.css', }) -export class HistoriaZamowienComponent {} +export class HistoriaZamowienComponent { + historiaZamowien: HistoriaZamowien[] = []; + newHistoriaZamowien: HistoriaZamowien = { data_zamowienia: '' }; + editHistoriaZamowien: HistoriaZamowien | null = null; + private apiUrl = 'http://localhost:3000/api/historia-zamowien'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadHistoriaZamowien(); + } + + loadHistoriaZamowien(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.historiaZamowien = data; + }); + } + + createHistoriaZamowien(): void { + this.http.post(this.apiUrl, this.newHistoriaZamowien).subscribe(data => { + this.historiaZamowien.push(data); + this.newHistoriaZamowien = { data_zamowienia: '' }; + }); + } + + updateHistoriaZamowien(): void { + if (this.editHistoriaZamowien && this.editHistoriaZamowien.id) { + this.http.put(`${this.apiUrl}/${this.editHistoriaZamowien.id}`, this.editHistoriaZamowien).subscribe(data => { + this.loadHistoriaZamowien(); + this.editHistoriaZamowien = null; + }); + } + } + + deleteHistoriaZamowien(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.historiaZamowien = this.historiaZamowien.filter(h => h.id !== id); + }); + } + + startEdit(historia: HistoriaZamowien): void { + this.editHistoriaZamowien = { ...historia }; + } + + cancelEdit(): void { + this.editHistoriaZamowien = null; + } +} + diff --git a/monorepo/apps/frontend/src/app/recenzja/recenzja.component.html b/monorepo/apps/frontend/src/app/recenzja/recenzja.component.html index fd8f4a07..c2812229 100644 --- a/monorepo/apps/frontend/src/app/recenzja/recenzja.component.html +++ b/monorepo/apps/frontend/src/app/recenzja/recenzja.component.html @@ -1 +1,29 @@ -

recenzja works!

+ +
+

Recenzja List

+
    +
  • + {{ recenzja.wartosc }} - {{ recenzja.tekst }} (Restauracja ID: {{ recenzja.restauracjaId }}, Uzytkownik ID: {{ recenzja.uzytkownikId }}) + + +
  • +
+ +

Create Recenzja

+ + + + + + +
+

Edit Recenzja

+ + + + + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/recenzja/recenzja.component.ts b/monorepo/apps/frontend/src/app/recenzja/recenzja.component.ts index 8eaef34b..9b7a767a 100644 --- a/monorepo/apps/frontend/src/app/recenzja/recenzja.component.ts +++ b/monorepo/apps/frontend/src/app/recenzja/recenzja.component.ts @@ -1,11 +1,67 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +interface Recenzja { + id?: number; + tekst: string; + wartosc: number; + restauracjaId: number; + uzytkownikId: number; +} @Component({ selector: 'app-recenzja', standalone: true, - imports: [CommonModule], + imports: [CommonModule, FormsModule, HttpClientModule], templateUrl: './recenzja.component.html', styleUrl: './recenzja.component.css', }) -export class RecenzjaComponent {} +export class RecenzjaComponent { + recenzje: Recenzja[] = []; + newRecenzja: Recenzja = { tekst: '', wartosc: 0, restauracjaId: 0, uzytkownikId: 0 }; + editRecenzja: Recenzja | null = null; + private apiUrl = 'http://localhost:3000/api/recenzja'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadRecenzje(); + } + + loadRecenzje(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.recenzje = data; + }); + } + + createRecenzja(): void { + this.http.post(this.apiUrl, this.newRecenzja).subscribe(data => { + this.recenzje.push(data); + this.newRecenzja = { tekst: '', wartosc: 0, restauracjaId: 0, uzytkownikId: 0 }; + }); + } + + updateRecenzja(): void { + if (this.editRecenzja && this.editRecenzja.id) { + this.http.put(`${this.apiUrl}/${this.editRecenzja.id}`, this.editRecenzja).subscribe(data => { + this.loadRecenzje(); + this.editRecenzja = null; + }); + } + } + + deleteRecenzja(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.recenzje = this.recenzje.filter(r => r.id !== id); + }); + } + + startEdit(recenzja: Recenzja): void { + this.editRecenzja = { ...recenzja }; + } + + cancelEdit(): void { + this.editRecenzja = null; + } +} diff --git a/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.html b/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.html index b4dbb43e..40d3d8a3 100644 --- a/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.html +++ b/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.html @@ -1 +1,29 @@ -

uzytkownik works!

+ +
+

Uzytkownik List

+
    +
  • + {{ uzytkownik.imie }} {{ uzytkownik.nazwisko }} - {{ uzytkownik.adres }} (Historia Zamowien ID: {{ uzytkownik.Historia_zamowienId }}) + + +
  • +
+ +

Create Uzytkownik

+ + + + + + +
+

Edit Uzytkownik

+ + + + + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.ts b/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.ts index ffc19884..4c2b4763 100644 --- a/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.ts +++ b/monorepo/apps/frontend/src/app/uzytkownik/uzytkownik.component.ts @@ -1,11 +1,69 @@ -import { Component } from '@angular/core'; +// src/app/uzytkownik/uzytkownik.component.ts +import { Component, OnInit } from '@angular/core'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; import { CommonModule } from '@angular/common'; +interface Uzytkownik { + id?: number; + imie: string; + nazwisko: string; + adres: string; + Historia_zamowienId: number; +} + @Component({ selector: 'app-uzytkownik', standalone: true, - imports: [CommonModule], + imports: [CommonModule, FormsModule, HttpClientModule], templateUrl: './uzytkownik.component.html', styleUrl: './uzytkownik.component.css', }) -export class UzytkownikComponent {} +export class UzytkownikComponent { + uzytkownicy: Uzytkownik[] = []; + newUzytkownik: Uzytkownik = { imie: '', nazwisko: '', adres: '', Historia_zamowienId: 0 }; + editUzytkownik: Uzytkownik | null = null; + private apiUrl = 'http://localhost:3000/api/uzytkownik'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadUzytkownicy(); + } + + loadUzytkownicy(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.uzytkownicy = data; + }); + } + + createUzytkownik(): void { + this.http.post(this.apiUrl, this.newUzytkownik).subscribe(data => { + this.uzytkownicy.push(data); + this.newUzytkownik = { imie: '', nazwisko: '', adres: '', Historia_zamowienId: 0 }; + }); + } + + updateUzytkownik(): void { + if (this.editUzytkownik && this.editUzytkownik.id) { + this.http.put(`${this.apiUrl}/${this.editUzytkownik.id}`, this.editUzytkownik).subscribe(data => { + this.loadUzytkownicy(); + this.editUzytkownik = null; + }); + } + } + + deleteUzytkownik(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.uzytkownicy = this.uzytkownicy.filter(u => u.id !== id); + }); + } + + startEdit(uzytkownik: Uzytkownik): void { + this.editUzytkownik = { ...uzytkownik }; + } + + cancelEdit(): void { + this.editUzytkownik = null; + } +} diff --git a/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.html b/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.html index 2c9163be..91871ab0 100644 --- a/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.html +++ b/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.html @@ -1 +1,23 @@ -

zamowienie works!

+ +
+

Zamowienia List

+
    +
  • + {{ zamowienie.status }} + + +
  • +
+ +

Create Zamowienie

+ + + +
+

Edit Zamowienie

+ + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.ts b/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.ts index b5bb2d19..f7535914 100644 --- a/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.ts +++ b/monorepo/apps/frontend/src/app/zamowienie/zamowienie.component.ts @@ -1,11 +1,67 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { HttpClientModule } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; + +interface Zamowienie { + id?: number; + status: string; +} + @Component({ selector: 'app-zamowienie', standalone: true, - imports: [CommonModule], + imports: [CommonModule, HttpClientModule, FormsModule], templateUrl: './zamowienie.component.html', styleUrl: './zamowienie.component.css', }) -export class ZamowienieComponent {} +export class ZamowienieComponent { + zamowienia: Zamowienie[] = []; + newZamowienie: Zamowienie = { status: '' }; + editZamowienie: Zamowienie | null = null; + private apiUrl = 'http://localhost:3000/api/zamowienie'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadZamowienia(); + } + + loadZamowienia(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.zamowienia = data; + }); + } + + createZamowienie(): void { + this.http.post(this.apiUrl, this.newZamowienie).subscribe(data => { + this.zamowienia.push(data); + this.newZamowienie = { status: '' }; + }); + } + + updateZamowienie(): void { + if (this.editZamowienie && this.editZamowienie.id) { + this.http.put(`${this.apiUrl}/${this.editZamowienie.id}`, this.editZamowienie).subscribe(data => { + this.loadZamowienia(); + this.editZamowienie = null; + }); + } + } + + deleteZamowienie(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.zamowienia = this.zamowienia.filter(z => z.id !== id); + }); + } + + startEdit(zamowienie: Zamowienie): void { + this.editZamowienie = { ...zamowienie }; + } + + cancelEdit(): void { + this.editZamowienie = null; + } +} diff --git a/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.html b/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.html index 87563caa..b3fcd13b 100644 --- a/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.html +++ b/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.html @@ -1 +1,23 @@ -

zamowione-danie works!

+ +
+

Zamowione Dania List

+
    +
  • + Zamowienie ID: {{ zamowioneDanie.zamowienieId }} + + +
  • +
+ +

Create Zamowione Danie

+ + + +
+

Edit Zamowione Danie

+ + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.ts b/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.ts index 1b9d4244..88055f25 100644 --- a/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.ts +++ b/monorepo/apps/frontend/src/app/zamowione-danie/zamowione-danie.component.ts @@ -1,11 +1,66 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; + + +interface ZamowioneDanie { + id?: number; + zamowienieId: number; +} @Component({ selector: 'app-zamowione-danie', standalone: true, - imports: [CommonModule], + imports: [CommonModule, HttpClientModule, FormsModule], templateUrl: './zamowione-danie.component.html', styleUrl: './zamowione-danie.component.css', }) -export class ZamowioneDanieComponent {} +export class ZamowioneDanieComponent { + zamowioneDania: ZamowioneDanie[] = []; + newZamowioneDanie: ZamowioneDanie = { zamowienieId: 0 }; + editZamowioneDanie: ZamowioneDanie | null = null; + private apiUrl = 'http://localhost:3000/api/zamowione-danie'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadZamowioneDania(); + } + + loadZamowioneDania(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.zamowioneDania = data; + }); + } + + createZamowioneDanie(): void { + this.http.post(this.apiUrl, this.newZamowioneDanie).subscribe(data => { + this.zamowioneDania.push(data); + this.newZamowioneDanie = { zamowienieId: 0 }; + }); + } + + updateZamowioneDanie(): void { + if (this.editZamowioneDanie && this.editZamowioneDanie.id) { + this.http.put(`${this.apiUrl}/${this.editZamowioneDanie.id}`, this.editZamowioneDanie).subscribe(data => { + this.loadZamowioneDania(); + this.editZamowioneDanie = null; + }); + } + } + + deleteZamowioneDanie(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.zamowioneDania = this.zamowioneDania.filter(z => z.id !== id); + }); + } + + startEdit(zamowioneDanie: ZamowioneDanie): void { + this.editZamowioneDanie = { ...zamowioneDanie }; + } + + cancelEdit(): void { + this.editZamowioneDanie = null; + } +} diff --git a/monorepo/apps/frontend/src/app/znizka/znizka.component.html b/monorepo/apps/frontend/src/app/znizka/znizka.component.html index a4bafbf6..01428a1f 100644 --- a/monorepo/apps/frontend/src/app/znizka/znizka.component.html +++ b/monorepo/apps/frontend/src/app/znizka/znizka.component.html @@ -1 +1,29 @@ -

znizka works!

+ +
+

Znizki List

+
    +
  • + {{ znizka.kod }} - {{ znizka.wartosc }} PLN - {{ znizka.czy_dostepna ? 'Dostepna' : 'Niedostepna' }} - Restauracja ID: {{ znizka.restauracjaId }} + + +
  • +
+ +

Create Znizka

+ + + Dostepna + + + +
+

Edit Znizka

+ + + Dostepna + + + +
+
+ \ No newline at end of file diff --git a/monorepo/apps/frontend/src/app/znizka/znizka.component.ts b/monorepo/apps/frontend/src/app/znizka/znizka.component.ts index 9ae5f6b9..7b97f33d 100644 --- a/monorepo/apps/frontend/src/app/znizka/znizka.component.ts +++ b/monorepo/apps/frontend/src/app/znizka/znizka.component.ts @@ -1,11 +1,69 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; + +interface Znizka { + id?: number; + kod: string; + wartosc: number; + czy_dostepna: boolean; + restauracjaId: number; +} + @Component({ selector: 'app-znizka', standalone: true, - imports: [CommonModule], + imports: [CommonModule, FormsModule, HttpClientModule], templateUrl: './znizka.component.html', styleUrl: './znizka.component.css', }) -export class ZnizkaComponent {} +export class ZnizkaComponent { + znizki: Znizka[] = []; + newZnizka: Znizka = { kod: '', wartosc: 0, czy_dostepna: true, restauracjaId: 0 }; + editZnizka: Znizka | null = null; + private apiUrl = 'http://localhost:3000/api/znizka'; + + constructor(private http: HttpClient) { } + + ngOnInit(): void { + this.loadZnizki(); + } + + loadZnizki(): void { + this.http.get(this.apiUrl).subscribe(data => { + this.znizki = data; + }); + } + + createZnizka(): void { + this.http.post(this.apiUrl, this.newZnizka).subscribe(data => { + this.znizki.push(data); + this.newZnizka = { kod: '', wartosc: 0, czy_dostepna: true, restauracjaId: 0 }; + }); + } + + updateZnizka(): void { + if (this.editZnizka && this.editZnizka.id) { + this.http.put(`${this.apiUrl}/${this.editZnizka.id}`, this.editZnizka).subscribe(data => { + this.loadZnizki(); + this.editZnizka = null; + }); + } + } + + deleteZnizka(id: number): void { + this.http.delete(`${this.apiUrl}/${id}`).subscribe(() => { + this.znizki = this.znizki.filter(z => z.id !== id); + }); + } + + startEdit(znizka: Znizka): void { + this.editZnizka = { ...znizka }; + } + + cancelEdit(): void { + this.editZnizka = null; + } +}