From 2a2ea38a14030f8fd17cc2b33fb1abb8aa434bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Andr=C3=A9?= Date: Wed, 27 Nov 2019 17:47:20 +0100 Subject: [PATCH] Ajout de la mise en favoris des DZs --- .../DropZoneService.cs | 5 +++ Back/skydiveLogs-api/Data/JumpsDb.db | Bin 155648 -> 155648 bytes Front/skydivelogs-app/src/app/app.module.ts | 2 + .../list-of-dzs/list-of-dzs.component.html | 10 +++++ .../app/list-of-dzs/list-of-dzs.component.ts | 17 ++++++-- .../src/assets/img/favorite.png | Bin 0 -> 717 bytes .../src/assets/img/not-favorite.png | Bin 0 -> 796 bytes Front/skydivelogs-app/src/models/dropzone.ts | 2 + .../src/services/service-api-get.service.ts | 26 ++++++------ .../src/services/service-api-post.service.ts | 16 ++++---- .../src/services/service-api-put.service.ts | 37 ++++++++++++++++++ 11 files changed, 91 insertions(+), 24 deletions(-) create mode 100644 Front/skydivelogs-app/src/assets/img/favorite.png create mode 100644 Front/skydivelogs-app/src/assets/img/not-favorite.png create mode 100644 Front/skydivelogs-app/src/services/service-api-put.service.ts 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 1b224f6194a61264dbb219da37f6b21d33b9db26..7cbbbe9800e594bb41e7dbab0490216aeac2389c 100644 GIT binary patch delta 3177 zcmds(X-rgC6vxk*eFJ7-76e+b#Hbb2wj?#iSZSlAF|A$FFKtsZ1*~jB88mGg!{Sz@ zDsuePq>ZDkZ8f6wLDIz{6$I1@C?X;VGwcWhGa$qQGJP|K6q{rEsbBh%H+i|gx#!+< z?*D(@%d1r9RjSXeic)*UO9B8=AwH_^C6ioy^bG-u50+4K9{yypl-hTp!Z+$&F1&7y zM6>Eu+Xm~7%W-y|6qx$IIV*%f&{5QZH%3>RB)z;;nQ4w?ua$iZ%#=9 zJrx}=(ZX$Ko)o-g8y~!vu4mq2mz|=sSwk%Ola7CUk0ldyG`o)_ZYr=jSu#RtIh`!& zqqnxVu%w*Qli#MDMPc&osn+c|qQ&@kvS9$u^r`jUZW{VNFSY^bBOm==(nu zQ#&u=BlfuWhQVOI4^NpUVX<)lN)VCjS*4nnyq;kHQ|Q9&bwG@EA?!Mku2#`O@kzbE$o|^pT|l zX>p#HJ)SOFp5MfhQBoH;Skg?Mf*O|GrVG0+vm`<&+8w|K8ZJ zGPr2N!48%VXK01J;-)Ai<=-c%uj2 z2>sF{Qe^)t9p)d3mGHYiq1z*q7C zD3=-0F7>@dWm4adc>CU){-zb$X6cnVA}rzNvlbE}ST116-rezNuizFvWj+mkm8L7y3oYDm2n7CmY!SGZg-v zi&d)@$?*L&JLx_df9Pe&0O2X#^^ro?DLrpmFHN0xvq{9xsdcR{2_fhV@)5cyw1hve zNMXF>3Clhp?YTiV3pdT2bFyTXdP_%H@_^cZ9ApcrK&lreStNFZYh`@uy1CR7{L<(u z|7UxMjaqNZvL@2H(-zuOvW4B$zh$30-}<6p{=R~-K3suyVLCj&U=}JuW%!F_5~|I! zP-9wzcH;p29P$G04VGiRVG+KsAAxN_Q;-vAz{CIvT6GfKtQ~_4O%r^n?t?Ow2db3a z;82W%OSGh1t`L`!c}Y=ePzGu9G-pj3@rzcY^cmADDsM?8ue@+!+3!03V;7OuUG%VJ z7JL8dD!%u3(wgcD(A`n;MqPENU`IG>b7VYK$@2519jGY;L-tWa3=I zhGT9_$3c-`$d*oEI+5B0&`nkx0^=LXcUfsEV^qfY8gqOo-rjMpHfe94`<&;z=Y7t3 z@3lHPtCOqPYT@JnAQQeyM}nns8*)yaI?B(-u?>+?_VXKU=oP#oh2b#i`pk42RW!+4sQMAMD^-AWK~dEg^TI zU)2tr>H;JyeQ;b6!9I}7*?w6Z+m1^|qYd{>0OrU@p%QTd7?vGdp(=Xt%5fKg5xkJ? zCD4e4pVbp+#`F`{34}Rb&(TRkh6JT7*$;@hi~ zdk*lW{Am)6;Eu1nBx)tmrqyPb6C=GZ(G9yNzAlwCY#&H-jEPy|36jt1FNmIuR7=mR z1!7(l$H)82Ani|>xsG3_39SJ3US77_JnBRxt1&IWAN&f`N6bJ^_+Q{L24LPW0}6wg z-PXIos9(<}wD(~y)Xdx(A1rc{pyL#bQ_lk*G7mAToA8XX9?}&9P$VCPDp@c1*cdE< z8!V9Lj51m^0OvHq&x6N+;B{G(>f5_bUyTV|+E;S~B>rB_B5PPcWC2?5&b zD-Ry@?M);SQgn69kaK?Q@04sD!L}|h#oYs}b4eZR!;$_x<0bg5v4gdfE 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 0000000000000000000000000000000000000000..be1494e14ab484b4af9ae24b302ceda62eb067cb GIT binary patch literal 717 zcmV;;0y6!HP)NP|-+2G!}v;YQP3# zq_KcyW1=yXXhLOZ3<-s@OKmOMSXdGpA;y@H*r4=3e2kdFE`WHFhr6E2*$xEo=)z^v`0M;5Pz9Ne*{SyDpK*5B6 zCUK)d;z7nWWmaF7Cd)oUrG3s!6ZKY?Y*ZQlxGW!6Y=%PCJrZ24hq#%hTxRW792R>J zNm!Kk*MYg3)y30jdF^>p{d1Q>R5?p(cGrol391O2R82#m;xvA`XE0GnL?q1}x}& z&HAXf5}r5$n_`DGyKlhm8a=Ei?^|?}A8}xE2bxo->mUxWi=C-cNnoOZV4SOic!4XB zIEF+6QmA?U>s*9H1MvsZ4ExQyk6ZA5lG%L#lSYAk6>3e+w`+*y%|LtyysOmycQS_6 z>N}JPlgfliwfYW;H1IxQjqt7~4u~~i#LeFpWelp-A5_NAXn_1W`v7^ReNL_ZfQ&(~ z#m%dO;@^X^5tt#%y01V>(apRf?lJ72NLc&^%Q?uoJ~PJHxauuMBffoeZ7QCDHwZ5@ zq0HKI0MdUVU5J8FKMTxSHq~op;}ox8|6Tk9HW$-Gh&R$#00000NkvXXu0mjfSrJBQ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cf64c3ab06f49486d6a2ad069ecf8ef5ff10e21f GIT binary patch literal 796 zcmV+%1LOROP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA0~Niw^+_=C;+-puUG%bP#D8~NWv*=kd%RE$(A z)h6BTcFl6RY&jL07;Lq{;8$TXbS0C?D^6hm0tL|NbSQJn!b2LP(Pb{vCQtyaR_ij% zLE$+ZYBrlW)>;Ieg1c;8kOg1aBxnavtJN;R91)&}qm4%6JnM-94*Cxj;@gDjk8JrTMYxW`rrvM{#Izc^b5|7;EB80i_ZUMLif4>PcX?JU`(A146I zvMwQYUrEo1_ZZVTH{8<;i{~(cXhQB5CELai?4(RSpZ`RTy9iP64i$8!_eIIJu!Za5 zaB#x23sCVALEK_@+E~bN5ex4P`wqTsh#;Pz;VQe+WT{vzK4b0T3xLRGvv&|ggWb@e zugCc3kJ$Af4IrIP+k?U2IwUR1u)OH?dbe5o82JpxgJ%J2Vx8SU;Qj?n>sxkxNHZ`5 zH=8U2gY=(bDP?2;xcMB*Ff6i_qMU+iwYoDFi~WL3h?2l;_51y~QmOQteGkeEVDOVL zVFxF6#pCfTYahx0kp8nQLxXc)IStAHumGnq{|@L&8Gv*R;K8&P8TibuiZ5vMfCL6u zg4sh_fsHov*pA=XcadgbO!_~d{zf8^*oUL_Azh>~z)jSB6is|YaSy%D`A|)PEPxGk zat(tWz@Sfax!fNvkC3Kk2; + 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}}