Skip to content
Snippets Groups Projects
Commit 82277df3 authored by Pascalou's avatar Pascalou
Browse files

note utilisateur film

parent 09fd1556
No related branches found
No related tags found
No related merge requests found
......@@ -20,8 +20,8 @@ exports.searchMovie = (req, res, next) => {
db.query('SELECT * FROM Film WHERE primaryTitle LIKE CONCAT("%",?,"%") OR titleFR LIKE CONCAT("%",?,"%")',
[search, search], function (error, results, fields) {
if(error) {
res.status(500).json({error});
if (error) {
res.status(500).json({ error });
}
else {
let searchResults = results;
......@@ -56,4 +56,69 @@ exports.getMovieCast = (req, res, next) => {
res.status(200).json(infos);
}
})
};
exports.addMovieNote = (req, res, next) => {
let filmId = req.query.id;
let username = req.session.username;
let note = req.query.note;
if (checkMovieNoteExist(username, filmId)) {
db.query('UPDATE Filmvue SET note=? WHERE login=? and tconst=?', [note, username, id],
function (error, results, fields) {
if (error == null) {
res.status(200).json({ message: 'Film préféré modifié' });
}
else {
res.status(500).json({ error });
}
})
} else {
db.query('INSERT INTO Filmvue VALUES (?,?,?)',
[username, filmId, firstname, note],
function (error, results, fields) {
if (error == null) {
res.status(201).json({ message: 'Film préféré ajouté' });
}
else {
res.status(500).json({ error });
}
})
}
};
async function checkMovieNoteExist(IdUser, IdFilm) {
const queryResult = await new Promise((resolve, reject) => {
db.query('SELECT * FROM Filmvue WHERE login=? and tconst=?',
[IdUser, IdFilm],
function (error, results, fields) {
if (error) {
reject(error);
} else {
resolve(results.length != 0);
}
})
});
return queryResult;
};
exports.getMovieNote = (req, res, next) => {
let filmId = req.query.id;
let username = req.session.username;
console.log(filmId);
console.log(username);
db.query('SELECT note FROM Filmvue WHERE tconst = ? and login=?',
[filmId, username], function (error, results, fields) {
if (error) {
res.status(500).json({ error });
} else {
console.log(results);
let infos = results;
res.status(200).json(infos);
}
})
};
\ No newline at end of file
const express = require('express');
const router = express.Router();
const controller = require('../controllers/movieController');
const auth = require('../middlewares/auth');
router.get('/:id(tt\\d+)',controller.getMovieInformations);
router.get('/search',controller.searchMovie);
router.get('/recent',controller.getRecentlyReleasedMovies);
router.get('/cast/:id(tt\\d+)',controller.getMovieCast);
router.get('/addmovienote',auth.auth,controller.addMovieNote);
router.get('/getMovieNote',auth.auth,controller.getMovieNote);
......
......@@ -9,7 +9,8 @@
"version": "0.0.0",
"dependencies": {
"vue": "^3.3.4",
"vue-router": "^4.2.5"
"vue-router": "^4.2.5",
"vue-star-rating": "^2.1.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.4.0",
......@@ -650,9 +651,9 @@
}
},
"node_modules/vite": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
"integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz",
"integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==",
"dev": true,
"dependencies": {
"esbuild": "^0.18.10",
......@@ -737,6 +738,14 @@
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/vue-star-rating": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/vue-star-rating/-/vue-star-rating-2.1.0.tgz",
"integrity": "sha512-LnhuQPi4hkRg7egKls+iqtL1U0RTN2gQkdLsJN7acyynMsSc9epHLzk8McJS+bR0OzfG98zNFq7mxAyuSb/okQ==",
"dependencies": {
"vue": "^3.0.0"
}
}
},
"dependencies": {
......@@ -1105,9 +1114,9 @@
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
},
"vite": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
"integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz",
"integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==",
"dev": true,
"requires": {
"esbuild": "^0.18.10",
......@@ -1135,6 +1144,14 @@
"requires": {
"@vue/devtools-api": "^6.5.0"
}
},
"vue-star-rating": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/vue-star-rating/-/vue-star-rating-2.1.0.tgz",
"integrity": "sha512-LnhuQPi4hkRg7egKls+iqtL1U0RTN2gQkdLsJN7acyynMsSc9epHLzk8McJS+bR0OzfG98zNFq7mxAyuSb/okQ==",
"requires": {
"vue": "^3.0.0"
}
}
}
}
......@@ -9,7 +9,8 @@
},
"dependencies": {
"vue": "^3.3.4",
"vue-router": "^4.2.5"
"vue-router": "^4.2.5",
"vue-star-rating": "^2.1.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.4.0",
......
<script setup>
import Header from '@/components/Header.vue'
import CastRow from '@/components/CastRow.vue'
import StarRating from 'vue-star-rating';
import Header from '@/components/Header.vue';
import CastRow from '@/components/CastRow.vue';
import { ref, onMounted } from 'vue';
import {useRoute} from 'vue-router';
......@@ -13,6 +14,28 @@ let annee = ref('');
let duree = ref('');
let note = ref('');
let nbNotes = ref('');
let rating = ref(0);
async function getRateUser(){
const params = new URLSearchParams({ id: route.params.id });
try {
const response = await fetch(`http://localhost:3000/movies/getMovieNote?${params.toString()}`, { credentials: 'include' });
if (response.ok) {
const data = await response.json();
if (data) {
console.log(data[0].note);
rating.value = data[0].note;
}
} else {
const errorData = await response.json();
console.error('Error:', response.status, errorData);
}
} catch (error) {
console.error('Error during API call:', error);
}
}
async function getFilmInfo() {
......@@ -43,6 +66,8 @@ async function getFilmInfo() {
onMounted(() => {
getFilmInfo();
getCast();
getRateUser();
console.log(rating.value);
});
let cast = ref([])
......@@ -77,6 +102,8 @@ async function getCast() {
<h2>Date de sortie : {{ annee }}</h2>
<h2>Durée : {{ duree }} minutes</h2>
<h2>Note : {{ note }}</h2>
<h2>Votre note :</h2>
<star-rating v-model:rating="rating"/>
<h2>Distribution : </h2>
<CastRow :cast="cast"></CastRow>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment