Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion api/config_sample.php
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@
$use_shipping_service_incoming_shipments = null;
$use_shipping_service_redirect = null;
$use_shipping_service_redirect_incoming_shipments = null;
$shipping_service_api_url = null;
$shipping_service_api_user = null;
$shipping_service_api_password = null;
$shipping_service_app_url = null;
Expand Down
48 changes: 38 additions & 10 deletions api/src/Page/Shipment.php
Original file line number Diff line number Diff line change
Expand Up @@ -1016,6 +1016,7 @@ function _transfer_dewar()
function _create_dewars_shipment_request(
array $dewars,
string $proposal,
int $session_number,
int $external_id,
int $shipping_id,
string $callback_url=""
Expand All @@ -1025,6 +1026,8 @@ function _create_dewars_shipment_request(
foreach (array_values($dewars) as $dew) {
$package = [
"external_id" => (int) $dew['DEWARID'],
"container_name" => $dew['NAME'],
"serial_number" => $dew['MANUFACTURERSERIALNUMBER'],
"shippable_item_type" => "CRYOGENIC_DRY_SHIPPER_CASE",
"line_items" => [
[
Expand Down Expand Up @@ -1063,6 +1066,7 @@ function _create_dewars_shipment_request(
$protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http';
$shipment_request_info = array(
"proposal" => $proposal,
"session_number" => $session_number,
"external_id" => $external_id,
"origin_url" => "{$protocol}://{$_SERVER['SERVER_NAME']}{$server_port}/shipments/sid/{$shipping_id}",
"packages" => $packages
Expand All @@ -1083,6 +1087,7 @@ function _dispatch_dewar_shipment_request($dewar)

$dewars = [$dewar];
$proposal = $dewar['PROPOSAL'];
$session_number = $dewar['VIS'];
$external_id = (int) $dewar['DEWARID'];
$shipping_id = (int) $dewar['SHIPPINGID'];
$token = Utils::generateRandomMd5();
Expand All @@ -1092,7 +1097,7 @@ function _dispatch_dewar_shipment_request($dewar)
);

$callback_url = "/api/shipment/dewars/confirmdispatch/did/{$external_id}/token/{$token}";
$external_shipping_id = $this->_create_dewars_shipment_request($dewars, $proposal, $external_id, $shipping_id, $callback_url);
$external_shipping_id = $this->_create_dewars_shipment_request($dewars, $proposal, $session_number, $external_id, $shipping_id, $callback_url);

$this->db->pq(
"UPDATE dewar SET externalShippingIdFromSynchrotron=:1 WHERE dewarid=:2",
Expand All @@ -1110,11 +1115,7 @@ function _dispatch_dewar_in_shipping_service($dispatch_info, $dewar)
global $facility_country;
global $facility_phone;
global $facility_contact;
global $shipping_service_api_url;
global $facility_email;
if (!isset($shipping_service_api_url)) {
throw new Exception("Could not send request to shipping service: shipping_service_api_url not set");
}

# Create shipment
$shipment_data = array(
Expand All @@ -1137,7 +1138,12 @@ function _dispatch_dewar_in_shipping_service($dispatch_info, $dewar)
"shipment_reference" => $dispatch_info['VISIT'],
"external_id" => (int) $dispatch_info['DEWARID'],
"journey_type" => ShippingService::JOURNEY_FROM_FACILITY,
"packages" => array(array("external_id" => (int) $dispatch_info['DEWARID']))
"packages" => array(
array(
"external_id" => (int) $dispatch_info['DEWARID'],
"container_name" => $dewar['NAME'],
)
)
);

# Split up address. Necessary as address is a single field in ispyb
Expand Down Expand Up @@ -1194,12 +1200,18 @@ function _dispatch_dewar()
}

$dew = $this->db->pq(
"SELECT d.dewarid, d.barcode, d.storagelocation, d.dewarstatus, d.externalShippingIdFromSynchrotron, s.shippingid, p.proposalcode, CONCAT(p.proposalcode, p.proposalnumber) as proposal, count(distinct c.containerId) as num_pucks, count(b.blsampleId) as num_samples
"SELECT d.dewarid, d.barcode, d.storagelocation, d.dewarstatus, d.externalShippingIdFromSynchrotron,
s.shippingid, p.proposalcode, CONCAT(p.proposalcode, p.proposalnumber) as proposal,
count(distinct c.containerId) as num_pucks, count(b.blsampleId) as num_samples,
ifnull(bls.visit_number, 0) as vis, IF(d.facilitycode, d.facilitycode, d.code) as name,
dr.manufacturerserialnumber
FROM dewar d
INNER JOIN shipping s ON s.shippingid = d.shippingid
INNER JOIN proposal p ON p.proposalid = s.proposalid
LEFT JOIN container c on c.dewarid = d.dewarid
LEFT JOIN BLSample b on b.containerId = c.containerId
LEFT JOIN blsession bls ON bls.sessionid = d.firstexperimentid
LEFT JOIN dewarregistry dr ON dr.dewarregistryid = d.dewarregistryid
WHERE d.dewarid=:1 and p.proposalid=:2",
array($this->arg('DEWARID'), $this->proposalid)
);
Expand Down Expand Up @@ -3299,10 +3311,15 @@ function _book_shipment_in_shipping_service($user, $shipment, $dewars, $journey_
"contact_email" => trim($user["email"])
);
$shipment_data = array(
"shipment_reference" => $shipment["PROP"],
"shipment_reference" => $shipment["PROP"] . '-' . ($shipment["session_number"] ?? 0),
"external_id" => $shipment['SHIPPINGID'],
"packages" => array_map(
function($dewar) {return array("external_id" => $dewar["DEWARID"]);},
function($dewar) {
return array(
"external_id" => $dewar["DEWARID"],
"container_name" => $dewar["NAME"],
);
},
$dewars
)
);
Expand Down Expand Up @@ -3356,6 +3373,7 @@ function _create_shipment_shipment_request($shipment, array $dewars): int
$external_shipping_id = $this->_create_dewars_shipment_request(
$dewars,
$shipment['PROP'],
isset($shipment['session_number']) ? $shipment['session_number'] : 0,
$shipping_id,
$shipping_id,
$callback_url
Expand Down Expand Up @@ -3400,15 +3418,25 @@ function _create_awb()
$args = array_merge(array($ship['SHIPPINGID']), $this->arg('DEWARS'));

$dewars = $this->db->pq(
"SELECT d.dewarid, d.weight, IF(d.facilitycode, d.facilitycode, d.code) as name, count(distinct c.containerId) as num_pucks, count(b.blsampleId) as num_samples
"SELECT d.dewarid, d.weight, IF(d.facilitycode, d.facilitycode, d.code) as name,
count(distinct c.containerId) as num_pucks, count(b.blsampleId) as num_samples,
bls.visit_number, dr.manufacturerserialnumber
FROM dewar d
LEFT JOIN container c on c.dewarid = d.dewarid
LEFT JOIN BLSample b on b.containerId = c.containerId
LEFT JOIN blsession bls on bls.sessionid = d.firstexperimentid
LEFT JOIN dewarregistry dr on dr.dewarregistryid = d.dewarregistryid
WHERE d.shippingid=:1 AND d.dewarid IN (:" . implode(',:', $ids) . ")
GROUP BY d.dewarid",
$args
);

foreach ($dewars as $d) {
if ($d['VISIT_NUMBER']) {
$ship['session_number'] = $d['VISIT_NUMBER'];
}
}

if (
Utils::getValueOrDefault($use_shipping_service_incoming_shipments)
&& in_array($this->arg('COUNTRY'), $facility_courier_countries)
Expand Down
3 changes: 1 addition & 2 deletions api/src/Shipment/ShippingService.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,9 @@ function _build_headers()

function __construct()
{
global $shipping_service_api_url;
global $shipping_service_app_url;
$this->shipping_api_url = $shipping_service_api_url;
$this->shipping_app_url = $shipping_service_app_url;
$this->shipping_api_url = $shipping_service_app_url . "/api";
}


Expand Down
Loading