diff options
author | Camil Staps | 2016-07-27 20:54:34 +0200 |
---|---|---|
committer | Camil Staps | 2016-07-27 20:54:34 +0200 |
commit | ee7b6b8cc0cb8619c298f533a2ac791d7aa3b57c (patch) | |
tree | 21cdd4e07585887e72c2de08b8c235b1aa10d3ec | |
parent | Assignment: use Model (diff) |
Discount: use Model
-rw-r--r-- | classes/Discount.php | 212 | ||||
-rw-r--r-- | classes/Offer.php | 4 | ||||
-rw-r--r-- | include/discounts-edit.php | 9 | ||||
-rw-r--r-- | include/discounts-new.php | 2 | ||||
-rw-r--r-- | include/discounts-overview.php | 18 | ||||
-rw-r--r-- | include/discounts.php | 6 | ||||
-rw-r--r-- | include/offers-overview.php | 2 | ||||
-rw-r--r-- | include/offers-view.php | 14 |
8 files changed, 38 insertions, 229 deletions
diff --git a/classes/Discount.php b/classes/Discount.php index 91dd53b..3f12348 100644 --- a/classes/Discount.php +++ b/classes/Discount.php @@ -24,74 +24,18 @@ /** * An interface to the discount table in the database */ -class Discount { +class Discount extends Model { use Calculatable; - /** - * @var pdo $pdo The PDO class for database communication - * @var int $id The id of the discount - * @var int $offerId The id of the offer this discount is linked to - * @var string $title The title of the discount - * @var string $description The description of the discount - * @var float $value The actual discount - * @var float $vat The percentage of VAT to calculate on this discount - */ - protected $pdo, $offerId, $id, $title, $description, $value, $vat; + public + $table = 'discount', + $fillable_columns = ['offerId', 'title', 'description', 'value', 'VAT_percentage']; const SUBTOTAL = 1; const VAT = 2; const TOTAL = 3; /** - * Create a new instance - * - * @param PDO $pdo The PDO class, to access the database - * @param int $id The id of the discount to fetch - * - * @throws PDOException If something went wrong with the database - * @throws Exception If the discount could not be found - */ - public function __construct($pdo, $id) { - $this->pdo = $pdo; - - $stmt = $this->pdo->prepare("SELECT * FROM `".Constants::db_prefix."discount` WHERE `id`=?"); - $stmt->execute(array($id)); - if ($stmt->rowCount() == 0) { - throw new Exception("The discount with id '$id' could not be found."); - } - $discount = $stmt->fetch(PDO::FETCH_ASSOC); - - $this->id = $discount['id']; - $this->offerId = $discount['offerId']; - $this->title = $discount['title']; - $this->description = $discount['description']; - $this->value = $discount['value']; - $this->vat = $discount['VAT_percentage']; - } - - //------------------------------------------------------------------------------ - // Getters and setters - //------------------------------------------------------------------------------ - - /** - * Get the ID of the discount - * - * @return int The ID - */ - public function getId() { - return $this->id; - } - - /** - * Get the ID of the offer that this discount is linked to - * - * @return int The ID - */ - public function getOfferId() { - return $this->offerId; - } - - /** * Get the offer that this discount is linked to * * @return offer The offer @@ -101,156 +45,20 @@ class Discount { } /** - * Get the title of the discount - * - * @return string The title - */ - public function getTitle() { - return $this->title; - } - - /** - * Set the title of the discount - * - * @param string $title The new title for the discount - * - * @throws PDOException If something went wrong with the database - * - * @return bool True on succes, false on failure - */ - public function setTitle($title) { - $stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."discount` SET `title`=? WHERE `id`=?"); - $stmt->execute(array($title, $this->id)); - if ($stmt->rowCount() == 1) { - $this->title = $title; - return true; - } else { - return false; - } - } - - /** - * Get the description of the discount + * The description after having parsed markdown * - * @param bool $parseMarkdown Whether or not to parse markdown - * - * @return string The description + * @return string The description in HTML format */ - public function getDescription($parseMarkdown = true) { - if ($parseMarkdown) { - $pd = new Parsedown; - return $pd->text($this->description); - } else { - return $this->description; - } + public function getHTMLDescription() { + $pd = new Parsedown; + return $pd->text($this->description); } - /** - * Set the description of the discount - * - * @param string $description The new description for the discount - * - * @throws PDOException If something went wrong with the database - * - * @return bool True on succes, false on failure - */ - public function setDescription($description) { - $stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."discount` SET `description`=? WHERE `id`=?"); - $stmt->execute(array($description, $this->id)); - if ($stmt->rowCount() == 1) { - $this->description = $description; - return true; - } else { - return false; - } - } - - /** - * Get the value of the discount - * - * @return float The value - */ - public function getValue() { - return $this->value; - } - - /** - * Set the value of the discount - * - * @param float $value The new value for the discount - * - * @throws PDOException If something went wrong with the database - * - * @return bool True on succes, false on failure - */ - public function setValue($value) { - $stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."discount` SET `value`=? WHERE `id`=?"); - $stmt->execute(array($value, $this->id)); - if ($stmt->rowCount() == 1) { - $this->value = $value; - return true; - } else { - return false; - } - } - - /** - * Get the VAT percentage of the discount - * - * @return float The VAT percentage - */ - public function getVAT() { - return $this->vat; - } - - /** - * Set the VAT percentage of the discount - * - * @param float $vat The new VAT percentage for the discount - * - * @throws PDOException If something went wrong with the database - * - * @return bool True on succes, false on failure - */ - public function setVAT($vat) { - $stmt = $this->pdo->prepare("UPDATE `".Constants::db_prefix."discount` SET `VAT_percentage`=? WHERE `id`=?"); - $stmt->execute(array($vat, $this->id)); - if ($stmt->rowCount() == 1) { - $this->vat = $vat; - return true; - } else { - return false; - } - } - - //------------------------------------------------------------------------------ - // Other functions - //------------------------------------------------------------------------------ - protected function calculateSubtotal() { return - $this->value; } protected function calculateVAT() { - return $this->calculateSubtotal() * $this->getVAT() / 100; - } - - /** - * Remove this discount from the database - * - * If this doesn't succeed (i.e. false is returned), that means the discount was removed manually or by another instance of this class - * - * @throws PDOException If something went wrong with the database - * - * @return bool True on success, false on failure - */ - public function delete() { - $stmt = $this->pdo->prepare("DELETE FROM `".Constants::db_prefix."discount` WHERE `id`=?"); - $stmt->execute(array($this->id)); - if ($stmt->rowCount() != 1) { - return false; - } else { - return true; - } + return $this->calculateSubtotal() * $this->VAT_percentage / 100; } } diff --git a/classes/Offer.php b/classes/Offer.php index 1a11633..84a7da4 100644 --- a/classes/Offer.php +++ b/classes/Offer.php @@ -581,9 +581,9 @@ class Offer { ); foreach ($this->getDiscounts() as $discount) $list[] = array( - $discount->getTitle(), + $discount->title, $discount->calculate(discount::SUBTOTAL), - $discount->getVAT() . "%", + $discount->VAT_percentage . "%", $discount->calculate(discount::TOTAL) ); diff --git a/include/discounts-edit.php b/include/discounts-edit.php index 797a95b..94f4c29 100644 --- a/include/discounts-edit.php +++ b/include/discounts-edit.php @@ -21,6 +21,7 @@ require_once('./conf.php'); require_once('./login-ajax.php'); $response = new Response(); +$response->success = true; try { $discount = new Discount($_pdo, $_REQUEST['pk']); @@ -29,16 +30,16 @@ try { $what_to_edit = $name[count($name) - 1]; switch ($what_to_edit) { case 'title': - $response->success = $discount->setTitle($_REQUEST['value']); + $discount->title = $_REQUEST['value']; break; case 'value': - $response->success = $discount->setValue($_REQUEST['value']); + $discount->value = $_REQUEST['value']; break; case 'vat': - $response->success = $discount->setVAT($_REQUEST['value']); + $discount->VAT_percentage = $_REQUEST['value']; break; case 'description': - $response->success = $discount->setDescription($_REQUEST['value']); + $discount->description = $_REQUEST['value']; break; default: $response->http_response_code(404); diff --git a/include/discounts-new.php b/include/discounts-new.php index 26452aa..2d7fca5 100644 --- a/include/discounts-new.php +++ b/include/discounts-new.php @@ -32,7 +32,7 @@ try { $_REQUEST['vat'] ); $response->success = true; - $response->message = "Assignment {$discount->getTitle()} has been succesfully created. <a class='alert-link' href='javascript:location.reload(true);'>Refresh the page</a>."; + $response->message = "Assignment {$discount->title} has been succesfully created. <a class='alert-link' href='javascript:location.reload(true);'>Refresh the page</a>."; } catch (PDOException $e) { $response->http_response_code(500); $response->success = false; diff --git a/include/discounts-overview.php b/include/discounts-overview.php index 60ddf13..0b0534d 100644 --- a/include/discounts-overview.php +++ b/include/discounts-overview.php @@ -39,25 +39,25 @@ require_once('./login.php'); $discounts = BusinessAdmin::getDiscounts($_pdo); foreach ($discounts as $discount) { echo "<tr class='mix' - data-mixer-order-id='{$discount->getId()}' + data-mixer-order-id='{$discount->id}' data-mixer-order-offer='{$discount->getOffer()->getId()}' - data-mixer-order-value='{$discount->getValue()}'> - <td class='col-min-width'>{$discount->getId()}</td> + data-mixer-order-value='{$discount->value}'> + <td class='col-min-width'>{$discount->id}</td> <td class='col-min-width'> <a href='".Constants::url_internal."/offers?id={$discount->getOffer()->getId()}'>#{$discount->getOffer()->getId()}</a> to <a href='".Constants::url_internal."/contacts?id={$discount->getOffer()->getContact()->getId()}'>{$discount->getOffer()->getContact()->getName()}</a> (<a href='".Constants::url_internal."/clients?id={$discount->getOffer()->getContact()->getClient()->id}'>{$discount->getOffer()->getContact()->getClient()->name}</a>) <td class='col-max-width'> - <b><a href='#' class='editable' id='editable-discount-{$discount->getId()}-title' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getTitle()}</a></b><br/> - <p><a href='#' class='editable editable-noshow' id='editable-discount-{$discount->getId()}-description' data-type='textarea' data-mode='inline' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getDescription(false)}</a></p> + <b><a href='#' class='editable' id='editable-discount-{$discount->id}-title' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->title}</a></b><br/> + <p><a href='#' class='editable editable-noshow' id='editable-discount-{$discount->id}-description' data-type='textarea' data-mode='inline' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->description}</a></p> </td> <td class='col-min-width'> - ".Constants::invoice_valuta."<a href='#' class='editable' id='editable-discount-{$discount->getId()}-value' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getValue()}</a><br/> - <a href='#' class='editable' id='editable-discount-{$discount->getId()}-vat' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getVAT()}</a>% VAT + ".Constants::invoice_valuta."<a href='#' class='editable' id='editable-discount-{$discount->id}-value' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->value}</a><br/> + <a href='#' class='editable' id='editable-discount-{$discount->id}-vat' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->VAT_percentage}</a>% VAT </td> <td class='col-min-width'> - <a title='View' href='?id={$discount->getId()}' class='btn btn-primary btn-circle fa fa-arrow-right'></a> - <a title='Delete' href='?delete={$discount->getId()}' class='btn btn-danger btn-circle fa fa-times'></a> + <a title='View' href='?id={$discount->id}' class='btn btn-primary btn-circle fa fa-arrow-right'></a> + <a title='Delete' href='?delete={$discount->id}' class='btn btn-danger btn-circle fa fa-times'></a> </td> </tr>"; } diff --git a/include/discounts.php b/include/discounts.php index a4d9df6..5da2dc4 100644 --- a/include/discounts.php +++ b/include/discounts.php @@ -46,7 +46,7 @@ require('./header.php'); $id = (int) $_GET['id']; try { $discount = new Discount($_pdo, $id); - $header = "<a href='".Constants::url_external."discounts'>Discounts</a> / {$discount->getTitle()}"; + $header = "<a href='".Constants::url_external."discounts'>Discounts</a> / {$discount->title}"; $show_individual = $id; } catch (PDOException $e) { $alert = "<div class='alert alert-danger alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount with id $id</i> could not be found.</div>"; @@ -66,9 +66,9 @@ require('./header.php'); try { $discount = new Discount($_pdo, $id); if ($discount->delete()) { - echo "<div class='alert alert-success alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount with title <i>{$discount->getTitle()}</i> has been removed.</div>"; + echo "<div class='alert alert-success alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount with title <i>{$discount->title}</i> has been removed.</div>"; } else { - echo "<div class='alert alert-warning alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount with title <i>{$discount->getTitle()}</i> could not be removed. Perhaps it's already removed?</div>"; + echo "<div class='alert alert-warning alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount with title <i>{$discount->title}</i> could not be removed. Perhaps it's already removed?</div>"; } } catch (PDOException $e) { echo "<div class='alert alert-danger alert-dismissable'><button type='button' class='close fa fa-times' data-dismiss='alert' aria-hidden='true'></button>The discount could not be removed due to a PDO error.</div>"; diff --git a/include/offers-overview.php b/include/offers-overview.php index 09c6e12..2c5b483 100644 --- a/include/offers-overview.php +++ b/include/offers-overview.php @@ -49,7 +49,7 @@ require_once('./login.php'); echo "<b>{$assignment->title}</b><br/><span class='smaller'>(".Constants::invoice_valuta."{$assignment->calculate(assignment::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$assignment->calculate(assignment::TOTAL)} incl. VAT)</span><br/><p>{$assignment->getHTMLDescription()}</p>"; } foreach ($offer->getDiscounts() as $discount) { - echo "<b>{$discount->getTitle()}</b><br/><span class='smaller'>(".Constants::invoice_valuta."{$discount->calculate(discount::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$discount->calculate(discount::TOTAL)} incl. VAT)</span><br/><p>{$discount->getDescription()}</p>"; + echo "<b>{$discount->title}</b><br/><span class='smaller'>(".Constants::invoice_valuta."{$discount->calculate(discount::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$discount->calculate(discount::TOTAL)} incl. VAT)</span><br/><p>{$discount->description}</p>"; } echo "</td> <td class='col-min-width'> diff --git a/include/offers-view.php b/include/offers-view.php index 6b84e5c..9a2978f 100644 --- a/include/offers-view.php +++ b/include/offers-view.php @@ -147,18 +147,18 @@ $_offer = new Offer($_pdo, $_id); $discounts = BusinessAdmin::getDiscounts($_pdo, array("offerId = {$_offer->getId()}")); foreach ($discounts as $discount) { echo "<tr> - <td class='col-min-width'>{$discount->getId()}</td> + <td class='col-min-width'>{$discount->id}</td> <td class='col-max-width'> - <b><a href='#' class='editable' id='editable-discount-{$discount->getId()}-title' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getTitle()}</a></b><br/> - <p>{$discount->getDescription()}</p> + <b><a href='#' class='editable' id='editable-discount-{$discount->id}-title' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->title}</a></b><br/> + <p>{$discount->description}</p> </td> <td class='col-min-width'> - ".Constants::invoice_valuta."<a href='#' class='editable' id='editable-discount-{$discount->getId()}-value' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getValue()}</a> / hr<br/> - <a href='#' class='editable' id='editable-discount-{$discount->getId()}-vat' data-type='text' data-pk='{$discount->getId()}' data-url='".Constants::url_external."discounts/edit'>{$discount->getVAT()}</a>% VAT + ".Constants::invoice_valuta."<a href='#' class='editable' id='editable-discount-{$discount->id}-value' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->value}</a> / hr<br/> + <a href='#' class='editable' id='editable-discount-{$discount->id}-vat' data-type='text' data-pk='{$discount->id}' data-url='".Constants::url_external."discounts/edit'>{$discount->VAT_percentage}</a>% VAT </td> <td class='col-min-width'> - <a title='View' href='".Constants::url_internal."/discounts?id={$discount->getId()}' class='btn btn-primary btn-circle fa fa-arrow-right'></a> - <a title='Delete' href='".Constants::url_internal."/discounts?delete={$discount->getId()}' class='btn btn-danger btn-circle fa fa-times'></a> + <a title='View' href='".Constants::url_internal."/discounts?id={$discount->id}' class='btn btn-primary btn-circle fa fa-arrow-right'></a> + <a title='Delete' href='".Constants::url_internal."/discounts?delete={$discount->id}' class='btn btn-danger btn-circle fa fa-times'></a> </td> </tr>"; } |