From ee7b6b8cc0cb8619c298f533a2ac791d7aa3b57c Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 27 Jul 2016 20:54:34 +0200 Subject: Discount: use Model --- classes/Discount.php | 212 ++--------------------------------------- classes/Offer.php | 4 +- include/discounts-edit.php | 9 +- include/discounts-new.php | 2 +- include/discounts-overview.php | 18 ++-- include/discounts.php | 6 +- include/offers-overview.php | 2 +- 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,73 +24,17 @@ /** * 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 * @@ -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. Refresh the page."; + $response->message = "Assignment {$discount->title} has been succesfully created. Refresh the page."; } 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 " - {$discount->getId()} + data-mixer-order-value='{$discount->value}'> + {$discount->id} #{$discount->getOffer()->getId()} to {$discount->getOffer()->getContact()->getName()} ({$discount->getOffer()->getContact()->getClient()->name}) - {$discount->getTitle()}
-

{$discount->getDescription(false)}

+ {$discount->title}
+

{$discount->description}

- ".Constants::invoice_valuta."{$discount->getValue()}
- {$discount->getVAT()}% VAT + ".Constants::invoice_valuta."{$discount->value}
+ {$discount->VAT_percentage}% VAT - - + + "; } 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 = "Discounts / {$discount->getTitle()}"; + $header = "Discounts / {$discount->title}"; $show_individual = $id; } catch (PDOException $e) { $alert = "
The discount with id $id could not be found.
"; @@ -66,9 +66,9 @@ require('./header.php'); try { $discount = new Discount($_pdo, $id); if ($discount->delete()) { - echo "
The discount with title {$discount->getTitle()} has been removed.
"; + echo "
The discount with title {$discount->title} has been removed.
"; } else { - echo "
The discount with title {$discount->getTitle()} could not be removed. Perhaps it's already removed?
"; + echo "
The discount with title {$discount->title} could not be removed. Perhaps it's already removed?
"; } } catch (PDOException $e) { echo "
The discount could not be removed due to a PDO error.
"; 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 "{$assignment->title}
(".Constants::invoice_valuta."{$assignment->calculate(assignment::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$assignment->calculate(assignment::TOTAL)} incl. VAT)

{$assignment->getHTMLDescription()}

"; } foreach ($offer->getDiscounts() as $discount) { - echo "{$discount->getTitle()}
(".Constants::invoice_valuta."{$discount->calculate(discount::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$discount->calculate(discount::TOTAL)} incl. VAT)

{$discount->getDescription()}

"; + echo "{$discount->title}
(".Constants::invoice_valuta."{$discount->calculate(discount::SUBTOTAL)} excl. VAT, ".Constants::invoice_valuta."{$discount->calculate(discount::TOTAL)} incl. VAT)

{$discount->description}

"; } echo " 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 " - {$discount->getId()} + {$discount->id} - {$discount->getTitle()}
-

{$discount->getDescription()}

+ {$discount->title}
+

{$discount->description}

- ".Constants::invoice_valuta."{$discount->getValue()} / hr
- {$discount->getVAT()}% VAT + ".Constants::invoice_valuta."{$discount->value} / hr
+ {$discount->VAT_percentage}% VAT - - + + "; } -- cgit v1.2.3