aboutsummaryrefslogtreecommitdiff
path: root/classes/Client.php
diff options
context:
space:
mode:
authorCamil Staps2016-07-27 16:48:53 +0200
committerCamil Staps2016-07-27 17:08:12 +0200
commit21455bfd1004c4a3153050ac5995b8dc680c2042 (patch)
treeb448f9d94cd9b6addb6d6b391001c418243cc13d /classes/Client.php
parentRemoved error reporting (diff)
Class names start with a capital
Diffstat (limited to 'classes/Client.php')
-rw-r--r--classes/Client.php108
1 files changed, 108 insertions, 0 deletions
diff --git a/classes/Client.php b/classes/Client.php
new file mode 100644
index 0000000..13e28d7
--- /dev/null
+++ b/classes/Client.php
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Provides the client class, an interface to the client table in the database
+ *
+ * @author Camil Staps
+ *
+ * BusinessAdmin: administrative software for small companies
+ * Copyright (C) 2015 Camil Staps (ViviSoft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * An interface to the client table in the database
+ */
+class Client extends Model {
+ public
+ $table = 'client',
+ $fillable_columns = ['name'];
+
+ /**
+ * Get all contact ids for this client
+ *
+ * @see client::getContacts() This funtion returns instances of the contact class instead of just the ids
+ *
+ * @throws PDOException Is something went wrong with the database
+ *
+ * @return int[] The ids
+ */
+ public function getContactIds() {
+ $ids = array();
+ $contacts = $this->pdo->query("SELECT `id` FROM `".Constants::db_prefix."contact` WHERE `clientId`={$this->id}")->fetchAll(PDO::FETCH_ASSOC);
+ foreach ($contacts as $contact) {
+ $ids[] = $contact['id'];
+ }
+ return $ids;
+ }
+
+ /**
+ * Get all contacts for this client
+ *
+ * @see client::getContactIds() This function returns just the ids of the contacts, and not instances of the contact class
+ *
+ * @throws PDOException If something went wrong with the database
+ *
+ * @return contact[] An array indexed by id of instances of the contact class
+ */
+ public function getContacts() {
+ $ids = $this->getContactIds();
+ $contacts = array();
+ foreach ($ids as $id) {
+ $contacts[$id] = new Contact($this->pdo, $id);
+ }
+ return $contacts;
+ }
+
+ //------------------------------------------------------------------------------
+ // Other functions
+ //------------------------------------------------------------------------------
+
+ /**
+ * Make a new contact for this client
+ *
+ * @param string $name The name for this contact
+ * @param string $email The email for this contact
+ * @param string $address The first address line of this contact (normally street and house number)
+ * @param string $address_2 The second address line of this contact
+ * @param string $postal_code The postal code for this contact
+ * @param string $city The city for this contact
+ * @param string $state The state for this contact
+ * @param string $country The country for this contact
+ *
+ * @throws PDOException If something went wrong with the database
+ * @throws Exception If there was a problem with the input
+ *
+ * @return contact A new instance of the contact class containing the new contact
+ */
+ public function createContact($name, $email, $address, $address_2, $postal_code, $city, $country) {
+ $stmt = $this->pdo->prepare("INSERT INTO `".Constants::db_prefix."contact` (`clientId`,`name`,`email`,`address`,`address_2`,`postal_code`,`city`,`country`) VALUES (?,?,?,?,?,?,?,?)");
+ $stmt->execute(array(
+ $this->id,
+ $name,
+ $email,
+ $address,
+ $address_2,
+ $postal_code,
+ $city,
+ $country
+ ));
+ if ($stmt->rowCount() == 1) {
+ return new Contact($this->pdo, $this->pdo->lastInsertId());
+ } else {
+ $error = $stmt->errorInfo();
+ throw new Exception($error[2]);
+ }
+ }
+}