diff --git a/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html b/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html index a58f169..459c21e 100644 --- a/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html +++ b/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.html @@ -97,9 +97,9 @@ Sujets - - {{interest}}, - {{interest}} + + {{objectInterest.interest}}, + {{objectInterest.interest}} diff --git a/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts b/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts index e049f8a..5eec7ff 100644 --- a/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts +++ b/src/app/admin/adList/page-ad-list-admin/page-ad-list-admin.component.ts @@ -10,6 +10,7 @@ import {PopupDeleteAdAdminComponent} from "../popup-delete-ad-admin/popup-delete import {PopupVisualizeImagesAdminComponent} from "../popup-visualize-images-admin/popup-visualize-images-admin.component"; import {FormControl} from "@angular/forms"; import {MessageService} from "../../../utils/services/message/message.service"; +import {HttpParams} from "@angular/common/http"; @@ -66,8 +67,10 @@ export class PageAdListAdminComponent implements AfterViewInit ngAfterViewInit(): void { // Ask for ads and then for advertiser + let params = new HttpParams(); + params = params.append("isActive", true); this.messageService - .get("ad/findAll") + .get("ad/findAll", params) .subscribe(ret => this.afterReceivingAds(ret), err => this.afterReceivingAds(err) ); // Ask for interest @@ -79,11 +82,8 @@ export class PageAdListAdminComponent implements AfterViewInit afterReceivingAds(retour: any): void { - console.log("afterReceivingAds"); - console.log(retour); - if(retour.status !== "success") { - //console.log(retour); + console.log(retour); } else { const tabAdvert = retour.data; @@ -96,11 +96,8 @@ export class PageAdListAdminComponent implements AfterViewInit afterReceivingAdvertiser(retour: any, tabAdvert): void { - console.log("afterReceivingAdvertiser"); - console.log(retour); - if(retour.status !== "success") { - //console.log(retour); + console.log(retour); } else { this.tabAdvertiser = retour.data.filter(x => x.role.name === "advertiser"); @@ -113,14 +110,10 @@ export class PageAdListAdminComponent implements AfterViewInit afterReceivingInterests(retour: any): void { - console.log("afterReceivingInterests"); - console.log(retour); - if(retour.status !== "success") { console.log(retour); } else { - this.allInterests = []; this.allInterests = retour.data.map(x => x.interest); this.allInterests.sort(); } @@ -136,19 +129,27 @@ export class PageAdListAdminComponent implements AfterViewInit onVisualizeImages(advert: AdvertWithCountViewsAndCompany) { - const config = { - width: '30%', - height: '90%', - data: { - images: advert.images, - width: 300, - height: 800, - } - }; - this.dialog - .open(PopupVisualizeImagesAdminComponent, config) - .afterClosed() - .subscribe(retour => {}); + if(advert.images.length !== 0) + { + const config = { + width: '30%', + height: '90%', + data: { + images: advert.images, + width: 300, + height: 800, + } + }; + this.dialog + .open(PopupVisualizeImagesAdminComponent, config) + .afterClosed() + .subscribe(retour => {}); + } + else { + const config = { duration: 2000, panelClass: "custom-class" }; + const message = "Cette annonce ne contient aucune image" ; + this.snackBar.open( message, "", config); + } } diff --git a/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts b/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts index 02d0630..196f024 100644 --- a/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts +++ b/src/app/admin/adList/popup-delete-ad-admin/popup-delete-ad-admin.component.ts @@ -29,7 +29,7 @@ export class PopupDeleteAdAdminComponent implements OnInit { this.messageService .delete("ad/delete/"+this.advert.id) - .subscribe(ret => this.onValidateCallback(ret), err => this.onValidateCallback(err) ); + .subscribe(ret => this.onValidateCallback(ret), err => this.onValidateCallback(err)); } @@ -40,6 +40,8 @@ export class PopupDeleteAdAdminComponent implements OnInit this.dialogRef.close(); } else { + console.log("suppr"); + console.log(retour); this.dialogRef.close(true); } } diff --git a/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts b/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts index dfc794b..e5a83fe 100644 --- a/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts +++ b/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts @@ -38,9 +38,18 @@ export class InputInterestsAdComponent implements OnInit startWith(null), map((fruit: string | null) => fruit ? this._filter(fruit) : this.allTags.slice())); - // --- FAUX CODE --- - this.allTags = this.fictitiousUtilsService.getTags(); - this.allTags.sort(); + this.messageService + .get("misc/getInterests") + .subscribe( retour => { + + if(retour.status !== "success") { + console.log(retour); + } + else { + this.allTags = retour.data.map(x => x.interest) + this.allTags.sort(); + } + }); } diff --git a/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts b/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts index 37ff560..79971ec 100644 --- a/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts +++ b/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts @@ -12,6 +12,8 @@ import {PopupVisualizeImagesAdvertiserComponent} from "../popup-visualize-images import {FictitiousAdvertsService} from "../../../utils/services/fictitiousDatas/fictitiousAdverts/fictitious-adverts.service"; import {FormControl} from "@angular/forms"; import {FictitiousUtilsService} from "../../../utils/services/fictitiousDatas/fictitiousUtils/fictitious-utils.service"; +import {MessageService} from "../../../utils/services/message/message.service"; +import {HttpParams} from "@angular/common/http"; @@ -24,7 +26,7 @@ export class PageAdListAdvertiserComponent implements AfterViewInit { displayedColumns: string[] = [ 'isVisible', 'title', 'interests', 'createdAt', 'updatedAt', 'countViews', 'actions' ]; tabAdvertWithCountViews: AdvertWithCountViews[] = []; - dataSource ; + dataSource; @ViewChild(MatSort) sort: MatSort; @ViewChild(MatPaginator) paginator: MatPaginator; @@ -33,6 +35,8 @@ export class PageAdListAdvertiserComponent implements AfterViewInit startDate: Date = null; endDate: Date = null; formControlInterests = new FormControl(); + + allVideoCategorie = []; allInterests: string[] = []; @@ -40,18 +44,50 @@ export class PageAdListAdvertiserComponent implements AfterViewInit private fictitiousAdvertsService: FictitiousAdvertsService, private fictitiousUtilsService: FictitiousUtilsService, public dialog: MatDialog, - private snackBar: MatSnackBar ) { } + private snackBar: MatSnackBar, + private messageService: MessageService ) { } ngAfterViewInit(): void { - // --- FAUX CODE --- - const tabAdvert = this.fictitiousAdvertsService.getTabAdvert(8); - this.allInterests = this.fictitiousUtilsService.getTags(); + // Ask interests + this.messageService + .get("misc/getInterests") + .subscribe(ret => this.afterReceivingInterests(ret), err => this.afterReceivingInterests(err) ); - for(let advert of tabAdvert) this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViews(advert)); - this.dataSource = new MatTableDataSource(); - this.onFilter(); + // Ask ads + let params = new HttpParams(); + params = params.append("isActive", true); + this.messageService + .get("ad/findAll", params) + .subscribe(ret => this.afterReceivingAds(ret), err => this.afterReceivingAds(err)); + } + + + afterReceivingInterests(retour: any): void + { + if(retour.status !== "success") { + console.log("afterReceivingInterests"); + console.log(retour); + } + else { + this.allVideoCategorie = retour.data; + this.allInterests = retour.data.map(x => x.interest); + this.allInterests.sort(); + } + } + + + afterReceivingAds(retour: any): void + { + if(retour.status !== "success") { + console.log(retour); + } + else { + for(let advert of retour.data) this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViews(advert)); + this.dataSource = new MatTableDataSource(); + this.onFilter(); + } } @@ -86,7 +122,7 @@ export class PageAdListAdvertiserComponent implements AfterViewInit width: '75%', height: '80%', panelClass: 'custom-dialog-container', - data: { action: "add", advert: null } + data: { action: "add", advert: null, allVideoCategorie: this.allVideoCategorie } }; this.dialog .open(PopupAddOrUpdateAdComponent, config) @@ -99,10 +135,9 @@ export class PageAdListAdvertiserComponent implements AfterViewInit message = "Opération annulée" ; } else { - this.dataSource.data.push(advertAdded); - this.dataSource.data = this.dataSource.data; - this.dataSource = this.dataSource; - message = "L'annoonce a bien été ajoutée ✔" + this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViews(advertAdded)); + this.onFilter(); + message = "L'annoonce a bien été ajoutée ✔" ; } this.snackBar.open( message, "", config); }); @@ -115,7 +150,7 @@ export class PageAdListAdvertiserComponent implements AfterViewInit width: '75%', height: '80%', panelClass: 'custom-dialog-container', - data: { action: "update", advert: advertToUpdate } + data: { action: "update", advert: advertToUpdate, allVideoCategorie: this.allVideoCategorie } }; this.dialog .open(PopupAddOrUpdateAdComponent, config) @@ -128,11 +163,10 @@ export class PageAdListAdvertiserComponent implements AfterViewInit message = "Opération annulée" ; } else { - const index = this.dataSource.data.findIndex( elt => (elt._id === advertToUpdate._id)); - this.dataSource.data.splice(index, 1, advertUpdated); - this.dataSource.data = this.dataSource.data; - this.dataSource = this.dataSource; - message = "L'annonce a bien été modifiée ✔" + const index = this.tabAdvertWithCountViews.findIndex(elt => (elt.id === advertToUpdate.id)); + this.tabAdvertWithCountViews.splice(index, 1, this.advertToAdvertWithCountViews(advertUpdated)); + this.onFilter(); + message = "L'annonce a bien été modifiée ✔" ; } this.snackBar.open( message, "", config); }); @@ -155,7 +189,7 @@ export class PageAdListAdvertiserComponent implements AfterViewInit message = "Opération annulée" ; } else { - const index = this.dataSource.data.findIndex( elt => (elt._id === advert._id)); + const index = this.dataSource.data.findIndex( elt => (elt.id === advert.id)); this.dataSource.data.splice(index, 1); this.dataSource.data = this.dataSource.data; this.dataSource = this.dataSource; @@ -168,6 +202,7 @@ export class PageAdListAdvertiserComponent implements AfterViewInit onFilter(): void { + if(this.dataSource === null || this.dataSource === undefined) this.dataSource = new MatTableDataSource(); this.dataSource.data = []; for(let advert of this.tabAdvertWithCountViews) { @@ -220,21 +255,30 @@ export class PageAdListAdvertiserComponent implements AfterViewInit } - onSliderIsVisible(advert: Advert): void + onSliderIsVisible(advert: any): void { // il faut envoyer la négation de user.isActive + this.messageService + .put("ad/update/"+advert.id, { isVisible: !advert.isVisible }) + .subscribe( + ret => {}, + err => { + console.log("onSliderIsVisible"); + console.log(err); + } + ); } - advertToAdvertWithCountViews(advert: Advert): AdvertWithCountViews + advertToAdvertWithCountViews(advert): AdvertWithCountViews { return { - _id: advert._id, + id: advert.id, userId: advert.userId, title: advert.title, url: advert.url, images: advert.images, - interests: advert.interests, + interests: advert.interests.map(x => x.interest), comment: advert.comment, views: advert.views, countViews: advert.views.length, diff --git a/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts b/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts index b8e97fa..f943a07 100644 --- a/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts +++ b/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts @@ -28,9 +28,9 @@ const ADVERT_VIDE: Advert = { }) export class PopupAddOrUpdateAdComponent implements OnInit { - advert: Advert; - urlBackend: string = "" ; + advert: any; title: string = "" ; + allVideoCategorie = []; tabWaitingFile: File[] = []; // fichiers selectionnés mais pas encore "validés" tabSelectedFile: File[] = []; // fichier "validés" _event; @@ -44,18 +44,17 @@ export class PopupAddOrUpdateAdComponent implements OnInit ngOnInit(): void { + this.allVideoCategorie = this.data.allVideoCategorie if(this.data.action === "add") { this.advert = Object.assign({}, ADVERT_VIDE); this.advert.interests = []; - this.urlBackend = "url/add/ad" ; this.title = "Ajouter annonce" ; } else { this.advert = Object.assign({}, this.data.advert); this.advert.interests = this.data.advert.interests.slice(); - this.urlBackend = "url/update/ad" ; this.title = "Modifier annonce" ; } } @@ -63,24 +62,59 @@ export class PopupAddOrUpdateAdComponent implements OnInit onValidate(): void { - // --- FAUX CODE --- - this.dialogRef.close(this.advert); - - // --- VRAI CODE --- - /* - this.messageService - .sendMessage(this.urlBackend, this.advert) - .subscribe( retour => { - - if(retour.status === "error") { - console.log(retour); - this.dialogRef.close(this.advert); + // On transforme 'this.user.interests' en tableau de 'videoCategorie' + let interests = []; // tableau de videoCategorie + for(let interest of this.advert.interests) + { + for(let videoCategorie of this.allVideoCategorie) + { + if(videoCategorie.interest === interest) { + interests.push(videoCategorie); + break; } - else { - this.dialogRef.close(retour.data.advert); - } - }); - */ + } + } + this.advert.interests = interests; + + if(this.data.action === "add") + { + this.messageService + .post("ad/create", this.advert) + .subscribe(ret => this.onCreateCallback(ret), err => this.onCreateCallback(err)); + } + else { + const id = this.advert.id; + Reflect.deleteProperty(this.advert, "id"); + Reflect.deleteProperty(this.advert, "_id"); + this.messageService + .put("ad/update/"+id, this.advert) + .subscribe(ret => this.onUpdateCallback(ret,id), err => this.onUpdateCallback(err,id)); + } + } + + + onCreateCallback(retour: any): void + { + if(retour.status !== "success") { + console.log(retour); + this.dialogRef.close(); + } + else { + this.dialogRef.close(retour.data); + } + } + + + onUpdateCallback(retour: any, id: string): void + { + if(retour.status !== "success") { + console.log(retour); + this.dialogRef.close(); + } + else { + this.advert.id = id; + this.dialogRef.close(this.advert); + } } diff --git a/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts b/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts index e36d92b..1de96ef 100644 --- a/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts +++ b/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts @@ -1,7 +1,6 @@ import {Component, Inject, OnInit} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; import {MessageService} from "../../../utils/services/message/message.service"; -import {Advert} from "../../../utils/interfaces/advert"; @@ -12,7 +11,7 @@ import {Advert} from "../../../utils/interfaces/advert"; }) export class PopupDeleteAdAdvertiserComponent implements OnInit { - advert: Advert; + advert: any; constructor( public dialogRef: MatDialogRef, @@ -28,24 +27,21 @@ export class PopupDeleteAdAdvertiserComponent implements OnInit onValidate(): void { - // --- FAUX CODE --- - this.dialogRef.close(true); + this.messageService + .delete("ad/delete/"+this.advert.id) + .subscribe(ret => this.onValidateCallback(ret), err => this.onValidateCallback(err)); + } - // --- VRAI CODE --- - /* - this.messageService - .sendMessage("url/delete/ad", {"advert": this.advert}) - .subscribe( retour => { - if(retour.status === "error") { - console.log(retour); - this.dialogRef.close(); - } - else { - this.dialogRef.close(true); - } - }); - */ + onValidateCallback(retour: any): void + { + if(retour.status !== "success") { + console.log(retour); + this.dialogRef.close(); + } + else { + this.dialogRef.close(true); + } } } diff --git a/src/app/utils/interfaces/advert.ts b/src/app/utils/interfaces/advert.ts index d144d46..55da7c0 100644 --- a/src/app/utils/interfaces/advert.ts +++ b/src/app/utils/interfaces/advert.ts @@ -20,7 +20,7 @@ export interface Advert export interface AdvertWithCountViews { - _id: string, + id: string, userId: string, title: string, url: string,