Completed
Push — develop ( 136153...525928 )
by Nate
03:34
created

Contacts::defaultTransformer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 0
cts 5
cp 0
rs 9.8333
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://flipboxfactory.com/software/hubspot/license
6
 * @link       https://www.flipboxfactory.com/software/hubspot/
7
 */
8
9
namespace flipbox\hubspot\services\resources;
10
11
use flipbox\hubspot\builders\ContactBuilder;
12
use flipbox\hubspot\builders\ObjectBuilderInterface;
13
use flipbox\hubspot\criteria\ContactCriteria;
14
use flipbox\hubspot\criteria\ObjectCriteriaInterface;
15
use flipbox\hubspot\transformers\collections\TransformerCollectionInterface;
16
use flipbox\hubspot\transformers\DynamicModelSuccess;
17
use Flipbox\Relay\HubSpot\Builder\Resources\Contact\Create;
18
use Flipbox\Relay\HubSpot\Builder\Resources\Contact\Delete;
19
use Flipbox\Relay\HubSpot\Builder\Resources\Contact\ReadById;
20
use Flipbox\Relay\HubSpot\Builder\Resources\Contact\Update;
21
use yii\base\Component;
22
23
/**
24
 * @author Flipbox Factory <[email protected]>
25
 * @since 1.0.0
26
 */
27
class Contacts extends Component implements CRUDInterface
28
{
29
    use traits\SyncByElementTrait,
30
        traits\ReadObjectTrait,
31
        traits\UpsertObjectTrait,
32
        traits\DeleteObjectTrait;
33
34
    /**
35
     * The HubSpot Resource name
36
     */
37
    const HUBSPOT_RESOURCE = 'contacts';
38
39
    /**
40
     * @return array
41
     */
42
    public static function defaultTransformer()
43
    {
44
        return [
45
            'class' => DynamicTransformerCollection::class,
46
            'handle' => self::HUBSPOT_RESOURCE,
47
            'transformers' => [
48
                TransformerCollectionInterface::SUCCESS_KEY => [
49
                    'class' => DynamicModelSuccess::class,
50
                    'resource' => self::HUBSPOT_RESOURCE
51
                ]
52
            ]
53
        ];
54
    }
55
56
    /**
57
     * @param array $config
58
     * @return ObjectCriteriaInterface
59
     */
60
    public function getCriteria(array $config = []): ObjectCriteriaInterface
61
    {
62
        return new ContactCriteria($config);
63
    }
64
65
    /**
66
     * @param array $config
67
     * @return ObjectBuilderInterface
68
     */
69
    public function getBuilder(array $config = []): ObjectBuilderInterface
70
    {
71
        return new ContactBuilder($config);
72
    }
73
74
    /**
75
     * @inheritdoc
76
     */
77
    protected static function createRelayBuilderClass(): string
78
    {
79
        return Create::class;
80
    }
81
82
    /**
83
     * @inheritdoc
84
     */
85
    protected static function readRelayBuilderClass(): string
86
    {
87
        return ReadById::class;
88
    }
89
90
    /**
91
     * @inheritdoc
92
     */
93
    protected static function updateRelayBuilderClass(): string
94
    {
95
        return Update::class;
96
    }
97
98
    /**
99
     * @inheritdoc
100
     */
101
    protected static function deleteRelayBuilderClass(): string
102
    {
103
        return Delete::class;
104
    }
105
    /*******************************************
106
     * ELEMENT SYNC JOBS
107
     *******************************************/
108
109
//    /**
110
//     * @param ElementInterface $element
111
//     * @param Objects $field
112
//     * @return null|string
113
//     */
114
//    public function createElementSyncToJob(
115
//        ElementInterface $element,
116
//        Objects $field
117
//    ) {
118
//        return Craft::$app->getQueue()->push(new SyncElementTo([
119
//            'element' => $element,
120
//            'field' => $field,
121
//            'resource' => self::HUBSPOT_RESOURCE
122
//        ]));
123
//    }
124
//
125
//    /**
126
//     * @param ElementInterface $element
127
//     * @param Objects $field
128
//     * @return null|string
129
//     */
130
//    public function createElementSyncFromJob(
131
//        ElementInterface $element,
132
//        Objects $field
133
//    ) {
134
//        return Craft::$app->getQueue()->push(new SyncElementFrom([
135
//            'element' => $element,
136
//            'field' => $field,
137
//            'resource' => self::HUBSPOT_RESOURCE
138
//        ]));
139
//    }
140
141
    /*******************************************
142
     * READ
143
     *******************************************/
144
}
145