Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
MailSendResultDto
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
3
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 success
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 failure
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5/** @license For full copyright and license information, please see the LICENSE.md file. */
6
7namespace App\Modules\Mail\Domain\Model;
8
9defined('AMMONLY_APP') || exit('Direct script access is forbidden.');
10
11/**
12 * Mail Send Operation Result Data Transfer Object.
13 *
14 * Encapsulates delivery outcome, server response message, and assigned Message-ID.
15 *
16 * @package App\Modules\Mail\Domain\Model
17 */
18final readonly class MailSendResultDto
19{
20    /**
21     * MailSendResultDto constructor.
22     *
23     * @param bool        $isSuccess   Whether email was accepted for delivery.
24     * @param string      $message     Descriptive status or error message.
25     * @param string|null $messageId   Assigned RFC 822 Message-ID.
26     * @param string|null $savedSentUid UID of the saved message in Sent folder.
27     */
28    public function __construct(
29        public bool $isSuccess,
30        public string $message,
31        public ?string $messageId = null,
32        public ?string $savedSentUid = null
33    ) {
34    }
35
36    /**
37     * Creates successful result.
38     *
39     * @param string      $messageId Assigned Message-ID.
40     * @param string|null $sentUid   Saved Sent UID.
41     * @return self Populated instance.
42     */
43    public static function success(string $messageId, ?string $sentUid = null): self
44    {
45        return new self(true, 'Message sent successfully.', $messageId, $sentUid);
46    }
47
48    /**
49     * Creates failure result.
50     *
51     * @param string $errorMessage Error details.
52     * @return self Populated instance.
53     */
54    public static function failure(string $errorMessage): self
55    {
56        return new self(false, $errorMessage);
57    }
58}