Passed
Push — trunk ( 4800ac...0605c0 )
by Christian
30:12 queued 17:02
created

CustomerDefinition::getDefaults()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Shopware\Core\Checkout\Customer;
4
5
use Shopware\Core\Checkout\Customer\Aggregate\CustomerAddress\CustomerAddressDefinition;
6
use Shopware\Core\Checkout\Customer\Aggregate\CustomerGroup\CustomerGroupDefinition;
7
use Shopware\Core\Checkout\Customer\Aggregate\CustomerRecovery\CustomerRecoveryDefinition;
8
use Shopware\Core\Checkout\Customer\Aggregate\CustomerTag\CustomerTagDefinition;
9
use Shopware\Core\Checkout\Customer\Aggregate\CustomerWishlist\CustomerWishlistDefinition;
10
use Shopware\Core\Checkout\Order\Aggregate\OrderCustomer\OrderCustomerDefinition;
11
use Shopware\Core\Checkout\Payment\PaymentMethodDefinition;
12
use Shopware\Core\Checkout\Promotion\Aggregate\PromotionPersonaCustomer\PromotionPersonaCustomerDefinition;
13
use Shopware\Core\Checkout\Promotion\PromotionDefinition;
14
use Shopware\Core\Content\Product\Aggregate\ProductReview\ProductReviewDefinition;
15
use Shopware\Core\Framework\Context;
16
use Shopware\Core\Framework\DataAbstractionLayer\EntityDefinition;
17
use Shopware\Core\Framework\DataAbstractionLayer\Field\AutoIncrementField;
18
use Shopware\Core\Framework\DataAbstractionLayer\Field\BoolField;
19
use Shopware\Core\Framework\DataAbstractionLayer\Field\CreatedByField;
20
use Shopware\Core\Framework\DataAbstractionLayer\Field\CustomFields;
21
use Shopware\Core\Framework\DataAbstractionLayer\Field\DateField;
22
use Shopware\Core\Framework\DataAbstractionLayer\Field\DateTimeField;
23
use Shopware\Core\Framework\DataAbstractionLayer\Field\EmailField;
24
use Shopware\Core\Framework\DataAbstractionLayer\Field\FkField;
25
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\ApiAware;
26
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\CascadeDelete;
27
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\NoConstraint;
28
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\PrimaryKey;
29
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\Required;
30
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\SearchRanking;
31
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\SetNullOnDelete;
32
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\WriteProtected;
33
use Shopware\Core\Framework\DataAbstractionLayer\Field\FloatField;
34
use Shopware\Core\Framework\DataAbstractionLayer\Field\IdField;
35
use Shopware\Core\Framework\DataAbstractionLayer\Field\IntField;
36
use Shopware\Core\Framework\DataAbstractionLayer\Field\JsonField;
37
use Shopware\Core\Framework\DataAbstractionLayer\Field\ListField;
38
use Shopware\Core\Framework\DataAbstractionLayer\Field\ManyToManyAssociationField;
39
use Shopware\Core\Framework\DataAbstractionLayer\Field\ManyToManyIdField;
40
use Shopware\Core\Framework\DataAbstractionLayer\Field\ManyToOneAssociationField;
41
use Shopware\Core\Framework\DataAbstractionLayer\Field\OneToManyAssociationField;
42
use Shopware\Core\Framework\DataAbstractionLayer\Field\OneToOneAssociationField;
43
use Shopware\Core\Framework\DataAbstractionLayer\Field\PasswordField;
44
use Shopware\Core\Framework\DataAbstractionLayer\Field\RemoteAddressField;
45
use Shopware\Core\Framework\DataAbstractionLayer\Field\StringField;
46
use Shopware\Core\Framework\DataAbstractionLayer\Field\UpdatedByField;
47
use Shopware\Core\Framework\DataAbstractionLayer\FieldCollection;
48
use Shopware\Core\Framework\Log\Package;
49
use Shopware\Core\System\Language\LanguageDefinition;
50
use Shopware\Core\System\NumberRange\DataAbstractionLayer\NumberRangeField;
51
use Shopware\Core\System\SalesChannel\SalesChannelDefinition;
52
use Shopware\Core\System\Salutation\SalutationDefinition;
53
use Shopware\Core\System\Tag\TagDefinition;
54
use Shopware\Core\System\User\UserDefinition;
55
56
#[Package('customer-order')]
57
class CustomerDefinition extends EntityDefinition
58
{
59
    public const ENTITY_NAME = 'customer';
60
61
    public function getEntityName(): string
62
    {
63
        return self::ENTITY_NAME;
64
    }
65
66
    public function getCollectionClass(): string
67
    {
68
        return CustomerCollection::class;
69
    }
70
71
    public function getEntityClass(): string
72
    {
73
        return CustomerEntity::class;
0 ignored issues
show
Bug introduced by
The type Shopware\Core\Checkout\Customer\CustomerEntity was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
74
    }
75
76
    public function getDefaults(): array
77
    {
78
        return [
79
            'accountType' => CustomerEntity::ACCOUNT_TYPE_PRIVATE,
80
        ];
81
    }
82
83
    public function hasManyToManyIdFields(): bool
84
    {
85
        return true;
86
    }
87
88
    public function since(): ?string
89
    {
90
        return '6.0.0.0';
91
    }
92
93
    protected function defineFields(): FieldCollection
94
    {
95
        $fields = new FieldCollection([
96
            (new IdField('id', 'id'))->addFlags(new ApiAware(), new PrimaryKey(), new Required()),
97
            (new FkField('customer_group_id', 'groupId', CustomerGroupDefinition::class))->addFlags(new ApiAware(), new Required()),
98
            (new FkField('default_payment_method_id', 'defaultPaymentMethodId', PaymentMethodDefinition::class))->addFlags(new ApiAware(), new Required()),
99
            (new FkField('sales_channel_id', 'salesChannelId', SalesChannelDefinition::class))->addFlags(new ApiAware(), new Required()),
100
            (new FkField('language_id', 'languageId', LanguageDefinition::class))->addFlags(new ApiAware(), new Required()),
101
            (new FkField('last_payment_method_id', 'lastPaymentMethodId', PaymentMethodDefinition::class))->addFlags(new ApiAware()),
102
            (new FkField('default_billing_address_id', 'defaultBillingAddressId', CustomerAddressDefinition::class))->addFlags(new ApiAware(), new Required(), new NoConstraint()),
103
            (new FkField('default_shipping_address_id', 'defaultShippingAddressId', CustomerAddressDefinition::class))->addFlags(new ApiAware(), new Required(), new NoConstraint()),
104
            new AutoIncrementField(),
105
            (new NumberRangeField('customer_number', 'customerNumber', 255))->addFlags(new ApiAware(), new Required(), new SearchRanking(SearchRanking::HIGH_SEARCH_RANKING)),
106
            (new FkField('salutation_id', 'salutationId', SalutationDefinition::class))->addFlags(new ApiAware()),
107
            (new StringField('first_name', 'firstName'))->addFlags(new ApiAware(), new Required(), new SearchRanking(SearchRanking::MIDDLE_SEARCH_RANKING)),
108
            (new StringField('last_name', 'lastName'))->addFlags(new ApiAware(), new Required(), new SearchRanking(SearchRanking::HIGH_SEARCH_RANKING)),
109
            (new StringField('company', 'company'))->addFlags(new ApiAware(), new SearchRanking(SearchRanking::HIGH_SEARCH_RANKING)),
110
            (new PasswordField('password', 'password', \PASSWORD_DEFAULT, [], PasswordField::FOR_CUSTOMER))->removeFlag(ApiAware::class),
111
            (new EmailField('email', 'email'))->addFlags(new ApiAware(), new Required(), new SearchRanking(SearchRanking::MIDDLE_SEARCH_RANKING, false)),
112
            (new StringField('title', 'title'))->addFlags(new ApiAware()),
113
            (new ListField('vat_ids', 'vatIds', StringField::class))->addFlags(new ApiAware()),
114
            (new StringField('affiliate_code', 'affiliateCode'))->addFlags(new ApiAware()),
115
            (new StringField('campaign_code', 'campaignCode'))->addFlags(new ApiAware()),
116
            (new BoolField('active', 'active'))->addFlags(new ApiAware()),
117
            (new BoolField('double_opt_in_registration', 'doubleOptInRegistration'))->addFlags(new ApiAware()),
118
            (new DateTimeField('double_opt_in_email_sent_date', 'doubleOptInEmailSentDate'))->addFlags(new ApiAware()),
119
            (new DateTimeField('double_opt_in_confirm_date', 'doubleOptInConfirmDate'))->addFlags(new ApiAware()),
120
            (new StringField('hash', 'hash'))->addFlags(new ApiAware()),
121
            (new BoolField('guest', 'guest'))->addFlags(new ApiAware()),
122
            (new DateTimeField('first_login', 'firstLogin'))->addFlags(new ApiAware()),
123
            (new DateTimeField('last_login', 'lastLogin'))->addFlags(new ApiAware()),
124
            (new JsonField('newsletter_sales_channel_ids', 'newsletterSalesChannelIds'))->addFlags(new WriteProtected(Context::SYSTEM_SCOPE))->removeFlag(ApiAware::class),
125
            (new DateField('birthday', 'birthday'))->addFlags(new ApiAware()),
126
            (new DateTimeField('last_order_date', 'lastOrderDate'))->addFlags(new ApiAware(), new WriteProtected(Context::SYSTEM_SCOPE)),
127
            (new IntField('order_count', 'orderCount'))->addFlags(new ApiAware(), new WriteProtected(Context::SYSTEM_SCOPE)),
128
            (new FloatField('order_total_amount', 'orderTotalAmount'))->addFlags(new ApiAware(), new WriteProtected(Context::SYSTEM_SCOPE)),
129
            (new CustomFields())->addFlags(new ApiAware()),
130
            (new StringField('legacy_password', 'legacyPassword'))->removeFlag(ApiAware::class),
131
            (new StringField('legacy_encoder', 'legacyEncoder'))->removeFlag(ApiAware::class),
132
            (new ManyToOneAssociationField('group', 'customer_group_id', CustomerGroupDefinition::class, 'id', false))->addFlags(new ApiAware()),
133
            (new ManyToOneAssociationField('defaultPaymentMethod', 'default_payment_method_id', PaymentMethodDefinition::class, 'id', false))->addFlags(new ApiAware(), new SearchRanking(SearchRanking::ASSOCIATION_SEARCH_RANKING)),
134
            new ManyToOneAssociationField('salesChannel', 'sales_channel_id', SalesChannelDefinition::class, 'id', false),
135
            (new ManyToOneAssociationField('language', 'language_id', LanguageDefinition::class, 'id', false))->addFlags(new ApiAware()),
136
            (new ManyToOneAssociationField('lastPaymentMethod', 'last_payment_method_id', PaymentMethodDefinition::class, 'id', false))->addFlags(new ApiAware()),
137
            (new ManyToOneAssociationField('defaultBillingAddress', 'default_billing_address_id', CustomerAddressDefinition::class, 'id', false))->addFlags(new ApiAware(), new SearchRanking(SearchRanking::ASSOCIATION_SEARCH_RANKING)),
138
            (new ManyToOneAssociationField('defaultShippingAddress', 'default_shipping_address_id', CustomerAddressDefinition::class, 'id', false))->addFlags(new ApiAware(), new SearchRanking(SearchRanking::ASSOCIATION_SEARCH_RANKING)),
139
            (new ManyToOneAssociationField('salutation', 'salutation_id', SalutationDefinition::class, 'id', false))->addFlags(new ApiAware()),
140
            (new OneToManyAssociationField('addresses', CustomerAddressDefinition::class, 'customer_id', 'id'))->addFlags(new ApiAware(), new CascadeDelete()),
141
            (new OneToManyAssociationField('orderCustomers', OrderCustomerDefinition::class, 'customer_id', 'id'))->addFlags(new SetNullOnDelete()),
142
            (new ManyToManyAssociationField('tags', TagDefinition::class, CustomerTagDefinition::class, 'customer_id', 'tag_id'))->addFlags(new SearchRanking(SearchRanking::ASSOCIATION_SEARCH_RANKING)),
143
            new ManyToManyAssociationField('promotions', PromotionDefinition::class, PromotionPersonaCustomerDefinition::class, 'customer_id', 'promotion_id'),
144
            new OneToManyAssociationField('productReviews', ProductReviewDefinition::class, 'customer_id'),
145
            new OneToOneAssociationField('recoveryCustomer', 'id', 'customer_id', CustomerRecoveryDefinition::class, false),
146
            new RemoteAddressField('remote_address', 'remoteAddress'),
147
            (new ManyToManyIdField('tag_ids', 'tagIds', 'tags'))->addFlags(new ApiAware()),
148
            new FkField('requested_customer_group_id', 'requestedGroupId', CustomerGroupDefinition::class),
149
            (new ManyToOneAssociationField('requestedGroup', 'requested_customer_group_id', CustomerGroupDefinition::class, 'id', false)),
150
            new FkField('bound_sales_channel_id', 'boundSalesChannelId', SalesChannelDefinition::class),
151
            (new StringField('account_type', 'accountType'))->addFlags(new ApiAware(), new Required()),
152
            new ManyToOneAssociationField('boundSalesChannel', 'bound_sales_channel_id', SalesChannelDefinition::class, 'id', false),
153
            (new OneToManyAssociationField('wishlists', CustomerWishlistDefinition::class, 'customer_id'))->addFlags(new CascadeDelete()),
154
            (new CreatedByField([Context::SYSTEM_SCOPE, Context::CRUD_API_SCOPE]))->addFlags(new ApiAware()),
155
            (new UpdatedByField([Context::SYSTEM_SCOPE, Context::CRUD_API_SCOPE]))->addFlags(new ApiAware()),
156
            new ManyToOneAssociationField('createdBy', 'created_by_id', UserDefinition::class, 'id', false),
157
            new ManyToOneAssociationField('updatedBy', 'updated_by_id', UserDefinition::class, 'id', false),
158
        ]);
159
160
        return $fields;
161
    }
162
}
163