ArchiveDestructionNotification.php 2.97 KB
Newer Older
Prosper De Laure's avatar
Prosper De Laure committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

/* 
 * Copyright (C) 2015 Maarch
 *
 * This file is part of bundle medona
 *
 * Bundle medona is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Bundle medona is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with bundle medona.  If not, see <http://www.gnu.org/licenses/>.
 */

namespace ext\thirdPartyArchiving\bundle\medona\Controller;

/**
 * Archive destruction notification
 *
 * @author Prosper DE LAURE <prosper.delaure@maarch.org>
 */
class ArchiveDestructionNotification extends ArchiveNotification
{
    /**
     * Send a new transfer reply
     * @param medona/message $destructionRequest The destruction request message
     * @param array          $archives           The destroyed archives
     *
     * @return The message generated
     */
    public function send($destructionRequest, $archives)
    {
        $message = \laabs::newInstance('medona/message');
        $message->messageId = \laabs::newId();
        $message->type = "ArchiveDestructionNotification";

44
        $schema = "medona";
45
        if (\laabs::hasBundle('seda')) {
Prosper De Laure's avatar
Prosper De Laure committed
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
            $schema = "seda";
        }
        $message->schema = $schema;

        $message->status = "sent";
        $message->date = \laabs::newDatetime(null, "UTC");
        $message->receptionDate = $message->date;

        $message->reference = $destructionRequest->reference."_DestructionNotification";

        $message->senderOrgRegNumber = $archives[0]->archiverOrgRegNumber;
        $message->recipientOrgRegNumber = $archives[0]->originatorOrgRegNumber;
        $this->readOrgs($message); // read org names, addresses, communications, contacts

        $message->archive = $archives;

        $message->dataObjectCount = count($message->archive);

        try {
65
            if ($message->schema != 'medona') {
Prosper De Laure's avatar
Prosper De Laure committed
66

67
68
69
70
71
72
73
74
                $archiveModificationNotificationController = \laabs::newController($message->schema.'/ArchiveModificationNotification');
                $archiveModificationNotificationController->send($message);

            } else {

                $this->generate($message);
                $this->save($message);
            }
Prosper De Laure's avatar
Prosper De Laure committed
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
            $operationResult = true;

        } catch (\Exception $e) {
            $message->status = "error";
            $operationResult = false;

            throw $e;
        }

        $event = $this->lifeCycleJournalController->logEvent(
            'medona/sending',
            'medona/message',
            $message->messageId,
            $message,
            $operationResult
        );

        $this->create($message);

        return $message;
    }
}