1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
<?php
/* --------------------------------------------------------------
OrderStatusHistoryStorage.inc.php 2016-07-11
Gambio GmbH
http://www.gambio.de
Copyright (c) 2016 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
/**
* Class OrderStatusHistoryStorage
*
* @category System
* @package Order
* @subpackage Storages
*/
class OrderStatusHistoryStorage implements OrderStatusHistoryReaderInterface, OrderStatusHistoryWriterInterface
{
/**
* @var CI_DB_query_builder
*/
protected $db;
/**
* OrderStatusHistoryStorage constructor.
*
* @param CI_DB_query_builder $db
*/
public function __construct(CI_DB_query_builder $db)
{
$this->db = $db;
}
/**
* Returns a collection of order status history items by the given order item id.
*
* @param IdType $orderId Id of order item.
*
* @return OrderStatusHistoryListItemCollection
*/
public function getStatusHistory(IdType $orderId)
{
$orderStatusHistoryListItems = array();
$result = $this->db->from('orders_status_history')
->where('orders_id', $orderId->asInt())
->order_by('date_added', 'ASC')
->get();
if($result->num_rows())
{
foreach($result->result_array() as $row)
{
$orderStatusHistoryListItems[] = MainFactory::create('OrderStatusHistoryListItem',
new IdType($row['orders_status_history_id']),
new IdType($row['orders_status_id']),
new EmptyDateTime($row['date_added']),
new StringType((string)$row['comments']),
new BoolType($row['customer_notified']));
}
}
$orderStatusHistoryListItemCollection = MainFactory::create('OrderStatusHistoryListItemCollection',
$orderStatusHistoryListItems);
return $orderStatusHistoryListItemCollection;
}
/**
* Adds an order status history item.
*
* @param IdType $orderId
* @param IntType $newOrderStatusId
* @param StringType $comment
* @param BoolType $customerNotified
*/
public function addStatusUpdate(IdType $orderId,
IntType $newOrderStatusId,
StringType $comment,
BoolType $customerNotified)
{
$dateAdded = new DateTime();
$dateAdded = $dateAdded->format('Y-m-d H:i:s');
$this->db->insert('orders_status_history', array(
'orders_id' => $orderId->asInt(),
'orders_status_id' => $newOrderStatusId->asInt(),
'date_added' => $dateAdded,
'customer_notified' => (int)$customerNotified->asBool(),
'comments' => $comment->asString()
));
}
/**
* Deletes all order status history items which are associated with the given order item id.
*
* @param IdType $orderId
*/
public function deleteHistory(IdType $orderId)
{
$this->db->delete('orders_status_history', array('orders_id' => $orderId->asInt()));
}
}