Încerc să creez un simplu hook_cron pentru a se conecta la un API extern, a returna unele date și a actualiza unele câmpuri în unele entități. Creez astfel pentru a înțelege mai bine cum funcționează cron, așa că îl voi actualiza mai târziu la o coadă.
Problema este că cronul rulează, dar chiar și fără erori entitatea nu salvează sau actualizează. Dacă copiez codul și încerc să-l execut cu o rută (nu folosesc cron), funcționează conform intenției. Chiar nu stiu care este problema cu el.
Vă mulțumesc pentru ajutor.
Codul de mai jos:
funcția correios_web_service_cron()
{
$trackingService = \Drupal::service('correios_web_service.tracking');
$eventService = \Drupal::service('correios_web_service.event');
$eroare = null;
încerca {
$order_ids = \Drupal::entityQuery('commerce_order')
->condition('tip', 'campanie') //! Ver se terá que mudar o tipo
->condition('state', $eventService->getStatusByAlias('entregue')['description'], '<>')
->condition('state', $eventService->getStatusByAlias('avaliado')['description'], '<>')
->condition('state', $eventService->getStatusByAlias('cancelado')['description'], '<>')
->condition('field_tracking_code', NULL, '<>')
->execute();
$Comenzi = \Drupal::entityTypeManager()->getStorage('commerce_order')->loadMultiple($order_ids);
}
prinde (\Throwable $e) {
$eroare = $e->getMessage();
}
if (gol ($eroare) && !gol ($Comenzi)) {
foreach ($Comenzi ca $Order) {
$tracking_code = $Comandă->get('field_tracking_code')->valoare;
încerca {
$response = $trackingService->trackObjectFormatted($tracking_code);
$Order->set('state', $response['description']);
$Order->set('field_tracking_event_code', $response['event_code']);
$Order->set('field_tracking_event_message', $response['event_message']);
$Order->set('field_tracking_delivery_date', $response['delivery_date']);
$Comanda->salvare();
}
prinde (\Throwable $e) {
\Drupal::logger('correios_web_service_cron')->error($e->getMessage());
}
}
}
dacă (!gol ($eroare)) {
\Drupal::logger('correios_web_service_cron')->error($error);
}
}