371 lines
11 KiB
JavaScript
371 lines
11 KiB
JavaScript
|
import CheckPermission from "./CheckPermission.js";
|
||
|
import conn from "./Conn.js";
|
||
|
|
||
|
class Books {
|
||
|
|
||
|
checkErrors(book) {
|
||
|
const errors = [];
|
||
|
|
||
|
if(book.author.length === 0
|
||
|
|| book.author === undefined
|
||
|
|| book.author === null){
|
||
|
console.log(typeof(book));
|
||
|
errors.push("A szerzőt kötelező beállítani!");
|
||
|
}
|
||
|
|
||
|
|
||
|
if(book.title.length === 0
|
||
|
|| book.title === undefined
|
||
|
|| book.title === null)
|
||
|
errors.push("A könyv címét kötelező megadni!");
|
||
|
|
||
|
if(book.publisher.length === 0
|
||
|
|| book.publisher === undefined
|
||
|
|| book.title === null)
|
||
|
errors.push("A könyv kiadóját kötelező megadni!");
|
||
|
|
||
|
if(book.the_year_of_publishing === 0
|
||
|
|| book.the_year_of_publishing === undefined
|
||
|
|| book.the_year_of_publishing === null)
|
||
|
errors.push("A könyv kiadásának évét kötelező megadni!");
|
||
|
|
||
|
if(book.description.length === 0
|
||
|
|| book.description === undefined
|
||
|
|| book.description === null)
|
||
|
errors.push("A könyv leírását kötelező megadni!");
|
||
|
|
||
|
if(book.language.length === 0
|
||
|
|| book.language === undefined
|
||
|
|| book.language === null)
|
||
|
errors.push("A könyv nyelvét kötelező megadni!");
|
||
|
|
||
|
if(book.number_of_pages === 0
|
||
|
|| book.number_of_pages === undefined
|
||
|
|| book.number_of_pages === null)
|
||
|
errors.push("A könyv terjedelmét kötelező megadni!");
|
||
|
|
||
|
if(book.cover.length === 0
|
||
|
|| book.cover === undefined
|
||
|
|| book.cover === null)
|
||
|
errors.push("A könyv borítójának típusát kötelező megadni!");
|
||
|
|
||
|
if(book.cover.length === 0
|
||
|
|| book.cover === undefined
|
||
|
|| book.cover === null)
|
||
|
errors.push("A könyv súlyát kötelező megadni!");
|
||
|
|
||
|
if((!book.ISBN || book.ISBN.length === 0)
|
||
|
|| book.ISBN === undefined
|
||
|
|| book.ISBN === null)
|
||
|
errors.push("A könyv ISBN számát kötelező megadni!");
|
||
|
|
||
|
|
||
|
|
||
|
if(book.itemcode.length === 0
|
||
|
|| book.itemcode === undefined
|
||
|
|| book.itemcode === null)
|
||
|
errors.push("A könyv termékkódját kötelező megadni!");
|
||
|
|
||
|
if(book.price === 0
|
||
|
|| book.price === undefined
|
||
|
|| book.price === null)
|
||
|
errors.push("A könyv árát kötelező megadni!");
|
||
|
|
||
|
if(book.discounted_price === 0
|
||
|
|| book.discounted_price === undefined
|
||
|
|| book.discounted_price === null)
|
||
|
errors.push("A könyv kedvezményes árát kötelező megadni!");
|
||
|
|
||
|
if(book.categoryID === 0
|
||
|
|| book.categoryID === undefined
|
||
|
|| book.categoryID === null)
|
||
|
errors.push("A könyv kategóriáját kötelező megadni!");
|
||
|
|
||
|
return errors;
|
||
|
}
|
||
|
|
||
|
async serchBooks(char) {
|
||
|
const sql = `SELECT * FROM books WHERE title LIKE ?`;
|
||
|
const startingP = `${char}%`;
|
||
|
|
||
|
try {
|
||
|
const data = await conn.promise().query(sql, [startingP]);
|
||
|
|
||
|
if(data[0].length !== 0) {
|
||
|
return {
|
||
|
status:200,
|
||
|
messages: data[0]
|
||
|
};
|
||
|
} else {
|
||
|
return {
|
||
|
status: 404,
|
||
|
messages:["A keresett erőforrás nem található!"]
|
||
|
};
|
||
|
}
|
||
|
} catch (err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async getBooksCatID(id) {
|
||
|
const sql = `SELECT * FROM books WHERE categoryID = ?`;
|
||
|
|
||
|
try {
|
||
|
const data = await conn.promise().query(sql, [id]);
|
||
|
|
||
|
if(data[0].length !== 0) {
|
||
|
return {
|
||
|
status:200,
|
||
|
messages: data[0]
|
||
|
};
|
||
|
} else {
|
||
|
return {
|
||
|
status:404,
|
||
|
messages:["A keresett erőforrás nem található!"]
|
||
|
};
|
||
|
}
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages: ["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
async getBook(id) {
|
||
|
const sql = `SELECT * FROM books WHERE BookID = ?`;
|
||
|
|
||
|
try {
|
||
|
const data = await conn.promise().query(sql, [id]);
|
||
|
|
||
|
if(data[0].length !== 0) {
|
||
|
return {
|
||
|
status:200,
|
||
|
messages: data[0][0]
|
||
|
};
|
||
|
} else {
|
||
|
return {
|
||
|
status:404,
|
||
|
messages:["A keresett erőforrás nem található!"]
|
||
|
};
|
||
|
}
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async getBooks() {
|
||
|
const sql = "SELECT * FROM books";
|
||
|
|
||
|
try {
|
||
|
const response = await conn.promise().query(sql);
|
||
|
|
||
|
return {
|
||
|
status:200,
|
||
|
messages:response[0]
|
||
|
}
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async deleteBook(id, userID, isAdmin) {
|
||
|
const sql = `DELETE FROM books WHERE BookID = ?`;
|
||
|
|
||
|
if(!CheckPermission(userID, isAdmin, true)) {
|
||
|
return {
|
||
|
status:403,
|
||
|
messages:["Nincs jogosultságod törölni a bejegyzést!"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
try {
|
||
|
const response = await conn.promise().query(sql, [id]);
|
||
|
|
||
|
if(response[0].affectedRows === 1) {
|
||
|
return {
|
||
|
status:200, //ha a status code 204 (No Content) nem tudok hozzá üzenetet beállítani, emiatt állítottam be a 200-at!
|
||
|
messages:"Sikeres törlés!"
|
||
|
}
|
||
|
} else {
|
||
|
return {
|
||
|
status:404,
|
||
|
messages:"Az erőforrás nem található!"
|
||
|
}
|
||
|
}
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async addBook(book, userID, isAdmin) {
|
||
|
const sql = `INSERT INTO books (author, title, publisher, the_year_of_publishing,
|
||
|
description, language, number_of_pages, cover, weight, ISBN, itemcode, price, discounted_price, book_url, categoryID)
|
||
|
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
|
||
|
|
||
|
const errors = this.checkErrors(book);
|
||
|
|
||
|
if(!CheckPermission(userID, isAdmin, true)) {
|
||
|
return {
|
||
|
status:403,
|
||
|
messages:["Nincs jogosultságod létrehozni a bejegyzést!"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(errors.length > 0) {
|
||
|
console.log(errors);
|
||
|
return {
|
||
|
status:400,
|
||
|
messages:errors
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
try {
|
||
|
const response = await conn.promise().query(sql,
|
||
|
[
|
||
|
|
||
|
book.author,
|
||
|
book.title,
|
||
|
book.publisher,
|
||
|
book.the_year_of_publishing,
|
||
|
book.description,
|
||
|
book.language,
|
||
|
book.number_of_pages,
|
||
|
book.cover,
|
||
|
book.weight,
|
||
|
book.ISBN,
|
||
|
book.itemcode,
|
||
|
book.price,
|
||
|
book.discounted_price,
|
||
|
book.book_url,
|
||
|
book.categoryID
|
||
|
|
||
|
|
||
|
]);
|
||
|
|
||
|
return {
|
||
|
status:200,
|
||
|
messages:["Sikeres felvitel!"]
|
||
|
}
|
||
|
} catch(err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async updateBook(book, userID, isAdmin) {
|
||
|
const sql = `UPDATE books
|
||
|
SET author = ?, title = ?,
|
||
|
publisher = ?, the_year_of_publishing = ?,
|
||
|
description = ?, language = ?, number_of_pages = ?,
|
||
|
cover = ?, weight = ?, ISBN = ?, itemcode = ?, price = ?,
|
||
|
discounted_price = ?, book_url = ?, categoryID = ? WHERE BookID = ?`;
|
||
|
|
||
|
const errors = this.checkErrors(book);
|
||
|
|
||
|
if(!CheckPermission(userID, isAdmin, true)) {
|
||
|
return {
|
||
|
status:403,
|
||
|
messages:["Nincs jogosultságod felülírni a bejegyzést!"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(errors.length > 0) {
|
||
|
return {
|
||
|
status:400,
|
||
|
messages:errors
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
try {
|
||
|
const response = await conn.promise().query(sql,
|
||
|
[
|
||
|
book.author,
|
||
|
book.title,
|
||
|
book.publisher,
|
||
|
book.the_year_of_publishing,
|
||
|
book.description,
|
||
|
book.language,
|
||
|
book.number_of_pages,
|
||
|
book.cover,
|
||
|
book.weight,
|
||
|
book.ISBN,
|
||
|
book.itemcode,
|
||
|
book.price,
|
||
|
book.discounted_price,
|
||
|
book.book_url,
|
||
|
book.categoryID,
|
||
|
book.bookID
|
||
|
|
||
|
]);
|
||
|
|
||
|
if(response[0].affectedRows === 1) {
|
||
|
return {
|
||
|
status:200,
|
||
|
messages:["Sikeres felülírás"]
|
||
|
}
|
||
|
} else {
|
||
|
return {
|
||
|
status:404,
|
||
|
messages:["A keresett könyv nem található!"]
|
||
|
}
|
||
|
}
|
||
|
} catch (err) {
|
||
|
console.log(err);
|
||
|
console.log(err.errno);
|
||
|
console.log(err.sqlMessage);
|
||
|
|
||
|
return {
|
||
|
status:503,
|
||
|
messages:["A szolgáltatás jelenleg nem elérhető! Próbálja meg később!"]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Books;
|