diff --git a/Back/skydiveLogs-api.Business/DropZoneService.cs b/Back/skydiveLogs-api.Business/DropZoneService.cs index 6c7d8f5..0543cf1 100644 --- a/Back/skydiveLogs-api.Business/DropZoneService.cs +++ b/Back/skydiveLogs-api.Business/DropZoneService.cs @@ -38,6 +38,11 @@ namespace skydiveLogs_api.Business public bool UpdateDz(int id, DropZone dropZone) { dropZone.Id = id; + + //dropZone.Address = dropZone.Address ?? string.Empty; + //dropZone.Website = dropZone.Address ?? string.Empty; + //dropZone.Email = dropZone.Address ?? string.Empty; + return _dropZoneRepository.Update(dropZone); } diff --git a/Back/skydiveLogs-api/Data/JumpsDb.db b/Back/skydiveLogs-api/Data/JumpsDb.db index 1b224f6..7cbbbe9 100644 Binary files a/Back/skydiveLogs-api/Data/JumpsDb.db and b/Back/skydiveLogs-api/Data/JumpsDb.db differ diff --git a/Front/skydivelogs-app/src/app/app.module.ts b/Front/skydivelogs-app/src/app/app.module.ts index d337ad6..cd95496 100644 --- a/Front/skydivelogs-app/src/app/app.module.ts +++ b/Front/skydivelogs-app/src/app/app.module.ts @@ -14,6 +14,7 @@ import { ListOfJumpTypesComponent } from './list-of-jump-types/list-of-jump-type import { ListOfGearsComponent } from './list-of-gears/list-of-gears.component'; import { DateService } from '../services/date.service'; +import { ServiceApiPut } from '../services/service-api-put.service'; import { ServiceApiGet } from '../services/service-api-get.service'; import { ServiceApiPost } from '../services/service-api-post.service'; import { ServiceComm } from '../services/service-comm.service'; @@ -80,6 +81,7 @@ const appRoutes: Routes = [ ], exports: [HttpClientModule], providers: [ + ServiceApiPut, ServiceApiPost, ServiceApiGet, ServiceComm, diff --git a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html index 932abbb..bed649b 100644 --- a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html +++ b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.html @@ -1,5 +1,15 @@
+ + + + + diff --git a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts index 8a1dc90..5b437c2 100644 --- a/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts +++ b/Front/skydivelogs-app/src/app/list-of-dzs/list-of-dzs.component.ts @@ -4,6 +4,7 @@ import { MatTableDataSource } from '@angular/material/table'; import { DropZoneResp } from '../../models/dropzone'; import { ServiceApiGet } from '../../services/service-api-get.service'; +import { ServiceApiPut } from '../../services/service-api-put.service'; import { ServiceComm } from '../../services/service-comm.service'; @Component({ @@ -13,6 +14,7 @@ import { ServiceComm } from '../../services/service-comm.service'; }) export class ListOfDzsComponent implements OnInit { public displayedColumns: Array = [ + 'isfavorite', 'id', 'name', 'latitude', @@ -26,7 +28,8 @@ export class ListOfDzsComponent implements OnInit { @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator; constructor( - private serviceApi: ServiceApiGet, + private serviceApiGet: ServiceApiGet, + private serviceApiPut: ServiceApiPut, private serviceComm: ServiceComm ) { } @@ -35,11 +38,19 @@ export class ListOfDzsComponent implements OnInit { this.getListOfDropZones(); } - getListOfDropZones() { - this.serviceApi.getListOfDropZones().subscribe(data => { + private getListOfDropZones() { + this.serviceApiGet.getListOfDropZones().subscribe(data => { this.dataSourceTable = new MatTableDataSource(data); this.dataSourceTable.paginator = this.paginator; this.resultsLength = data.length; }); } + + public setToFavorite(dropzone: DropZoneResp) { + dropzone.isfavorite = this.serviceApiPut.SetFavoriteDropZone(dropzone); + } + + public removeToFavorite(dropzone: DropZoneResp) { + dropzone.isfavorite = this.serviceApiPut.RemoveFavoriteDropZone(dropzone); + } } diff --git a/Front/skydivelogs-app/src/assets/img/favorite.png b/Front/skydivelogs-app/src/assets/img/favorite.png new file mode 100644 index 0000000..be1494e Binary files /dev/null and b/Front/skydivelogs-app/src/assets/img/favorite.png differ diff --git a/Front/skydivelogs-app/src/assets/img/not-favorite.png b/Front/skydivelogs-app/src/assets/img/not-favorite.png new file mode 100644 index 0000000..cf64c3a Binary files /dev/null and b/Front/skydivelogs-app/src/assets/img/not-favorite.png differ diff --git a/Front/skydivelogs-app/src/models/dropzone.ts b/Front/skydivelogs-app/src/models/dropzone.ts index 4d650d3..5687ef1 100644 --- a/Front/skydivelogs-app/src/models/dropzone.ts +++ b/Front/skydivelogs-app/src/models/dropzone.ts @@ -11,6 +11,7 @@ export class DropZoneResp { public website: string; public email: string; public type: Array; + public isfavorite: boolean; } export class DropZoneReq { @@ -26,4 +27,5 @@ export class DropZoneReq { public website: string; public email: string; public type: Array; + public isfavorite: boolean; } diff --git a/Front/skydivelogs-app/src/services/service-api-get.service.ts b/Front/skydivelogs-app/src/services/service-api-get.service.ts index fa454f5..e3b7698 100644 --- a/Front/skydivelogs-app/src/services/service-api-get.service.ts +++ b/Front/skydivelogs-app/src/services/service-api-get.service.ts @@ -1,14 +1,14 @@ -import { Injectable } from "@angular/core"; -import { HttpClient, HttpHeaders } from "@angular/common/http"; -import { Observable } from "rxjs"; -import { map } from "rxjs/operators"; -import { environment } from "../environments/environment"; +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { environment } from '../environments/environment'; -import { DropZoneResp } from "../models/dropzone"; -import { JumpResp } from "../models/jump"; -import { AircraftResp } from "../models/aircraft"; -import { JumpTypeResp } from "../models/jumpType"; -import { GearResp } from "../models/gear"; +import { DropZoneResp } from '../models/dropzone'; +import { JumpResp } from '../models/jump'; +import { AircraftResp } from '../models/aircraft'; +import { JumpTypeResp } from '../models/jumpType'; +import { GearResp } from '../models/gear'; import { StatsResp, @@ -17,14 +17,14 @@ import { StatsByJumpTypeResp, StatsByRigResp, StatsByYearResp -} from "../models/stats"; +} from '../models/stats'; @Injectable() export class ServiceApiGet { private readonly headers = new HttpHeaders({ - "Access-Control-Allow-Origin": environment.urlApi + 'Access-Control-Allow-Origin': environment.urlApi }); - constructor(private http: HttpClient) {} + constructor(private http: HttpClient) { } public getListOfDropZones(): Observable> { return this.http diff --git a/Front/skydivelogs-app/src/services/service-api-post.service.ts b/Front/skydivelogs-app/src/services/service-api-post.service.ts index ebdfdb3..d051e09 100644 --- a/Front/skydivelogs-app/src/services/service-api-post.service.ts +++ b/Front/skydivelogs-app/src/services/service-api-post.service.ts @@ -1,17 +1,17 @@ -import { Injectable } from "@angular/core"; -import { HttpClient, HttpHeaders } from "@angular/common/http"; +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; -import { JumpReq } from "../models/jump"; -import { environment } from "../environments/environment"; -import { DateService } from "./date.service"; +import { JumpReq } from '../models/jump'; +import { environment } from '../environments/environment'; +import { DateService } from './date.service'; @Injectable() export class ServiceApiPost { private readonly headers = new HttpHeaders({ - "Access-Control-Allow-Origin": environment.urlApi + 'Access-Control-Allow-Origin': environment.urlApi }); - constructor(private http: HttpClient, private dateService: DateService) {} + constructor(private http: HttpClient, private dateService: DateService) { } public AddListOfJump( selectedJumpType: number, @@ -79,7 +79,7 @@ export class ServiceApiPost { exitAltitude: defaultExitAltitude, deployAltitude: defaultDeployAltitude, gearId: selectedRig, - notes: "", + notes: '', id: 0, jumpDate: jumpDate }; diff --git a/Front/skydivelogs-app/src/services/service-api-put.service.ts b/Front/skydivelogs-app/src/services/service-api-put.service.ts new file mode 100644 index 0000000..51c9634 --- /dev/null +++ b/Front/skydivelogs-app/src/services/service-api-put.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; + +import { environment } from '../environments/environment'; +import { DateService } from './date.service'; +import { DropZoneResp } from '../models/dropzone'; + +@Injectable() +export class ServiceApiPut { + private readonly headers = new HttpHeaders({ + 'Access-Control-Allow-Origin': environment.urlApi + }); + + constructor(private http: HttpClient, private dateService: DateService) { } + + public SetFavoriteDropZone(selectedDz: DropZoneResp): boolean { + selectedDz.isfavorite = true; + this.http + .put(`${environment.urlApi}/api/DropZone/${selectedDz.id}`, selectedDz, { + headers: this.headers + }) + .subscribe(data => console.log(data)); + + return true; + } + + public RemoveFavoriteDropZone(selectedDz: DropZoneResp): boolean { + selectedDz.isfavorite = false; + this.http + .put(`${environment.urlApi}/api/DropZone/${selectedDz.id}`, selectedDz, { + headers: this.headers + }) + .subscribe(data => console.log(data)); + + return true; + } +}
+ favorite DZ + favorite DZ + ID {{element.id}}