mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +02:00
Use Assert lib for value checking in setters
This commit is contained in:
parent
6276d93389
commit
8c8bbbbd86
4 changed files with 130 additions and 109 deletions
|
@ -150,6 +150,8 @@ abstract class Company extends StructuralDBElement
|
|||
/**
|
||||
* Set the addres
|
||||
* @param string $new_address the new address (with "\n" as line break)
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setAddress(string $new_address) : self
|
||||
{
|
||||
|
@ -161,6 +163,8 @@ abstract class Company extends StructuralDBElement
|
|||
* Set the phone number
|
||||
*
|
||||
* @param string $new_phone_number the new phone number
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setPhoneNumber(string $new_phone_number) : self
|
||||
{
|
||||
|
@ -172,6 +176,8 @@ abstract class Company extends StructuralDBElement
|
|||
* Set the fax number
|
||||
*
|
||||
* @param string $new_fax_number the new fax number
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setFaxNumber(string $new_fax_number) : self
|
||||
{
|
||||
|
@ -183,6 +189,8 @@ abstract class Company extends StructuralDBElement
|
|||
* Set the e-mail address
|
||||
*
|
||||
* @param string $new_email_address the new e-mail address
|
||||
*
|
||||
* @return self
|
||||
|
||||
*/
|
||||
public function setEmailAddress(string $new_email_address) : self
|
||||
|
@ -195,6 +203,8 @@ abstract class Company extends StructuralDBElement
|
|||
* Set the website
|
||||
*
|
||||
* @param string $new_website the new website
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setWebsite(string $new_website) : self
|
||||
{
|
||||
|
@ -207,6 +217,7 @@ abstract class Company extends StructuralDBElement
|
|||
*
|
||||
* @param string $new_url the new URL with the placeholder %PARTNUMBER% for the part number
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setAutoProductUrl(string $new_url) : self
|
||||
{
|
||||
|
|
|
@ -108,6 +108,7 @@ class Device extends PartsContainingDBElement
|
|||
* Set the order quantity
|
||||
*
|
||||
* @param integer $new_order_quantity the new order quantity
|
||||
* @return self
|
||||
*/
|
||||
public function setOrderQuantity(int $new_order_quantity) : self
|
||||
{
|
||||
|
@ -121,9 +122,8 @@ class Device extends PartsContainingDBElement
|
|||
|
||||
/**
|
||||
* Set the "order_only_missing_parts" attribute
|
||||
*
|
||||
* @param boolean $new_order_only_missing_parts the new "order_only_missing_parts" attribute
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setOrderOnlyMissingParts(bool $new_order_only_missing_parts) : self
|
||||
{
|
||||
|
|
|
@ -35,6 +35,7 @@ namespace App\Entity;
|
|||
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
/**
|
||||
* Class Part
|
||||
|
@ -174,48 +175,24 @@ class Part extends AttachmentContainingDBElement
|
|||
********************************************************************************/
|
||||
|
||||
/**
|
||||
* Get the description
|
||||
* Get the description string like it is saved in the database.
|
||||
* This can contain BBCode, it is not parsed yet.
|
||||
*
|
||||
* @param boolean|int $bbcode_parse_level Should BBCode converted to HTML, before returning
|
||||
* @param int $short_output If this is bigger than 0, than the description will be shortened to this length.
|
||||
* @return string the description
|
||||
*/
|
||||
public function getDescription($bbcode_parse_level = 0/*BBCodeParsingLevel::PARSE*/, int $short_output = 0) : string
|
||||
public function getDescription() : string
|
||||
{
|
||||
$val = htmlspecialchars($this->description);
|
||||
|
||||
if ($short_output > 0 && \strlen($val) > $short_output) {
|
||||
$val = substr($val, 0, $short_output);
|
||||
$val .= '...';
|
||||
$val = '<span class="text-muted">' . $val . '</span class="text-muted">';
|
||||
}
|
||||
|
||||
//TODO
|
||||
/**
|
||||
if ($bbcode_parse_level === BBCodeParsingLevel::PARSE) {
|
||||
$bbcode = new BBCodeParser();
|
||||
$val = $bbcode->only('bold', 'italic', 'underline', 'linethrough')->parse($val);
|
||||
} elseif ($bbcode_parse_level === BBCodeParsingLevel::STRIP) {
|
||||
$bbcode = new BBCodeParser();
|
||||
$val = $bbcode->stripBBCodeTags($val);
|
||||
}*/
|
||||
|
||||
return $val;
|
||||
return htmlspecialchars($this->description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the count of parts which are in stock
|
||||
* @param $with_unknown bool Set this, to true, if the unknown state should be returned as string. Otherwise -2 is returned.
|
||||
* Get the count of parts which are in stock.
|
||||
* When the instock is unkown, then Part::INSTOCK_UNKNOWN is returned.
|
||||
*
|
||||
* @return integer|string count of parts which are in stock, "Unknown" if $with_unknown is set and instock is unknown.
|
||||
* @return int count of parts which are in stock
|
||||
*/
|
||||
public function getInstock(bool $with_unknown = false) : int
|
||||
public function getInstock() : int
|
||||
{
|
||||
|
||||
if ($with_unknown && $this->isInstockUnknown()) {
|
||||
return _('[Unbekannt]');
|
||||
}
|
||||
|
||||
return $this->instock;
|
||||
}
|
||||
|
||||
|
@ -239,30 +216,14 @@ class Part extends AttachmentContainingDBElement
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the comment
|
||||
* Get the comment associated with this part.
|
||||
*
|
||||
* @param boolean|int $bbcode_parsing_level Should BBCode converted to HTML, before returning
|
||||
* @return string the comment
|
||||
* @return string The raw/unparsed comment
|
||||
*/
|
||||
public function getComment($bbcode_parsing_level = true /*= BBCodeParsingLevel::PARSE*/) : string
|
||||
public function getComment() : string
|
||||
{
|
||||
|
||||
$val = htmlspecialchars($this->comment);
|
||||
|
||||
//TODO
|
||||
/*if ($bbcode_parsing_level === BBCodeParsingLevel::PARSE) {
|
||||
$bbcode = new BBCodeParser();
|
||||
$bbcode->setParser('brLinebreak', "/\[br\]/s", '<br/>', '');
|
||||
$bbcode->setParser('namedlink', '/\[url\=(.*?)\](.*?)\[\/url\]/s', '<a href="$1" class="link-external" target="_blank">$2</a>', '$2');
|
||||
$bbcode->setParser('link', '/\[url\](.*?)\[\/url\]/s', '<a href="$1" class="link-external" target="_blank">$1</a>', '$1');
|
||||
$val = $bbcode->parse($val);
|
||||
} elseif ($bbcode_parsing_level === BBCodeParsingLevel::STRIP) {
|
||||
$bbcode = new BBCodeParser();
|
||||
$val = str_replace("\n", ' ', $val);
|
||||
$val = $bbcode->stripBBCodeTags($val);
|
||||
}*/
|
||||
|
||||
return $val;
|
||||
return htmlspecialchars($this->comment);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -271,11 +232,9 @@ class Part extends AttachmentContainingDBElement
|
|||
* A Part is marked as "obsolete" if all their orderdetails are marked as "obsolete".
|
||||
* If a part has no orderdetails, the part isn't marked as obsolete.
|
||||
*
|
||||
* @return boolean @li true if this part is obsolete
|
||||
* @li false if this part isn't obsolete
|
||||
* @throws Exception
|
||||
* @return boolean true, if this part is obsolete. false, if this part isn't obsolete
|
||||
*/
|
||||
public function getObsolete() : bool
|
||||
public function isObsolete() : bool
|
||||
{
|
||||
$all_orderdetails = $this->getOrderdetails();
|
||||
|
||||
|
@ -295,12 +254,12 @@ class Part extends AttachmentContainingDBElement
|
|||
/**
|
||||
* Get if this part is visible
|
||||
*
|
||||
* @return boolean @li true if this part is visible
|
||||
* @li false if this part isn't visible
|
||||
* @return boolean true if this part is visible
|
||||
* false if this part isn't visible
|
||||
*/
|
||||
public function getVisible() : bool
|
||||
public function isVisible() : bool
|
||||
{
|
||||
return (bool) $this->visible;
|
||||
return $this->visible;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -309,9 +268,9 @@ class Part extends AttachmentContainingDBElement
|
|||
* @return bool * true if this part is a favorite
|
||||
* * false if this part is not a favorite.
|
||||
*/
|
||||
public function getFavorite() : bool
|
||||
public function isFavorite() : bool
|
||||
{
|
||||
return (bool) $this->favorite;
|
||||
return $this->favorite;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -340,7 +299,7 @@ class Part extends AttachmentContainingDBElement
|
|||
*/
|
||||
public function getOrderQuantity() : int
|
||||
{
|
||||
return (int) $this->order_quantity;
|
||||
return $this->order_quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -380,20 +339,21 @@ class Part extends AttachmentContainingDBElement
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the "manual_order" attribute
|
||||
* Check if this part is marked for manual ordering
|
||||
*
|
||||
* @return boolean the "manual_order" attribute
|
||||
*/
|
||||
public function getManualOrder() : bool
|
||||
public function isMarkedForManualOrder() : bool
|
||||
{
|
||||
return (bool) $this->manual_order;
|
||||
return $this->manual_order;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the part is automatically marked for Ordering, because the instock value is smaller than the min instock value.
|
||||
* This is called automatic ordering
|
||||
* @return bool True, if the part should be ordered.
|
||||
*/
|
||||
public function getAutoOrder() : bool
|
||||
public function isAutoOrdered() : bool
|
||||
{
|
||||
//Parts with negative instock never gets ordered.
|
||||
if ($this->getInstock() < 0) {
|
||||
|
@ -405,23 +365,35 @@ class Part extends AttachmentContainingDBElement
|
|||
|
||||
/**
|
||||
* Get the link to the website of the article on the manufacturers website
|
||||
* When no this part has no explicit url set, then it is tried to generate one from the Manufacturer of this part
|
||||
* automatically.
|
||||
*
|
||||
* @param
|
||||
*
|
||||
* @return string the link to the article
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getManufacturerProductUrl(bool $no_auto_url = false) : string
|
||||
public function getManufacturerProductUrl() : string
|
||||
{
|
||||
if ($no_auto_url || $this->manufacturer_product_url != '') {
|
||||
if ($this->manufacturer_product_url != '') {
|
||||
return $this->manufacturer_product_url;
|
||||
} elseif (\is_object($this->getManufacturer())) {
|
||||
}
|
||||
|
||||
if ($this->getManufacturer() !== null) {
|
||||
return $this->getManufacturer()->getAutoProductUrl($this->name);
|
||||
} else {
|
||||
return '';
|
||||
} // no url is available
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to getManufacturerProductUrl, but here only the database value is returned.
|
||||
* @return string The manufacturer url saved in DB for this part.
|
||||
*/
|
||||
public function getOwnProductURL() : string
|
||||
{
|
||||
return $this->manufacturer_product_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the category of this part
|
||||
*
|
||||
|
@ -805,6 +777,8 @@ class Part extends AttachmentContainingDBElement
|
|||
* Set the description
|
||||
*
|
||||
* @param string $new_description the new description
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setDescription(string $new_description) : self
|
||||
{
|
||||
|
@ -817,11 +791,12 @@ class Part extends AttachmentContainingDBElement
|
|||
*
|
||||
* @param integer $new_instock the new count of parts which are in stock
|
||||
*
|
||||
* @throws Exception if the new instock is not valid
|
||||
* @throws Exception if there was an error
|
||||
* @return self
|
||||
*/
|
||||
public function setInstock(int $new_instock, $comment = null) : self
|
||||
{
|
||||
Assert::natural($new_instock, 'New instock must be positive. Got: %s');
|
||||
|
||||
$old_instock = (int) $this->getInstock();
|
||||
$this->instock = $new_instock;
|
||||
//TODO
|
||||
|
@ -839,22 +814,40 @@ class Part extends AttachmentContainingDBElement
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the unknown status of this part.
|
||||
* When the instock is currently unknown and you pass false, then the instock is set to zero.
|
||||
* If the instock is not unknown and you pass false, nothing is changed.
|
||||
*
|
||||
* @param bool $new_unknown Set this to true if the instock should be marked as unknown.
|
||||
* @return Part
|
||||
*/
|
||||
public function setInstockUnknown(bool $new_unknown) : self
|
||||
{
|
||||
if($new_unknown == true) {
|
||||
$this->instock = self::INSTOCK_UNKNOWN;
|
||||
} else {
|
||||
//Change only if instock is currently unknown.
|
||||
if ($this->isInstockUnknown()) {
|
||||
$this->setInstock(0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Withdrawal the given number of parts.
|
||||
* @param $count int The number of parts which should be withdrawan.
|
||||
* @param $comment string A comment that should be associated with the withdrawal.
|
||||
* @throws Exception if there was an error
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function withdrawalParts(int $count, $comment = null) : self
|
||||
{
|
||||
if ($count <= 0) {
|
||||
throw new \Exception('Zahl der entnommenen Bauteile muss größer 0 sein!');
|
||||
}
|
||||
if ($count > $this->getInstock()) {
|
||||
throw new Exception('Es können nicht mehr Bauteile entnommen werden, als vorhanden sind!');
|
||||
}
|
||||
Assert::greaterThan($count,0, 'Count of withdrawn parts must be greater 0! Got %s!');
|
||||
Assert::greaterThan($count, $this->instock, 'You can not withdraw more parts, than there are existing!');
|
||||
|
||||
$old_instock = (int) $this->getInstock();
|
||||
$old_instock = $this->getInstock();
|
||||
$new_instock = $old_instock - $count;
|
||||
|
||||
//TODO
|
||||
|
@ -878,17 +871,16 @@ class Part extends AttachmentContainingDBElement
|
|||
* Add the given number of parts.
|
||||
* @param $count int The number of parts which should be withdrawan.
|
||||
* @param $comment string A comment that should be associated with the withdrawal.
|
||||
* @throws Exception if there was an error
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function addParts(int $count, string $comment = null) : self
|
||||
{
|
||||
Assert::greaterThan($count, 0, 'Count of added parts must be greater zero! Got %s.');
|
||||
|
||||
//TODO
|
||||
if ($count <= 0) {
|
||||
throw new Exception('Zahl der entnommenen Bauteile muss größer 0 sein!');
|
||||
}
|
||||
|
||||
$old_instock = (int) $this->getInstock();
|
||||
$old_instock = $this->getInstock();
|
||||
$new_instock = $old_instock + $count;
|
||||
|
||||
//TODO
|
||||
|
@ -912,17 +904,13 @@ class Part extends AttachmentContainingDBElement
|
|||
* Set the count of parts which should be in stock at least
|
||||
*
|
||||
* @param integer $new_mininstock the new count of parts which should be in stock at least
|
||||
*
|
||||
* @throws Exception if the new mininstock is not valid
|
||||
* @return self
|
||||
*/
|
||||
public function setMinInstock(int $new_mininstock) : self
|
||||
{
|
||||
if($new_mininstock < 0) {
|
||||
throw new \InvalidArgumentException('$new_mininstock must be positive!');
|
||||
}
|
||||
Assert::natural($new_mininstock, 'The new minimum instock value must be positive! Got %s.');
|
||||
|
||||
$this->mininstock = $new_mininstock;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
@ -931,7 +919,7 @@ class Part extends AttachmentContainingDBElement
|
|||
*
|
||||
* @param string $new_comment the new comment
|
||||
*
|
||||
* @throws Exception if there was an error
|
||||
* @return self
|
||||
*/
|
||||
public function setComment(string $new_comment) : self
|
||||
{
|
||||
|
@ -952,11 +940,15 @@ class Part extends AttachmentContainingDBElement
|
|||
* set this orderdetails as order orderdetails.
|
||||
* Otherwise, set "no order orderdetails")
|
||||
*
|
||||
* @throws Exception if there was an error
|
||||
* @return self
|
||||
*/
|
||||
public function setManualOrder(bool $new_manual_order, int $new_order_quantity = 1, $new_order_orderdetails_id = null) : self
|
||||
{
|
||||
Assert::greaterThan($new_order_quantity, 0, 'The new order quantity must be greater zero. Got %s!');
|
||||
|
||||
|
||||
$this->manual_order = $new_manual_order;
|
||||
|
||||
//TODO;
|
||||
/* $this->order_orderdetail = $new_order_orderdetails_id; */
|
||||
$this->order_quantity = $new_order_quantity;
|
||||
|
@ -969,6 +961,8 @@ class Part extends AttachmentContainingDBElement
|
|||
*
|
||||
* @param integer|NULL $new_order_orderdetails_id @li the new order orderdetails ID
|
||||
* @li Or, to remove the orderdetails, pass a NULL
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setOrderOrderdetailsID($new_order_orderdetails_id) : self
|
||||
{
|
||||
|
@ -982,9 +976,13 @@ class Part extends AttachmentContainingDBElement
|
|||
* Set the order quantity
|
||||
*
|
||||
* @param integer $new_order_quantity the new order quantity
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setOrderQuantity(int $new_order_quantity) : self
|
||||
{
|
||||
Assert::greaterThan($new_order_quantity,0, 'The new order quantity must be greater zero. Got %s!');
|
||||
|
||||
$this->order_quantity = $new_order_quantity;
|
||||
|
||||
return $this;
|
||||
|
@ -1000,6 +998,8 @@ class Part extends AttachmentContainingDBElement
|
|||
*
|
||||
* @throws Exception if the new category ID is not valid
|
||||
* @throws Exception if there was an error
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setCategoryID(int $new_category_id) : self
|
||||
{
|
||||
|
@ -1064,6 +1064,8 @@ class Part extends AttachmentContainingDBElement
|
|||
* Set the favorite status for this part.
|
||||
* @param $new_favorite_status bool The new favorite status, that should be applied on this part.
|
||||
* Set this to true, when the part should be a favorite.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setFavorite(bool $new_favorite_status) : self
|
||||
{
|
||||
|
@ -1075,7 +1077,7 @@ class Part extends AttachmentContainingDBElement
|
|||
/**
|
||||
* Sets the URL to the manufacturer site about this Part. Set to "" if this part should use the automatically URL based on its manufacturer.
|
||||
* @param string $new_url The new url
|
||||
* @throws Exception when an error happens.
|
||||
* @return self
|
||||
*/
|
||||
public function setManufacturerProductURL(string $new_url) : self
|
||||
{
|
||||
|
@ -1092,6 +1094,8 @@ class Part extends AttachmentContainingDBElement
|
|||
*
|
||||
* @throws Exception if the new ID is not valid
|
||||
* @throws Exception if there was an error
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setMasterPictureAttachementID($new_master_picture_attachement_id) : self
|
||||
{
|
||||
|
|
|
@ -35,6 +35,7 @@ namespace App\Entity;
|
|||
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
/**
|
||||
* Class Pricedetail
|
||||
|
@ -138,7 +139,7 @@ class Pricedetail extends DBElement
|
|||
*/
|
||||
public function getPriceRelatedQuantity() : int
|
||||
{
|
||||
return (int) $this->price_related_quantity;
|
||||
return $this->price_related_quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -153,7 +154,7 @@ class Pricedetail extends DBElement
|
|||
*/
|
||||
public function getMinDiscountQuantity() : int
|
||||
{
|
||||
return (int) $this->min_discount_quantity;
|
||||
return $this->min_discount_quantity;
|
||||
}
|
||||
|
||||
/********************************************************************************
|
||||
|
@ -170,13 +171,13 @@ class Pricedetail extends DBElement
|
|||
* @li This is the price for "price_related_quantity" parts!!
|
||||
* @li Example: if "price_related_quantity" is '10',
|
||||
* you have to set here the price for 10 parts!
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setPrice(float $new_price) : self
|
||||
{
|
||||
if($new_price < 0)
|
||||
{
|
||||
throw new \InvalidArgumentException('$new_price must be positive!');
|
||||
}
|
||||
Assert::natural($new_price, 'The new price must be positive! Got %s!');
|
||||
|
||||
$this->price = $new_price;
|
||||
|
||||
return $this;
|
||||
|
@ -192,12 +193,15 @@ class Pricedetail extends DBElement
|
|||
* quantity to 100. The single price (20$/100 = 0.2$) will be calculated automatically.
|
||||
*
|
||||
* @param integer $new_price_related_quantity the price related quantity
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setPriceRelatedQuantity(int $new_price_related_quantity) : self
|
||||
{
|
||||
if($new_price_related_quantity <= 0) {
|
||||
throw new \InvalidArgumentException('$new_price_related_quantity must be greater 0!');
|
||||
}
|
||||
|
||||
Assert::greaterThan($new_price_related_quantity, 0,
|
||||
'The new price related quantity must be greater zero! Got %s.');
|
||||
|
||||
$this->price_related_quantity = $new_price_related_quantity;
|
||||
|
||||
return $this;
|
||||
|
@ -219,12 +223,14 @@ class Pricedetail extends DBElement
|
|||
* So the orderdetails would have three Pricedetails for one supplier.)
|
||||
*
|
||||
* @param integer $new_min_discount_quantity the minimum discount quantity
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setMinDiscountQuantity(int $new_min_discount_quantity) : self
|
||||
{
|
||||
if($new_min_discount_quantity <= 0 ){
|
||||
throw new \InvalidArgumentException('$new_min_discount_quantity must be positive!');
|
||||
}
|
||||
Assert::greaterThan($new_min_discount_quantity, 0,
|
||||
'The new minimum discount quantity must be greater zero! Got %s.');
|
||||
|
||||
$this->min_discount_quantity = $new_min_discount_quantity;
|
||||
|
||||
return $this;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue