📦 NEW: Profil dernières citations proposées

This commit is contained in:
Divlo 2020-04-22 22:01:18 +02:00
parent 43add978b6
commit 032ef566c7
8 changed files with 84 additions and 53 deletions

View File

@ -14,6 +14,7 @@ const Favorites = require('..
const Functions = require('../models/functions');
const Categories = require('../models/categories');
const Comments = require('../models/comments');
const Quotes = require('../models/quotes');
const deleteFilesNameStartWith = require('../assets/utils/deleteFilesNameStartWith');
async function handleEditUser(res, { name, email, biography, isPublicEmail }, userId, logoName) {
@ -221,16 +222,18 @@ exports.getUserInfo = async (req, res, next) => {
where: { userId: user.id },
include: [
{ model: Functions, attributes: { exclude: ["updatedAt", "utilizationForm", "article", "isOnline"] }, include: { model: Categories, attributes: ["name", "color"] } }
]
],
order: [['createdAt', 'DESC']],
limit: 5
});
const favoritesArray = favorites.map((favorite) => favorite.function);
const comments = await Comments.findAll({
limit: 10,
where: { userId: user.id },
include: [
{ model: Functions, attributes: { exclude: ["updatedAt", "utilizationForm", "article", "isOnline"] } }
],
order: [['createdAt', 'DESC']]
order: [['createdAt', 'DESC']],
limit: 5
});
const commentsArray = comments.map((commentObject) => {
return {
@ -240,6 +243,14 @@ exports.getUserInfo = async (req, res, next) => {
function: commentObject.function.dataValues
};
});
const quotesArray = await Quotes.findAll({
where: { userId: user.id },
attributes: {
exclude: ["updatedAt", "createdAt", "isValidated", "userId", "id"]
},
order: [['createdAt', 'DESC']],
limit: 5,
});
const userObject = {
// Si Public Email
... (user.isPublicEmail) && { email: user.email },
@ -249,7 +260,8 @@ exports.getUserInfo = async (req, res, next) => {
logo: user.logo,
createdAt: user.createdAt,
favoritesArray,
commentsArray
commentsArray,
quotesArray
};
return res.status(200).json(userObject);
} catch (error) {

View File

@ -39,7 +39,7 @@ const FunctionCard = forwardRef((props, ref) => {
<div className="FunctionCard__top">
<img onLoad={handleLoad} className="FunctionCard__image" alt={props.title} src={API_URL + props.image} />
<h2 className="FunctionCard__title">{props.title}</h2>
<p className="FunctionCard__description">{props.description}</p>
<p className="FunctionCard__description text-center">{props.description}</p>
</div>
<div className="FunctionCard__info">
<p className="FunctionCard__category" style={{ backgroundColor: props.categorie.color }}>{props.categorie.name}</p>

View File

@ -135,28 +135,28 @@ const manageCategories = (props) => {
</div>
<div className="row justify-content-center">
<div className="container-fluid">
<div className="col-24 Admin__table-column">
<table className="Admin__table">
<div className="col-24 table-column">
<table className="table">
<thead>
<tr>
<th className="Admin__table-row Admin__table-head-row" scope="col">id</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">name</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">color</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">createdAt</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">updatedAt</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">Modifier</th>
<th className="Admin__table-row Admin__table-head-row" scope="col">Supprimer</th>
<th className="table-row" scope="col">id</th>
<th className="table-row" scope="col">name</th>
<th className="table-row" scope="col">color</th>
<th className="table-row" scope="col">createdAt</th>
<th className="table-row" scope="col">updatedAt</th>
<th className="table-row" scope="col">Modifier</th>
<th className="table-row" scope="col">Supprimer</th>
</tr>
</thead>
<tbody>
{categories.map((category) => {
return (
<tr key={category.id} style={{ backgroundColor: category.color }}>
<td className="Admin__table-row">{category.id}</td>
<td className="Admin__table-row">{category.name}</td>
<td className="Admin__table-row">{category.color}</td>
<td className="Admin__table-row">{date.format(new Date(category.createdAt), 'DD/MM/YYYY à HH:mm', true)}</td>
<td className="Admin__table-row">{date.format(new Date(category.updatedAt), 'DD/MM/YYYY à HH:mm', true)}</td>
<td className="table-row">{category.id}</td>
<td className="table-row">{category.name}</td>
<td className="table-row">{category.color}</td>
<td className="table-row">{date.format(new Date(category.createdAt), 'DD/MM/YYYY à HH:mm', true)}</td>
<td className="table-row">{date.format(new Date(category.updatedAt), 'DD/MM/YYYY à HH:mm', true)}</td>
<td style={{ cursor: 'pointer' }} onClick={() => handleEditCategory({ name: category.name, color: category.color, id: category.id })}>
<FontAwesomeIcon icon={faPen} style={{ width: '1.5rem' }} />
</td>

View File

@ -67,32 +67,32 @@ const manageQuotes = (props) => {
</div>
<div className="row" style={{ marginBottom: '30px' }}>
<div className="col-24 Admin__table-column">
<table className="Admin__table">
<div className="col-24 table-column">
<table className="table">
<thead>
<tr>
<th className="Admin__table-row" scope="col">Citation/Proverbe</th>
<th className="Admin__table-row" scope="col">Auteur</th>
<th className="Admin__table-row" scope="col">Proposée par</th>
<th className="Admin__table-row" scope="col">Valider</th>
<th className="Admin__table-row" scope="col">Supprimer</th>
<th className="table-row" scope="col">Citation/Proverbe</th>
<th className="table-row" scope="col">Auteur</th>
<th className="table-row" scope="col">Proposée par</th>
<th className="table-row" scope="col">Valider</th>
<th className="table-row" scope="col">Supprimer</th>
</tr>
</thead>
<tbody>
{quotesData.rows.map((currentQuote, index) => {
const quoteJSX = (
<Fragment>
<td className="Admin__table-row text-center">{currentQuote.quote}</td>
<td className="Admin__table-row text-center">{currentQuote.author}</td>
<td className="Admin__table-row text-center">
<td className="table-row text-center">{currentQuote.quote}</td>
<td className="table-row text-center">{currentQuote.author}</td>
<td className="table-row text-center">
<Link href={"/profile/[name]"} as={`/profile/${currentQuote.user.name}`}>
<a>{currentQuote.user.name}</a>
</Link>
</td>
<td onClick={() => handleValidationQuote(currentQuote.id, true)} className="Admin__table-row text-center" style={{ cursor: 'pointer' }}>
<td onClick={() => handleValidationQuote(currentQuote.id, true)} className="table-row text-center" style={{ cursor: 'pointer' }}>
<FontAwesomeIcon icon={faCheck} style={{ width: '1.5rem' }} />
</td>
<td onClick={() => handleValidationQuote(currentQuote.id, false)} className="Admin__table-row text-center" style={{ cursor: 'pointer' }}>
<td onClick={() => handleValidationQuote(currentQuote.id, false)} className="table-row text-center" style={{ cursor: 'pointer' }}>
<FontAwesomeIcon icon={faTrash} style={{ width: '1.5rem' }} />
</td>
</Fragment>

View File

@ -160,7 +160,7 @@ const Profile = (props) => {
{(props.favoritesArray.length > 0) &&
<div className="row justify-content-center">
<div className="col-24 text-center">
<h2>Fonctions en <span className="important">favoris :</span></h2>
<h2>Dernières fonctions ajoutées aux <span className="important">favoris</span> :</h2>
</div>
<div className="col-24">
<div className="row justify-content-center">
@ -177,7 +177,7 @@ const Profile = (props) => {
{(props.commentsArray.length > 0) &&
<div className="row justify-content-center">
<div className="col-24 text-center">
<h2>Derniers <span className="important">commentaires :</span></h2>
<h2>Derniers <span className="important">commentaires</span> :</h2>
</div>
<div className="col-24 text-center">
{props.commentsArray.map((comment) => (
@ -197,6 +197,35 @@ const Profile = (props) => {
</div>
</div>
}
{(props.quotesArray.length > 0) &&
<div className="row justify-content-center">
<div className="col-24 text-center">
<h2>Dernières <span className="important">citations</span> proposées (et validées) :</h2>
<p>Citations pour la fonction <Link href="/functions/randomQuote"><a>Générateur de citations</a></Link>.</p>
</div>
<div className="col-24 table-column">
<table style={{ marginBottom: '50px' }}>
<thead>
<tr>
<th className="table-row" scope="col">Citation/Proverbe</th>
<th className="table-row" scope="col">Auteur</th>
</tr>
</thead>
<tbody>
{props.quotesArray.map((currentQuote, index) => {
return (
<tr key={index}>
<td className="table-row text-center">{currentQuote.quote}</td>
<td className="table-row text-center">{currentQuote.author}</td>
</tr>
);
})}
</tbody>
</table>
</div>
</div>
}
</div>
}

View File

@ -217,4 +217,14 @@ a, .important {
height: 1rem;
content: "";
background: no-repeat 50%/50% 50%;
}
.table-column {
display: grid;
}
.table, th, td {
border: 1px solid var(--text-color);
border-collapse: collapse;
}
.table-row {
padding: 15px;
}

View File

@ -37,14 +37,4 @@
border-radius: 10px;
overflow: auto;
white-space: normal !important;
}
.table-column {
display: grid;
}
.table, th, td {
border: 1px solid var(--text-color);
border-collapse: collapse;
}
.table-row {
padding: 15px;
}

View File

@ -20,16 +20,6 @@
.Admin__Modal-select-option {
color: rgb(221, 220, 220);
}
.Admin__table-column {
display: grid;
}
.Admin__table, th, td {
border: 1px solid var(--text-color);
border-collapse: collapse;
}
.Admin__table-row {
padding: 15px;
}
.Admin__Function-slide {
margin-top: 40px;
}