diff --git a/src/app/beforeConnexion/login/page-login/page-login.component.ts b/src/app/beforeConnexion/login/page-login/page-login.component.ts index 636a24d..86005af 100644 --- a/src/app/beforeConnexion/login/page-login/page-login.component.ts +++ b/src/app/beforeConnexion/login/page-login/page-login.component.ts @@ -62,7 +62,7 @@ export class PageLoginComponent implements OnInit this.profilService.profileImageUrl = retour.data.profileImageUrl; if(retour.data.role.name === "user") this.router.navigateByUrl( '/user/search'); else if(retour.data.role.name === "advertiser") this.router.navigateByUrl( '/advertiser/adList'); - else if(retour.data.role.name === "admin") this.router.navigateByUrl( '/admin/userList'); + else if(retour.data.role.name === "admin" || retour.data.role.name === "superAdmin") this.router.navigateByUrl( '/admin/userList'); } } diff --git a/src/app/user/myPlaylists/video-list/video-list.component.ts b/src/app/user/myPlaylists/video-list/video-list.component.ts index a98cd24..4a6b082 100644 --- a/src/app/user/myPlaylists/video-list/video-list.component.ts +++ b/src/app/user/myPlaylists/video-list/video-list.component.ts @@ -50,7 +50,7 @@ export class VideoListComponent implements OnChanges onAdd(video: VideoAll): void { - this.addVideoToPlaylistService.run(video); + //this.addVideoToPlaylistService.run(video); } diff --git a/src/app/user/search/page-search/page-search.component.ts b/src/app/user/search/page-search/page-search.component.ts index 5c64bb0..0005371 100644 --- a/src/app/user/search/page-search/page-search.component.ts +++ b/src/app/user/search/page-search/page-search.component.ts @@ -1,10 +1,7 @@ import { Component, OnInit } from '@angular/core'; import {MessageService} from "../../../utils/services/message/message.service"; import {VideoAll} from "../../../utils/interfaces/video"; -import {Advert} from "../../../utils/interfaces/advert"; import {ThemeService} from "../../../utils/services/theme/theme.service"; -import {FictitiousVideosService} from "../../../utils/services/fictitiousDatas/fictitiousVideos/fictitious-videos.service"; -import {FictitiousAdvertsService} from "../../../utils/services/fictitiousDatas/fictitiousAdverts/fictitious-adverts.service"; import {HttpParams} from "@angular/common/http"; @@ -26,26 +23,37 @@ export class PageSearchComponent implements OnInit tabPlateform = TAB_PLATEFORM; tabVideo: VideoAll[] = []; search: string = ""; - ad1: Advert; - ad2: Advert; + ad1: any = { title: "", url: "", images: [] }; + ad2: any = { title: "", url: "", images: [] }; constructor( private messageService: MessageService, - private fictitiousVideosService: FictitiousVideosService, - private fictitiousAdvertsService: FictitiousAdvertsService, public themeService: ThemeService ) { } ngOnInit(): void { - // --- FAUX CODE --- - //this.tabVideo = this.fictitiousVideosService.getTabVideoAll(90); - this.ad1 = this.fictitiousAdvertsService.getAdvert(); - this.ad2 = this.fictitiousAdvertsService.getAdvert(); + let params = new HttpParams(); + params = params.append("quantity", 2); + this.messageService + .get("user/ad", params) + .subscribe(ret => this.adCallback(ret), err => this.adCallback(err)); + this.onSearch(); } + adCallback(retour: any): void + { + if(retour !== "success") { + console.log(retour); + } + else { + this.ad1 = retour.data[0]; + this.ad2 = retour.data[1]; + } + } + onSearch() { @@ -68,11 +76,8 @@ export class PageSearchComponent implements OnInit onSearchCallback(retour: any): void { - console.log("ngOnInitCallback:"); - console.log(retour); - if(retour.status !== "success") { - //console.log(retour); + console.log(retour); } else { this.tabVideo = retour.data; diff --git a/src/app/user/search/video-grid/video-grid.component.ts b/src/app/user/search/video-grid/video-grid.component.ts index 366092d..a913c79 100644 --- a/src/app/user/search/video-grid/video-grid.component.ts +++ b/src/app/user/search/video-grid/video-grid.component.ts @@ -29,7 +29,7 @@ export class VideoGridComponent implements OnChanges onAdd(video: VideoAll): void { - this.addVideoToPlaylistsService.run(video); + this.addVideoToPlaylistsService.run(video.videoId, video.source); } tronquage(str: string) diff --git a/src/app/user/utils/components/advert/advert.component.html b/src/app/user/utils/components/advert/advert.component.html index c7e90f0..39d1334 100644 --- a/src/app/user/utils/components/advert/advert.component.html +++ b/src/app/user/utils/components/advert/advert.component.html @@ -1,7 +1,7 @@
@@ -10,7 +10,7 @@ @@ -18,6 +18,6 @@ diff --git a/src/app/user/utils/components/advert/advert.component.ts b/src/app/user/utils/components/advert/advert.component.ts index a088499..d8c62d9 100644 --- a/src/app/user/utils/components/advert/advert.component.ts +++ b/src/app/user/utils/components/advert/advert.component.ts @@ -11,7 +11,7 @@ import {Router} from "@angular/router"; }) export class AdvertComponent implements OnInit { - @Input() ad: Advert; + @Input() ad: any; @Input() from: string = "search"; idxImage: number = 0; @@ -20,7 +20,10 @@ export class AdvertComponent implements OnInit ngOnInit(): void { const nbImages = this.ad.images.length; + if(nbImages === 0) this.ad.images.push({url: "img pub"}); this.idxImage = Math.floor(Math.random() * nbImages); + + if(this.ad.title === "") this.ad.title = "--- pub ---" ; } onClick(): void diff --git a/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts b/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts index d02d3a9..f7f33fb 100644 --- a/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts +++ b/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts @@ -12,11 +12,20 @@ import {MessageService} from "../../../../utils/services/message/message.service }) export class PopupAddVideoToPlaylistsComponent implements OnInit { - video: VideoDB; + _idVideo: string = ""; + videoId: string = ""; + source: string = ""; + interest: string = ""; + tabPlaylistAndBool = []; + goToCreatePlaylist = false; newPlaylistName = ""; + isFinishedForExistingPlaylist: boolean = false; + isFinishedForNewPlaylist: boolean = false; + + constructor( public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, @@ -25,7 +34,18 @@ export class PopupAddVideoToPlaylistsComponent implements OnInit ngOnInit(): void { - this.video = this.data.video; + this._idVideo = this.data._idVideo; + this.videoId = this.data.videoId; + this.source = this.data.source; + this.interest = this.data.interest; + + console.log("---"); + console.log(this.data._idVideo); + console.log(this.data.videoId); + console.log(this.data.source); + console.log(this.data.interest); + console.log("---"); + for(let playlist of this.data.playlists) { playlist["isSelected"] = false; @@ -34,34 +54,125 @@ export class PopupAddVideoToPlaylistsComponent implements OnInit } + onValider(): void { - const tabPlaylist = []; - for(let playlist of this.tabPlaylistAndBool) + // --- Existing playlists --- + + let listeDesPlaylists = "" ; + for(let playlist of this.tabPlaylistAndBool) listeDesPlaylists += playlist.id + "," + if(listeDesPlaylists.endsWith(",")) listeDesPlaylists = listeDesPlaylists.slice(0, listeDesPlaylists.length-1); + + console.log(listeDesPlaylists); + const data1 = { videoId: this._idVideo } + this.messageService + .put( "playlist/update/"+ listeDesPlaylists, data1) + .subscribe( ret => this.callbackForExistingPlaylists(ret), err => this.callbackForExistingPlaylists(err)); + + + // --- New playlists --- + + if(this.goToCreatePlaylist) { - if(playlist.isSelected) { - delete playlist["isSelected"]; - tabPlaylist.push(playlist); - } + const data2 = { + name: this.newPlaylistName, + video: {videoId: this.videoId, interest: this.interest, source: this.source} + }; + this.messageService + .post("playlist/create", data2) + .subscribe( ret => this.callbackForNewPlaylist(ret), err => this.callbackForNewPlaylist(err)); + } + else { + this.isFinishedForNewPlaylist = true; } - // --- FAUX CODE --- - this.dialogRef.close("success"); - // --- VRAI CODE --- - /* - if(!this.goToCreatePlaylist) this.newPlaylistName = ""; - const data = { "video": this.video, "playlists": tabPlaylist, "newPlaylistName": this.newPlaylistName }; - this.messageService - .sendMessage("user/add/vidéo", data) - .subscribe( retour => { this.dialogRef.close(retour.status) }); - */ + // Attente active + while((!this.isFinishedForExistingPlaylist) || (!this.isFinishedForNewPlaylist)) {} + this.dialogRef.close("success"); } + + callbackForExistingPlaylists(retour: any): void + { + console.log("onValiderCallback"); + //console.log(retour); + + if(retour.status !== "success") { + console.log(retour); + this.dialogRef.close(null); + } + else { + this.isFinishedForExistingPlaylist = true; + } + } + + + + callbackForNewPlaylist(retour: any): void + { + console.log("callbackForNewPlaylist"); + + if(retour.status !== "success") { + //console.log(retour); + this.dialogRef.close(null); + } + else { + this.isFinishedForNewPlaylist = true; + } + } + + + onAnnuler(): void { - this.dialogRef.close("annulation") + this.dialogRef.close("annulation"); } + + /* + + //nbPlaylistSelected: number = 0; + //numPlaylistSelected: number = 0; + + onValider(): void + { + for(let playlist of this.tabPlaylistAndBool) + { + if(playlist.isSelected) this.nbPlaylistSelected += 1; + } + + for(let playlist of this.tabPlaylistAndBool) + { + if(playlist.isSelected) + { + playlist.videoIds.push(this._idVideo); + this.messageService + .put("playlist/update/"+playlist._id, playlist.videoIds) + .subscribe(ret => this.onAddingToExistingPlaylist(ret), err => this.onAddingToExistingPlaylist(err)); + } + } + } + + onAddingToExistingPlaylist(retour: any): void + { + console.log("onValiderCallback"); + console.log(retour); + this.numPlaylistSelected += 1; + + if(retour.status !== "success") { + this.dialogRef.close("annulation"); + } + else { + if(this.numPlaylistSelected === this.numPlaylistSelected) + { + this.dialogRef.close("success"); + } + } + } + */ + + + } diff --git a/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts b/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts index 88aadaf..11e96a7 100644 --- a/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts +++ b/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts @@ -2,9 +2,9 @@ import { Injectable } from '@angular/core'; import {MessageService} from "../../../../utils/services/message/message.service"; import {MatDialog} from "@angular/material/dialog"; import {PopupAddVideoToPlaylistsComponent} from "../../components/popup-add-video-to-playlists/popup-add-video-to-playlists.component"; -import {VideoAll, VideoDB} from "../../../../utils/interfaces/video"; import {MatSnackBar} from "@angular/material/snack-bar"; import {FictitiousVideosService} from "../../../../utils/services/fictitiousDatas/fictitiousVideos/fictitious-videos.service"; +import {HttpParams} from "@angular/common/http"; @@ -13,7 +13,11 @@ import {FictitiousVideosService} from "../../../../utils/services/fictitiousData }) export class AddVideoToPlaylistsService { - private _video: VideoDB | VideoAll; + private _idVideo: string = "" ; + private videoId: string = "" ; + private source: string = "" ; + private interest: string = "" ; + constructor( private messageService: MessageService, @@ -22,47 +26,89 @@ export class AddVideoToPlaylistsService private snackBar: MatSnackBar ) { } - // --- FAUX CODE --- - run(video0: VideoDB | VideoAll): void - { - this._video = video0; - const retour = { - status: "success", - data: this.fictitiousVideosService.getRandomTabPlaylistDB(4, 5), - } - this.afterReceivingPlaylists(retour) - } - // --- VRAI CODE --- - /* - run(video0: VideoDB): void + run(videoId: string, source: string): void { - this._video = video0; + this.videoId = videoId; + this.source = source; + + let params = new HttpParams(); + if(source === "Youtube") params = params.append("source", "yt"); + else params = params.append("source", "dm"); this.messageService - .sendMessage('user/get/playlists', null) - .subscribe( retour => { this.afterReceivingPlaylists(retour) }); + .get("video/get/"+videoId, params) + .subscribe(ret => this.afterAskingVideoInfo(ret), err => this.afterAskingVideoInfo(err)); } - */ - private afterReceivingPlaylists(retour): void + + afterAskingVideoInfo(retour: any): void { - if(retour.status === "error") console.log(retour.data); + console.log("afterAskingVideoInfo"); + console.log(retour); + + if(retour.status !== "success") { + //console.log(retour); + } + else { + this.interest = retour.data.interest; + const data = { source: this.source, interest: this.interest }; + this.messageService + .post("video/create/"+this.videoId, data) + .subscribe(ret => this.afterCreatingVideo(ret), err => this.afterCreatingVideo(err)); + } + } + + + + private afterCreatingVideo(retour: any): void + { + console.log("afterCreatingVideo"); + console.log(retour); + + if(retour.status !== "success") { + //console.log(retour); + } + else { + this._idVideo = retour.data.id; + this.messageService + .get('playlist/findAll') + .subscribe( ret => this.afterReceivingPlaylists(ret), ret => this.afterReceivingPlaylists(ret) ); + } + } + + + + private afterReceivingPlaylists(retour: any): void + { + console.log("afterReceivingPlaylists"); + console.log(retour); + + if(retour.status !== "success") { + //console.log(retour); + } else { const config = { width: '30%', - data: { video: this._video, playlists: retour.data } + data: { + _idVideo: this._idVideo, + videoId: this.videoId, + source: this.source, + interest: this.interest, + playlists: retour.data.filter(x => x.isActive === true) + } }; this.dialog - .open(PopupAddVideoToPlaylistsComponent, config ) + .open(PopupAddVideoToPlaylistsComponent, config) .afterClosed() - .subscribe(retour => { this.afterClosingDialog(retour); }); + .subscribe(retour => this.afterClosingDialog(retour)); } } + private afterClosingDialog(retour): void { let message = "" ; diff --git a/src/app/user/watching/page-watching-video/page-watching-video.component.html b/src/app/user/watching/page-watching-video/page-watching-video.component.html index 61e9f6d..631c309 100644 --- a/src/app/user/watching/page-watching-video/page-watching-video.component.html +++ b/src/app/user/watching/page-watching-video/page-watching-video.component.html @@ -31,7 +31,7 @@   logo - +   @@ -39,7 +39,7 @@   logo - +   diff --git a/src/app/user/watching/page-watching-video/page-watching-video.component.ts b/src/app/user/watching/page-watching-video/page-watching-video.component.ts index 8306531..58d6c8a 100644 --- a/src/app/user/watching/page-watching-video/page-watching-video.component.ts +++ b/src/app/user/watching/page-watching-video/page-watching-video.component.ts @@ -9,6 +9,7 @@ import {ActivatedRoute, Router} from "@angular/router"; import {AddVideoToPlaylistsService} from "../../utils/services/addVideoToPlaylists/add-video-to-playlists.service"; import {PlaylistDB} from "../../../utils/interfaces/playlist"; import {DomSanitizer, SafeResourceUrl} from "@angular/platform-browser"; +import {HttpParams} from "@angular/common/http"; @@ -27,10 +28,16 @@ let TAB_PLATEFORM = [ export class PageWatchingVideoComponent implements OnInit { tabPlateform = TAB_PLATEFORM; - video: VideoAll; + video = { + title: "zzz", + views: 0, + publishedAt: null, + description: "", + source: "" + }; search: string = ""; - ad1: Advert; - ad2: Advert; + ad1: any = { title: "", url: "", images: [] }; + ad2: any = { title: "", url: "", images: [] }; from: string = ""; playlist: PlaylistDB; @@ -54,10 +61,29 @@ export class PageWatchingVideoComponent implements OnInit ngOnInit(): void { // --- FAUX CODE --- + //const videoId = this.activatedRoute.snapshot.paramMap.get('videoId'); + //this.video = this.fictitiousVideosService.getVideoByVideoId(videoId); + //this.ad1 = this.fictitiousAdvertsService.getAdvert(); + //this.ad2 = this.fictitiousAdvertsService.getAdvert(); + + // findVideoCallback const videoId = this.activatedRoute.snapshot.paramMap.get('videoId'); - this.video = this.fictitiousVideosService.getVideoByVideoId(videoId); - this.ad1 = this.fictitiousAdvertsService.getAdvert(); - this.ad2 = this.fictitiousAdvertsService.getAdvert(); + let params1 = new HttpParams(); + let source = "" ; + if(this.activatedRoute.snapshot.paramMap.get('source') === "Youtube") source = "yt" ; + else source = "dm" + params1 = params1.append("source", source); + this.messageService + .get("video/get/"+videoId, params1) + .subscribe(ret => this.findVideoCallback(ret), err => this.findVideoCallback(err)); + + // advert + let params2 = new HttpParams(); + params2 = params2.append("quantity", 2); + this.messageService + .get("user/ad", params2) + .subscribe(ret => this.findAdCallback(ret), err => this.findAdCallback(err)); + if(this.router.url.includes("fromSearch")) this.from = "search" ; else if(this.router.url.includes("fromHistory")) this.from = "history"; @@ -90,6 +116,29 @@ export class PageWatchingVideoComponent implements OnInit } + findVideoCallback(retour: any): void + { + if(retour.status !== "success") { + console.log(retour); + } + else { + this.video = retour.data; + } + } + + + findAdCallback(retour: any): void + { + if(retour !== "success") { + console.log(retour); + } + else { + this.ad1 = retour.data[0]; + this.ad2 = retour.data[1]; + } + } + + onSearch() { @@ -98,7 +147,7 @@ export class PageWatchingVideoComponent implements OnInit onAdd(): void { - this.addVideoToPlaylistsService.run(this.video); + //this.addVideoToPlaylistsService.run(this.video); } @@ -113,8 +162,8 @@ export class PageWatchingVideoComponent implements OnInit safeUrl(videoId: string, source: string): SafeResourceUrl { let videoUrl = "" ; - if(source === 'youtube') videoUrl = "https://www.youtube.com/embed/" + videoId; - else if(source === 'dailymotion') videoUrl = "https://www.dailymotion.com/embed/video/" + videoId; + if(source === 'Youtube') videoUrl = "https://www.youtube.com/embed/" + videoId; + else if(source === 'Dailymotion') videoUrl = "https://www.dailymotion.com/embed/video/" + videoId; return this._sanitizer.bypassSecurityTrustResourceUrl(videoUrl); }