diff --git a/frontend/wendys-friends/src/app/app-routing.module.ts b/frontend/wendys-friends/src/app/app-routing.module.ts
index a553566d8cb71f93148926911d042d63d4e98792..2a1bc74a191d1493166a806c622f55aba6ca45ef 100644
--- a/frontend/wendys-friends/src/app/app-routing.module.ts
+++ b/frontend/wendys-friends/src/app/app-routing.module.ts
@@ -6,12 +6,14 @@ import { ListHorsesComponent } from './component/list-horses/list-horses.compone
import { AddHorseComponent } from './component/add-horse/add-horse.component';
import { UpdateHorseComponent } from './component/update-horse/update-horse.component';
import { AddOwnerComponent } from './component/add-owner/add-owner.component';
+import { UpdateOwnerComponent } from './component/update-owner/update-owner.component';
const routes: Routes = [
{path: '', redirectTo: 'owner', pathMatch: 'full'},
{path: 'owner', component: OwnerComponent},
{path: 'owner/add', component: AddOwnerComponent},
+ {path: 'owner/:id/edit', component: UpdateOwnerComponent},
{path: 'horse', component: ListHorsesComponent},
{path: 'horse/add', component: AddHorseComponent},
{path: 'horse/:id/edit', component: UpdateHorseComponent},
diff --git a/frontend/wendys-friends/src/app/app.module.ts b/frontend/wendys-friends/src/app/app.module.ts
index e7ca9c6b4e05e1023c520dd7f6a9e04c11e60c97..e83ed1ba43dbf2fd4baf2c21416e22a4a6c62cd0 100644
--- a/frontend/wendys-friends/src/app/app.module.ts
+++ b/frontend/wendys-friends/src/app/app.module.ts
@@ -12,6 +12,7 @@ import { AddHorseComponent } from './component/add-horse/add-horse.component';
import { UpdateHorseComponent } from './component/update-horse/update-horse.component';
import { ListHorsesComponent } from './component/list-horses/list-horses.component';
import { AddOwnerComponent } from './component/add-owner/add-owner.component';
+import { UpdateOwnerComponent } from './component/update-owner/update-owner.component';
@NgModule({
declarations: [
@@ -22,7 +23,8 @@ import { AddOwnerComponent } from './component/add-owner/add-owner.component';
AddHorseComponent,
UpdateHorseComponent,
ListHorsesComponent,
- AddOwnerComponent
+ AddOwnerComponent,
+ UpdateOwnerComponent
],
imports: [
BrowserModule,
diff --git a/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.html b/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..39b6f41821616ad1c70b2bc08c4fb22222521c28
--- /dev/null
+++ b/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.html
@@ -0,0 +1,26 @@
+
+ Error! {{ errorMessage }}
+
+
+
+
+
Success! Owner {{ success }} has been successfully updated.
+
+
+
+
\ No newline at end of file
diff --git a/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.scss b/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.ts b/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4638d768f18f0845473504f691dea9705b14b60a
--- /dev/null
+++ b/frontend/wendys-friends/src/app/component/update-owner/update-owner.component.ts
@@ -0,0 +1,78 @@
+import { Component, OnInit } from '@angular/core';
+import { ActivatedRoute, Params} from '@angular/router';
+import { Owner } from '../../dto/owner';
+import { OwnerService } from '../../service/owner.service';
+
+@Component({
+ selector: 'app-update-owner',
+ templateUrl: './update-owner.component.html',
+ styleUrls: ['./update-owner.component.scss']
+})
+export class UpdateOwnerComponent implements OnInit {
+ error = false;
+ success: string;
+ errorMessage = '';
+ owner: Owner = new Owner(null, null);
+
+ constructor(private ownerService: OwnerService, private route: ActivatedRoute) { }
+
+ ngOnInit(): void {
+ // Extract id from url
+ const ownerId: string = this.route.snapshot.paramMap.get('id');
+
+ // Get current value of the owner and save it
+ this.ownerService.getOwnerById(parseInt(ownerId, 10)).subscribe(
+ (owner: Owner) => {
+ this.owner = owner;
+ },
+ error => {
+ this.defaultServiceErrorHandling(error);
+ }
+ );
+ }
+
+ /**
+ * Will be called on a click on the success alert close button
+ */
+ public vanishAlert() {
+ this.success = null;
+ }
+
+ /**
+ * Will be called on a click on the error alert close button
+ */
+ public vanishError() {
+ this.errorMessage = null;
+ }
+
+ /**
+ * Updates a owner and loads it
+ * @param owner
+ */
+ public updateOwner() {
+ console.log("PUT owner to API")
+ console.log(this.owner);
+ this.ownerService.updateOwner(this.owner).subscribe(
+ (result: Owner) => {
+ this.success = result.name;
+ },
+ error => {
+ this.defaultServiceErrorHandling(error);
+ }
+ );
+ }
+
+ private defaultServiceErrorHandling(error: any) {
+ console.log(error);
+ this.error = true;
+ if (error.status === 0) {
+ // If status is 0, the backend is probably down
+ this.errorMessage = 'The backend seems not to be reachable';
+ } else if (error.error.message === 'No message available') {
+ // If no detailed error message is provided, fall back to the simple error name
+ this.errorMessage = error.error.error;
+ } else {
+ this.errorMessage = error.error.message;
+ }
+ }
+}
diff --git a/frontend/wendys-friends/src/app/service/owner.service.ts b/frontend/wendys-friends/src/app/service/owner.service.ts
index c8ee159b1d6c446b418229e9c81e8c707ceb0753..efd3a1b08cee11768c575a919326043af6dfb6e8 100644
--- a/frontend/wendys-friends/src/app/service/owner.service.ts
+++ b/frontend/wendys-friends/src/app/service/owner.service.ts
@@ -31,4 +31,13 @@ export class OwnerService {
console.log('Add new owner ' + JSON.stringify(owner));
return this.httpClient.post(this.messageBaseUri, owner);
}
+
+ /**
+ * Update a specific owner with the supplied values
+ * @param owner
+ */
+ updateOwner(owner: Owner): Observable {
+ console.log('Update owner with id ' + owner.id + ': '+ JSON.stringify(owner));
+ return this.httpClient.put(this.messageBaseUri + '/' + owner.id, owner);
+ }
}