From e2d9983e21206a7d1cbc1acbf98f260b8e5f3723 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Sun, 8 Aug 2021 00:09:31 +0200 Subject: [PATCH] Fix update app component and backend. --- .../update-application.component.html | 2 +- .../update-application.component.scss | 18 +++++++++++++++ .../update-application.component.ts | 23 ++++++++++++++----- .../app/core/services/application.service.ts | 10 +++++++- cerberus/src/components-styles/button.scss | 4 ++++ .../controller/ApplicationController.java | 1 + .../service/ApplicationService.java | 1 + 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/cerberus/src/app/applications/update-application/update-application.component.html b/cerberus/src/app/applications/update-application/update-application.component.html index cea7b77..1f2b24a 100644 --- a/cerberus/src/app/applications/update-application/update-application.component.html +++ b/cerberus/src/app/applications/update-application/update-application.component.html @@ -1,6 +1,6 @@

Edit the application {{application?.name}}

-
diff --git a/cerberus/src/app/applications/update-application/update-application.component.scss b/cerberus/src/app/applications/update-application/update-application.component.scss index e69de29..ea5d553 100644 --- a/cerberus/src/app/applications/update-application/update-application.component.scss +++ b/cerberus/src/app/applications/update-application/update-application.component.scss @@ -0,0 +1,18 @@ +.title { + position: relative; + display: flex; + align-items: center; + + &:hover { + button { + opacity: 1; + } + } + + button { + position: absolute; + right: 5px; + opacity: 0; + transition: opacity .2s ease; + } +} \ No newline at end of file diff --git a/cerberus/src/app/applications/update-application/update-application.component.ts b/cerberus/src/app/applications/update-application/update-application.component.ts index d3375d9..78968f9 100644 --- a/cerberus/src/app/applications/update-application/update-application.component.ts +++ b/cerberus/src/app/applications/update-application/update-application.component.ts @@ -4,6 +4,7 @@ import { Application } from 'src/app/core/entities/Application'; import { ReferentialData } from 'src/app/core/entities/ReferentialData'; import { ApplicationService } from 'src/app/core/services/application.service'; import { ModalService } from 'src/app/core/services/modal.service'; +import { ReferentialDataService } from 'src/app/core/services/referential-data.service'; @Component({ selector: 'app-update-application', @@ -23,10 +24,15 @@ export class UpdateApplicationComponent implements OnInit { constructor( private _formBuilder: FormBuilder, private _modalService: ModalService, - private _applicationService: ApplicationService + private _applicationService: ApplicationService, + private _referentialDataService: ReferentialDataService ) {} ngOnInit(): void { + this._referentialDataService.getServiceTypes() + .then(serviceTypes => this.serviceTypes = serviceTypes) + .catch(error => console.error('An error occured while loading service types.')); + this.application = this._modalService.data; this.form.controls.name.setValue(this.application?.name); this.form.controls.serviceName.setValue(this.application?.serviceName); @@ -41,13 +47,18 @@ export class UpdateApplicationComponent implements OnInit { onSubmit(): void { if (this.form.valid) { - const appToAdd: Application = this.form.value as Application; - this._applicationService.add(appToAdd) - .then(applicationAdded => { - console.log('Application added.'); + const appToUpdate = { ...this.application } as Application; + appToUpdate.name = this.form.controls.name.value; + appToUpdate.serviceName = this.form.controls.serviceName.value; + // appToUpdate.serviceType = this.form.controls.serviceType.value; + appToUpdate.image = this.form.controls.image.value; + + this._applicationService.update(appToUpdate) + .then(() => { + console.log('Application uodated.'); this._modalService.close(); }) - .catch(error => console.error('An error occured while adding the new application.')); + .catch(error => console.error('An error occured while updating the application.')); } else { console.error('Form is invalid'); } diff --git a/cerberus/src/app/core/services/application.service.ts b/cerberus/src/app/core/services/application.service.ts index 04b6a96..efb9652 100644 --- a/cerberus/src/app/core/services/application.service.ts +++ b/cerberus/src/app/core/services/application.service.ts @@ -1,4 +1,4 @@ -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Application } from '../entities/Application'; import { ApplicationStatus } from '../entities/ApplicationStatus'; @@ -17,6 +17,14 @@ export class ApplicationService { } add(application: Application): Promise { + const headers = new HttpHeaders() + .append('Content-Type', 'application/json'); return this._httpClient.post('/api/applications', application).toPromise(); } + + update(application: Application): Promise { + const headers = new HttpHeaders() + .append('Content-Type', 'application/json'); + return this._httpClient.put(`/api/applications/${application.id}`, application, { headers }).toPromise(); + } } diff --git a/cerberus/src/components-styles/button.scss b/cerberus/src/components-styles/button.scss index ead0688..6cef460 100644 --- a/cerberus/src/components-styles/button.scss +++ b/cerberus/src/components-styles/button.scss @@ -1,5 +1,9 @@ @import "../colors.scss"; +a.button { + text-decoration: none; +} + button, a.button { background-image: linear-gradient( $btn-primary-background-top, diff --git a/src/main/java/org/takiguchi/cerberus/cerberusapp/controller/ApplicationController.java b/src/main/java/org/takiguchi/cerberus/cerberusapp/controller/ApplicationController.java index b8e890f..b4552a6 100644 --- a/src/main/java/org/takiguchi/cerberus/cerberusapp/controller/ApplicationController.java +++ b/src/main/java/org/takiguchi/cerberus/cerberusapp/controller/ApplicationController.java @@ -51,6 +51,7 @@ public class ApplicationController { .withName(application.getName()) .withServiceName(application.getServiceName()) .withServiceType(application.getServiceType()) + .withImage(application.getImage()) .build(); service.update(applicationToUpdate); } diff --git a/src/main/java/org/takiguchi/cerberus/cerberusapp/service/ApplicationService.java b/src/main/java/org/takiguchi/cerberus/cerberusapp/service/ApplicationService.java index 0f654f0..6ea5206 100644 --- a/src/main/java/org/takiguchi/cerberus/cerberusapp/service/ApplicationService.java +++ b/src/main/java/org/takiguchi/cerberus/cerberusapp/service/ApplicationService.java @@ -50,6 +50,7 @@ public class ApplicationService { .withName(application.getName()) .withServiceName(application.getServiceName()) .withServiceType(application.getServiceType()) + .withImage(application.getImage()) .build() ) .ifPresentOrElse(this::validateThenSave, NotFoundException::new);