--- /dev/null
+<?php
+
+
+class PdoProductManager extends AbstractPdoManager {
+
+ public function editProduct(Product $product){
+ if ($product->id){
+ $this->updateProduct($product);
+ return $product->id;
+ } else {
+ return $this->createProduct($product);
+ }
+ }
+
+ public function createProduct(Product $product) {
+ $query = $this -> pdo -> prepare(
+ 'INSERT INTO products (name,icon_url,diminutif,sugar_id) VALUES (:name , :icon_url,:diminutif,:sugar_id);'
+ );
+ $query -> bindValue(':name', $product -> name);
+ $query -> bindValue(':icon_url',$product->icon_url);
+ $query -> bindValue(':diminutif',$product->diminutif);
+ $query -> bindValue(':sugar_id',$product->sugar_id);
+ $query -> execute();
+ return $this->lastInsertId();
+ }
+
+ public function updateProduct(Product $product) {
+
+ $query = $this -> pdo -> prepare(
+ 'UPDATE products
+ SET name = :name,
+ icon_url = :icon_url,
+ diminutif = :diminutif,
+ sugar_id = :sugar_id
+ WHERE id = :id'
+ );
+ $query -> bindValue(':id', $product ->id);
+ $query -> bindValue(':name', $product -> name);
+ $query->bindValue(':icon_url',$product->icon_url);
+ $query->bindValue(':diminutif',$product->diminutif);
+ $query->bindValue(':sugar_id',$product->sugar_id);
+ $query -> execute();
+ }
+
+ /**
+ * @param $id
+ * @return Product
+ */
+ public function getProduct($id) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM products WHERE id = :id');
+ $query -> bindValue(':id', $id);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+
+ $product = new Product();
+ if ($result) {
+ $product->importFromArray($result);
+ }
+
+ return $product;
+ }
+
+ public function getProductByName($name) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM products WHERE name = :name');
+ $query -> bindValue(':name', $name);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+ $product = new Product();
+ if ($result) {
+ $product->importFromArray($result);
+ }
+ $query->closeCursor();
+
+ return $product;
+ }
+
+ public function getProducts($offset,$limit) {
+ $query = "SELECT id,name,icon_url,diminutif FROM products ORDER BY name LIMIT $offset,$limit";
+ return $this->query($query);
+ }
+
+ public function getNbProducts(){
+ $sql = "SELECT count(*) FROM products";
+ return $this->queryOne($sql);
+ }
+
+ public function getNamesOfProducts() {
+
+ $query = $this -> pdo -> prepare('SELECT name FROM products');
+ $query -> execute();
+
+ $results = $query -> fetchAll(PDO::FETCH_ASSOC);
+ $names = array();
+ foreach ($results as $result) {
+ $names[] = $result['name'];
+ }
+
+ $query->closeCursor();
+
+ return $names;
+ }
+
+ public function delete($id) {
+ $sql = "DELETE FROM products WHERE id = ? ";
+ $this->query($sql,$id);
+ }
+
+ public function existsByName($name){
+ return $this->queryOne("SELECT count(*) FROM products WHERE name=?",$name)?true:false;
+ }
+
+ /**
+ * @param $sugar_id
+ * @return Product|null
+ */
+ public function getBySugarId($sugar_id){
+ $sql = "SELECT * FROM products WHERE sugar_id=?";
+ $info = $this->queryOne($sql,$sugar_id);
+ return $this->createObjectModel($info);
+ }
+
+}