--- /dev/null
+<?php
+
+class PdoCustomerManager extends AbstractPdoManager {
+
+ public function getBySugarId($sugar_id){
+ $sql = "SELECT * FROM customers WHERE sugar_id=?";
+ $result = $this->queryOne($sql,$sugar_id);
+ if (! $result){
+ return false;
+ }
+ $customer = new Customer();
+ $customer->importFromArray($result);
+ return $customer;
+ }
+
+ public function apidExists($ap_id){
+ $sql = "SELECT count(*) FROM customers WHERE ap_id=?";
+ return $this->queryOne($sql,$ap_id)?true:false;
+ }
+
+ public function edit(Customer $customer){
+ if ($customer->id){
+ $this->updateCustomer($customer);
+ return $customer->id;
+ } else {
+ return $this->createCustomer($customer);
+ }
+ }
+
+ public function createCustomer(Customer $customer) {
+
+ $query = $this -> pdo -> prepare(
+ 'INSERT INTO customers (
+ ap_id,
+ name,
+ ap_contact,
+ sugar_id
+ ) VALUES (
+ :ap_id,
+ :name,
+ :ap_contact,
+ :sugar_id
+ );'
+ );
+ $query -> bindValue(':ap_id', $customer -> ap_id);
+ $query -> bindValue(':name', $customer -> name);
+ $query -> bindValue(':ap_contact', $customer -> ap_contact);
+ $query -> bindValue(':sugar_id', $customer -> sugar_id);
+ $query -> execute();
+ return $this->lastInsertId();
+ }
+
+ public function updateCustomer(Customer $customer) {
+
+ $query = $this -> pdo -> prepare(
+ 'UPDATE customers
+ SET ap_id = :ap_id,
+ name = :name,
+ ap_contact = :ap_contact,
+ sugar_id = :sugar_id
+ WHERE id = :id'
+ );
+ $query -> bindValue(':id', $customer -> id);
+ $query -> bindValue(':ap_id', $customer -> ap_id);
+ $query -> bindValue(':name', $customer -> name);
+ $query -> bindValue(':ap_contact', $customer -> ap_contact);
+ $query -> bindValue(':sugar_id', $customer -> sugar_id);
+ $query -> execute();
+ }
+
+ public function getNbCustomers(){
+ $query = "SELECT count(*) FROM customers";
+ return $this->sqlQuery->queryOne($query);
+ }
+
+ public function getCustomersForOutput($offset,$limit) {
+ $query = "SELECT id,ap_id,name,ap_contact FROM customers ORDER BY name LIMIT $offset,$limit";
+ return $this->sqlQuery->query($query);
+ }
+
+ public function getCustomer($id) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM customers WHERE id = :id');
+ $query -> bindValue(':id', $id);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+
+ $customer = new Customer();
+ if ($result) {
+ $customer->importFromArray($result);
+ }
+ $query->closeCursor();
+
+ return $customer;
+ }
+
+ public function getCustomerByAPId($identifiantAP) {
+
+ $query = $this -> pdo -> prepare('SELECT * FROM customers WHERE ap_id = :ap_id');
+ $query -> bindValue(':ap_id', $identifiantAP);
+ $query -> execute();
+
+ $result = $query -> fetch(PDO::FETCH_ASSOC);
+
+ if (! $result){
+ return false;
+ }
+ $customer = new Customer();
+ $customer->importFromArray($result);
+ $query->closeCursor();
+
+ return $customer;
+ }
+
+ public function removeCustomer(Customer $customer) {
+ $query = $this -> pdo -> prepare('DELETE FROM customers WHERE id = :id');
+ $query -> bindValue('id', $customer -> id);
+ $query -> execute();
+ }
+
+ public function searchCustomer($q,$limit = 50){
+ $sql = "SELECT name,ap_id FROM customers WHERE name LIKE ? OR ap_id LIKE ? LIMIT $limit";
+ return $this->query($sql,"%$q%","%$q%");
+ }
+
+}
+