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;