/**
  * Receive Items
  */
 public function receive_items_post()
 {
     $delivery_data = $this->input->post('deliveryData');
     // should be a json object not a string
     if ($delivery_data['transaction'] == Transaction_Type::Deliver_Items) {
         $deliveries_repo = new Deliveries_Repository($this->base_model->get_db_instance());
         $delivery_id = $deliveries_repo->new_delivery($delivery_data);
         if ($delivery_id <= 0) {
             if ($delivery_id == -2) {
                 echo -2;
             } else {
                 if ($delivery_id == -1) {
                     echo -1;
                 } else {
                     if ($delivery_id == 0) {
                         echo 0;
                     }
                 }
             }
             // delivery exists
         } else {
             if ($delivery_id >= 1) {
                 $items_repo = new Items_Repository($this->base_model->get_db_instance());
                 $items = $delivery_data['items'];
                 foreach ($items as $item) {
                     if ($items_repo->item_exists($item['item_id'])) {
                         $item_info = $items_repo->get_item($item['item_id']);
                         $items_repo->update_item(new Item($item_info->id, $item['description'], $item_info->quantity + $item['quantity'], $item['price'], null, null));
                     } else {
                         $items_repo->new_item(new Item($item['item_id'], $item['description'], $item['quantity'], $item['price'], null, null));
                     }
                     $deliveries_repo->new_item(new Delivered_Item(null, $delivery_id, $item['item_id'], $item['quantity']));
                 }
                 echo 2;
                 // valid delivery
             }
         }
     } else {
         echo 1;
         // invalid transaction
     }
 }