Completed
Branch EDTR/master (5c5ec9)
by
unknown
18:46 queued 09:35
created

DatetimeDelete::mutateAndGetPayload()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 33

Duplication

Lines 33
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
nc 1
nop 2
dl 33
loc 33
rs 9.392
c 0
b 0
f 0
1
<?php
2
3
namespace EventEspresso\core\domain\services\graphql\mutators;
4
5
use EE_Datetime;
6
use EEM_Datetime;
7
use EventEspresso\core\domain\services\graphql\types\Datetime;
8
use Exception;
9
use GraphQL\Type\Definition\ResolveInfo;
10
use WPGraphQL\AppContext;
11
12 View Code Duplication
class DatetimeDelete extends EntityMutator
13
{
14
15
    /**
16
     * Defines the mutation data modification closure.
17
     *
18
     * @param EEM_Datetime $model
19
     * @param Datetime     $type
20
     * @return callable
21
     */
22
    public static function mutateAndGetPayload(EEM_Datetime $model, Datetime $type)
23
    {
24
        /**
25
         * Deletes an entity.
26
         *
27
         * @param array       $input   The input for the mutation
28
         * @param AppContext  $context The AppContext passed down to all resolvers
29
         * @param ResolveInfo $info    The ResolveInfo passed down to all resolvers
30
         * @return array|void
31
         */
32
        return static function ($input, AppContext $context, ResolveInfo $info) use ($model, $type) {
33
            try {
34
                /** @var EE_Datetime $entity */
35
                $entity = EntityMutator::getEntityFromInputData($model, $input);
36
37
                // Delete the entity
38
                $result = ! empty($input['deletePermanently']) ? $entity->delete_permanently() : $entity->delete();
39
                EntityMutator::validateResults($result);
40
            } catch (Exception $exception) {
41
                EntityMutator::handleExceptions(
42
                    $exception,
43
                    esc_html__(
44
                        'The datetime could not be deleted because of the following error(s)',
45
                        'event_espresso'
46
                    )
47
                );
48
            }
49
50
            return [
51
                'deleted' => $entity,
52
            ];
53
        };
54
    }
55
}
56