Skip to content
Snippets Groups Projects
MessageExchangeReviewController.php 5.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • Florian Azizian's avatar
    Florian Azizian committed
    <?php
    
    /**
    * Copyright Maarch since 2008 under licence GPLv3.
    * See LICENCE.txt file at the root folder for more details.
    * This file is part of Maarch software.
    *
    */
    
    /**
    * @brief Message Exchange Review Controller
    * @author dev@maarch.org
    */
    
    namespace MessageExchange\controllers;
    
    
    Florian Azizian's avatar
    Florian Azizian committed
    use DateTime;
    use User\models\UserModel;
    
    Florian Azizian's avatar
    Florian Azizian committed
    use Resource\models\ResModel;
    use Action\models\ActionModel;
    
    Florian Azizian's avatar
    Florian Azizian committed
    use MessageExchange\models\MessageExchangeModel;
    use ExportSeda\controllers\SendMessageController;
    
    Florian Azizian's avatar
    Florian Azizian committed
    
    class MessageExchangeReviewController
    {
        protected static function canSendMessageExchangeReview($aArgs = [])
        {
            if (empty($aArgs['res_id']) || !is_numeric($aArgs['res_id'])) {
                return false;
            }
    
            $resLetterboxData = ResModel::getOnView([
    
                'select'  => ['entity_label', 'res_id', 'external_id'],
    
                'where'   => ['res_id = ?'],
                'data'    => [$aArgs['res_id']],
    
    Florian Azizian's avatar
    Florian Azizian committed
                'orderBy' => ['res_id'], ]);
    
    
            if (!empty($resLetterboxData[0]['external_id'])) {
                $resLetterboxData[0]['external_id'] = json_decode($resLetterboxData[0]['external_id'], true);
    
                if (!empty($resLetterboxData[0]['external_id']['m2m'])) {
                    return $resLetterboxData[0];
                } else {
                    return false;
                }
    
    Florian Azizian's avatar
    Florian Azizian committed
            } else {
                return false;
            }
        }
    
        public static function sendMessageExchangeReview($aArgs = [])
        {
            $messageExchangeData = self::canSendMessageExchangeReview(['res_id' => $aArgs['res_id']]);
            if ($messageExchangeData) {
                $actionInfo = ActionModel::getById(['id' => $aArgs['action_id']]);
                $reviewObject = new \stdClass();
                $reviewObject->Comment = array();
                $reviewObject->Comment[0] = new \stdClass();
    
    Florian Azizian's avatar
    Florian Azizian committed
                $primaryEntity = UserModel::getPrimaryEntityByUserId(['userId' => $aArgs['userId']]);
                $reviewObject->Comment[0]->value = '['.date('d/m/Y H:i:s').'] "'.$actionInfo['label_action'].'" '._M2M_ACTION_DONE.' '.$primaryEntity['entity_label'].'. '._M2M_ENTITY_DESTINATION.' : '.$messageExchangeData['entity_label'];
    
    Florian Azizian's avatar
    Florian Azizian committed
    
                $date = new DateTime();
                $reviewObject->Date = $date->format(DateTime::ATOM);
    
                $reviewObject->MessageIdentifier = new \stdClass();
    
                $reviewObject->MessageIdentifier->value = $messageExchangeData['external_id']['m2m'].'_NotificationSent';
    
    Florian Azizian's avatar
    Florian Azizian committed
    
                $reviewObject->CodeListVersions = new \stdClass();
                $reviewObject->CodeListVersions->value = '';
    
                $reviewObject->UnitIdentifier = new \stdClass();
    
                $reviewObject->UnitIdentifier->value = $messageExchangeData['external_id']['m2m'];
    
                $messageExchangeReply = MessageExchangeModel::getMessageByReference(['reference' => $messageExchangeData['external_id']['m2m'].'_ReplySent']);
    
    Florian Azizian's avatar
    Florian Azizian committed
                $dataObject = json_decode($messageExchangeReply[0]['data']);
    
    Florian Azizian's avatar
    Florian Azizian committed
                $reviewObject->OriginatingAgency = $dataObject->TransferringAgency;
                $reviewObject->ArchivalAgency = $dataObject->ArchivalAgency;
    
                if ($reviewObject->ArchivalAgency->OrganizationDescriptiveMetadata->Communication[0]->Channel == 'url') {
                    $tab = explode('saveMessageExchangeReturn', $reviewObject->ArchivalAgency->OrganizationDescriptiveMetadata->Communication[0]->value);
                    $reviewObject->ArchivalAgency->OrganizationDescriptiveMetadata->Communication[0]->value = $tab[0].'saveMessageExchangeReview';
                }
    
    
                $reviewObject->MessageIdentifier->value = $messageExchangeData['external_id']['m2m'].'_Notification';
    
    Florian Azizian's avatar
    Florian Azizian committed
                
                $filePath = SendMessageController::generateMessageFile(['messageObject' => $reviewObject, 'type' => 'ArchiveModificationNotification']);
    
                $reviewObject->MessageIdentifier->value = $messageExchangeData['external_id']['m2m'].'_NotificationSent';
    
    Florian Azizian's avatar
    Florian Azizian committed
                $reviewObject->TransferringAgency = $reviewObject->OriginatingAgency;
    
                $messageExchangeSaved = SendMessageExchangeController::saveMessageExchange(['dataObject' => $reviewObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveModificationNotification', 'file_path' => $filePath, 'userId' => $aArgs['userId']]);
    
                $reviewObject->MessageIdentifier->value = $messageExchangeData['external_id']['m2m'].'_Notification';
    
    Florian Azizian's avatar
    Florian Azizian committed
    
                $reviewObject->DataObjectPackage = new \stdClass();
                $reviewObject->DataObjectPackage->DescriptiveMetadata = new \stdClass();
                $reviewObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit = array();
                $reviewObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0] = new \stdClass();
                $reviewObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content = new \stdClass();
                $reviewObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->OriginatingSystemId = $aArgs['res_id_master'];
                $reviewObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->Title[0] = '[CAPTUREM2M_NOTIFICATION]'.date('Ymd_his');
    
                $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata = new \stdClass();
    
    Florian Azizian's avatar
    Florian Azizian committed
                $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata->UserIdentifier = $aArgs['userId'];
    
    
                SendMessageController::send($reviewObject, $messageExchangeSaved['messageId'], 'ArchiveModificationNotification');