Add getQuantityUnits and set/getUserFieldsForObject

This commit is contained in:
Tim
2021-10-04 02:40:45 +02:00
parent 22c4101729
commit 5a65036620
5 changed files with 176 additions and 52 deletions

View File

@ -7,6 +7,7 @@ namespace Ardent\GrocyApi;
use Ardent\GrocyApi\Objects\AbstractApiObject;
use Ardent\GrocyApi\Objects\ObjectTransformer;
use Ardent\GrocyApi\Objects\ProductsObject;
use Ardent\GrocyApi\Objects\QuantityUnitsObject;
class GrocyClient
{
@ -17,6 +18,66 @@ class GrocyClient
$this->client = new Client($host, $apikey);
}
/**
* @return int the id of the created object
*/
private function addObject(string $entity, AbstractApiObject $object): int
{
$data = $this->client->post(
sprintf('objects/%s', $entity),
ObjectTransformer::normalize($object)
);
return $data['created_object_id'];
}
/**
* @return ProductsObject[]
*/
public function getProducts(): array
{
return $this->getObjects('products');
}
/**
* @return QuantityUnitsObject[]
*/
public function getQuantityUnits(): array
{
return $this->getObjects('quantity_units');
}
public function getProduct(int $id): ProductsObject
{
return $this->getObject('products', $id);
}
public function setProduct(ProductsObject $product, int $id): void
{
$this->setObject('products', $product, $id);
}
public function addProduct(ProductsObject $product): int
{
return $this->addObject('products', $product);
}
public function getUserFieldsForObject(AbstractApiObject $object): array
{
return $this->client->get(sprintf('userfields/%s/%s', $object::getEntity(), $object->getId()));
}
public function setUserFieldsForObject(AbstractApiObject $object, array $userfields)
{
$this->client->put(sprintf('userfields/%s/%s', $object::getEntity(), $object->getId()), $userfields);
}
public function setProductPicnicId(int $productId, int $picnicId)
{
$this->setUserFieldsForObject((new ProductsObject())->setId($productId), [
'picnic' => $picnicId,
]);
}
/**
* @return AbstractApiObject[]
*/
@ -44,40 +105,4 @@ class GrocyClient
ObjectTransformer::normalize($object)
);
}
/**
* @return int the id of the created object
*/
private function addObject(string $entity, AbstractApiObject $object): int
{
$data = $this->client->post(
sprintf('objects/%s', $entity),
ObjectTransformer::normalize($object)
);
return $data['created_object_id'];
dd($data);
}
/**
* @return ProductsObject[]
*/
public function getProducts(): array
{
return $this->getObjects('products');
}
public function getProduct(int $id): ProductsObject
{
return $this->getObject('products', $id);
}
public function setProduct(ProductsObject $product, int $id): void
{
$this->setObject('products', $product, $id);
}
public function addProduct(ProductsObject $product): int
{
return $this->addObject('products', $product);
}
}