private static final function sendItem(CommunicationItem $item) { if ($item->Sent) { Log::warning("Attempt blocked to send already sent email", "COMMS", ["CommunicationItemID" => $item->CommunicationItemID, "EmailProvider" => self::$emailProviderClassName]); return true; } $sendable = $item->getSendable(); $providerClass = $sendable->getProviderClassName(); $provider = self::getContainer()->getInstance($providerClass); if ($provider instanceof CaptureToCommunicationsProcessorInterface) { throw new InvalidProviderException(); } try { $provider->send($sendable); $item->markSent(); } catch (\Exception $exception) { $item->Status = CommunicationItem::STATUS_FAILED; } $item->markSent(); $item->save(); Log::debug("Sending communication by Email", "COMMS", ["CommunicationID" => $item->CommunicationID, "EmailProvider" => self::$emailProviderClassName]); return $item->Status == CommunicationItem::STATUS_SENT; }