@fleetbase/storefront-engine 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.php-cs-fixer.php +29 -0
- package/LICENSE.md +16 -4
- package/README.md +106 -13
- package/composer.json +88 -0
- package/extension.json +10 -0
- package/package.json +6 -6
- package/phpstan.neon.dist +8 -0
- package/phpunit.xml.dist +16 -0
- package/server/.gitattributes +14 -0
- package/server/README.md +40 -0
- package/server/config/api.php +101 -0
- package/server/config/database.connections.php +57 -0
- package/server/config/storefront.php +19 -0
- package/server/config/twilio-notification-channel.php +36 -0
- package/server/migrations/2023_05_03_025307_create_carts_table.php +44 -0
- package/server/migrations/2023_05_03_025307_create_checkouts_table.php +51 -0
- package/server/migrations/2023_05_03_025307_create_gateways_table.php +48 -0
- package/server/migrations/2023_05_03_025307_create_network_stores_table.php +36 -0
- package/server/migrations/2023_05_03_025307_create_networks_table.php +56 -0
- package/server/migrations/2023_05_03_025307_create_notification_channels_table.php +43 -0
- package/server/migrations/2023_05_03_025307_create_payment_methods_table.php +44 -0
- package/server/migrations/2023_05_03_025307_create_product_addon_categories_table.php +38 -0
- package/server/migrations/2023_05_03_025307_create_product_addons_table.php +43 -0
- package/server/migrations/2023_05_03_025307_create_product_hours_table.php +37 -0
- package/server/migrations/2023_05_03_025307_create_product_store_locations_table.php +34 -0
- package/server/migrations/2023_05_03_025307_create_product_variant_options_table.php +40 -0
- package/server/migrations/2023_05_03_025307_create_product_variants_table.php +44 -0
- package/server/migrations/2023_05_03_025307_create_products_table.php +59 -0
- package/server/migrations/2023_05_03_025307_create_reviews_table.php +41 -0
- package/server/migrations/2023_05_03_025307_create_store_hours_table.php +37 -0
- package/server/migrations/2023_05_03_025307_create_store_locations_table.php +38 -0
- package/server/migrations/2023_05_03_025307_create_stores_table.php +57 -0
- package/server/migrations/2023_05_03_025307_create_votes_table.php +39 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_carts_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_checkouts_table.php +48 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_gateways_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_network_stores_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_networks_table.php +42 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_notification_channels_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_payment_methods_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addon_categories_table.php +38 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addons_table.php +38 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_hours_table.php +32 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_store_locations_table.php +34 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variant_options_table.php +32 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variants_table.php +32 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_products_table.php +44 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_reviews_table.php +38 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_hours_table.php +32 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_locations_table.php +40 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_stores_table.php +42 -0
- package/server/migrations/2023_05_03_025310_add_foreign_keys_to_votes_table.php +38 -0
- package/server/src/Auth/Schemas/Storefront.php +95 -0
- package/server/src/Console/Commands/NotifyStorefrontOrderNearby.php +86 -0
- package/server/src/Expansions/EntityExpansion.php +44 -0
- package/server/src/Http/Controllers/ActionController.php +119 -0
- package/server/src/Http/Controllers/AddonCategoryController.php +13 -0
- package/server/src/Http/Controllers/CustomerController.php +13 -0
- package/server/src/Http/Controllers/GatewayController.php +13 -0
- package/server/src/Http/Controllers/MetricsController.php +71 -0
- package/server/src/Http/Controllers/NetworkController.php +170 -0
- package/server/src/Http/Controllers/NotificationChannelController.php +13 -0
- package/server/src/Http/Controllers/OrderController.php +154 -0
- package/server/src/Http/Controllers/ProductAddonCategoryController.php +14 -0
- package/server/src/Http/Controllers/ProductAddonController.php +14 -0
- package/server/src/Http/Controllers/ProductController.php +123 -0
- package/server/src/Http/Controllers/ProductHourController.php +13 -0
- package/server/src/Http/Controllers/ProductVariantController.php +13 -0
- package/server/src/Http/Controllers/ProductVariantOptionController.php +13 -0
- package/server/src/Http/Controllers/ReviewController.php +13 -0
- package/server/src/Http/Controllers/StoreController.php +26 -0
- package/server/src/Http/Controllers/StoreHourController.php +13 -0
- package/server/src/Http/Controllers/StoreLocationController.php +13 -0
- package/server/src/Http/Controllers/StorefrontController.php +15 -0
- package/server/src/Http/Controllers/VoteController.php +13 -0
- package/server/src/Http/Controllers/v1/CartController.php +161 -0
- package/server/src/Http/Controllers/v1/CategoryController.php +138 -0
- package/server/src/Http/Controllers/v1/CheckoutController.php +957 -0
- package/server/src/Http/Controllers/v1/CustomerController.php +482 -0
- package/server/src/Http/Controllers/v1/GatewayControllerController.php +11 -0
- package/server/src/Http/Controllers/v1/NetworkController.php +281 -0
- package/server/src/Http/Controllers/v1/PaymentMethodController.php +11 -0
- package/server/src/Http/Controllers/v1/ProductController.php +94 -0
- package/server/src/Http/Controllers/v1/ReviewController.php +270 -0
- package/server/src/Http/Controllers/v1/ServiceQuoteController.php +402 -0
- package/server/src/Http/Controllers/v1/StoreController.php +176 -0
- package/server/src/Http/Filter/AddonCategoryFilter.php +19 -0
- package/server/src/Http/Filter/CustomerFilter.php +18 -0
- package/server/src/Http/Filter/GatewayFilter.php +13 -0
- package/server/src/Http/Filter/NetworkFilter.php +18 -0
- package/server/src/Http/Filter/NotificationChannelFilter.php +13 -0
- package/server/src/Http/Filter/OrderFilter.php +46 -0
- package/server/src/Http/Filter/ProductFilter.php +28 -0
- package/server/src/Http/Filter/StoreFilter.php +42 -0
- package/server/src/Http/Filter/StoreLocationFilter.php +23 -0
- package/server/src/Http/Middleware/SetStorefrontSession.php +130 -0
- package/server/src/Http/Requests/AddStoreToNetworkCategory.php +45 -0
- package/server/src/Http/Requests/CaptureOrderRequest.php +30 -0
- package/server/src/Http/Requests/CreateCustomerRequest.php +44 -0
- package/server/src/Http/Requests/CreateReviewRequest.php +34 -0
- package/server/src/Http/Requests/GetServiceQuoteFromCart.php +40 -0
- package/server/src/Http/Requests/InitializeCheckoutRequest.php +38 -0
- package/server/src/Http/Requests/NetworkActionRequest.php +43 -0
- package/server/src/Http/Requests/VerifyCreateCustomerRequest.php +31 -0
- package/server/src/Http/Resources/Cart.php +31 -0
- package/server/src/Http/Resources/Category.php +48 -0
- package/server/src/Http/Resources/Customer.php +36 -0
- package/server/src/Http/Resources/Gateway.php +32 -0
- package/server/src/Http/Resources/Media.php +29 -0
- package/server/src/Http/Resources/Network.php +48 -0
- package/server/src/Http/Resources/Product.php +209 -0
- package/server/src/Http/Resources/Review.php +45 -0
- package/server/src/Http/Resources/ReviewCustomer.php +60 -0
- package/server/src/Http/Resources/Store.php +76 -0
- package/server/src/Http/Resources/StoreHour.php +29 -0
- package/server/src/Http/Resources/StoreLocation.php +33 -0
- package/server/src/Imports/ProductsImport.php +20 -0
- package/server/src/Jobs/DownloadProductImageUrl.php +60 -0
- package/server/src/Listeners/HandleOrderCompleted.php +31 -0
- package/server/src/Listeners/HandleOrderDispatched.php +34 -0
- package/server/src/Listeners/HandleOrderDriverAssigned.php +37 -0
- package/server/src/Listeners/HandleOrderStarted.php +27 -0
- package/server/src/Mail/StorefrontNetworkInvite.php +48 -0
- package/server/src/Models/AddonCategory.php +30 -0
- package/server/src/Models/Cart.php +691 -0
- package/server/src/Models/Checkout.php +166 -0
- package/server/src/Models/Customer.php +88 -0
- package/server/src/Models/Gateway.php +165 -0
- package/server/src/Models/Network.php +300 -0
- package/server/src/Models/NetworkStore.php +86 -0
- package/server/src/Models/NotificationChannel.php +147 -0
- package/server/src/Models/PaymentMethod.php +99 -0
- package/server/src/Models/Product.php +315 -0
- package/server/src/Models/ProductAddon.php +128 -0
- package/server/src/Models/ProductAddonCategory.php +90 -0
- package/server/src/Models/ProductHour.php +59 -0
- package/server/src/Models/ProductStoreLocation.php +77 -0
- package/server/src/Models/ProductVariant.php +125 -0
- package/server/src/Models/ProductVariantOption.php +86 -0
- package/server/src/Models/Review.php +127 -0
- package/server/src/Models/Store.php +478 -0
- package/server/src/Models/StoreHour.php +59 -0
- package/server/src/Models/StoreLocation.php +126 -0
- package/server/src/Models/StorefrontModel.php +22 -0
- package/server/src/Models/Vote.php +84 -0
- package/server/src/Notifications/StorefrontOrderCanceled.php +196 -0
- package/server/src/Notifications/StorefrontOrderCompleted.php +201 -0
- package/server/src/Notifications/StorefrontOrderCreated.php +157 -0
- package/server/src/Notifications/StorefrontOrderDriverAssigned.php +200 -0
- package/server/src/Notifications/StorefrontOrderEnroute.php +199 -0
- package/server/src/Notifications/StorefrontOrderNearby.php +201 -0
- package/server/src/Notifications/StorefrontOrderPreparing.php +202 -0
- package/server/src/Notifications/StorefrontOrderReadyForPickup.php +202 -0
- package/server/src/Observers/NetworkObserver.php +40 -0
- package/server/src/Observers/ProductObserver.php +118 -0
- package/server/src/Providers/EventServiceProvider.php +23 -0
- package/server/src/Providers/StorefrontServiceProvider.php +103 -0
- package/server/src/Support/Metrics.php +193 -0
- package/server/src/Support/OrderConfig.php +13 -0
- package/server/src/Support/QPay.php +208 -0
- package/server/src/Support/Storefront.php +201 -0
- package/server/src/routes.php +180 -0
- package/server/tests/Feature.php +5 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\Storefront\Models;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Casts\Json;
|
|
6
|
+
use Fleetbase\Models\Category;
|
|
7
|
+
use Fleetbase\Models\User;
|
|
8
|
+
use Fleetbase\Traits\HasMetaAttributes;
|
|
9
|
+
use Fleetbase\Traits\HasUuid;
|
|
10
|
+
use Fleetbase\Traits\HasApiModelBehavior;
|
|
11
|
+
use Fleetbase\Traits\HasPublicid;
|
|
12
|
+
use Spatie\Sluggable\HasSlug;
|
|
13
|
+
use Spatie\Sluggable\SlugOptions;
|
|
14
|
+
|
|
15
|
+
class ProductVariant extends StorefrontModel
|
|
16
|
+
{
|
|
17
|
+
use HasUuid, HasPublicid, HasApiModelBehavior, HasMetaAttributes, HasSlug;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The type of public Id to generate
|
|
21
|
+
*
|
|
22
|
+
* @var string
|
|
23
|
+
*/
|
|
24
|
+
protected $publicIdType = 'variant';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The database table used by the model.
|
|
28
|
+
*
|
|
29
|
+
* @var string
|
|
30
|
+
*/
|
|
31
|
+
protected $table = 'product_variants';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* These attributes that can be queried
|
|
35
|
+
*
|
|
36
|
+
* @var array
|
|
37
|
+
*/
|
|
38
|
+
protected $searchableColumns = ['name', 'description'];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The attributes that are mass assignable.
|
|
42
|
+
*
|
|
43
|
+
* @var array
|
|
44
|
+
*/
|
|
45
|
+
protected $fillable = [
|
|
46
|
+
'public_id',
|
|
47
|
+
'product_uuid',
|
|
48
|
+
'name',
|
|
49
|
+
'description',
|
|
50
|
+
'translations',
|
|
51
|
+
'meta',
|
|
52
|
+
'is_multiselect',
|
|
53
|
+
'is_required',
|
|
54
|
+
'min',
|
|
55
|
+
'max'
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The attributes that should be cast to native types.
|
|
60
|
+
*
|
|
61
|
+
* @var array
|
|
62
|
+
*/
|
|
63
|
+
protected $casts = [
|
|
64
|
+
'is_multiselect' => 'boolean',
|
|
65
|
+
'is_required' => 'boolean',
|
|
66
|
+
'meta' => Json::class,
|
|
67
|
+
'translations' => Json::class
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Dynamic attributes that are appended to object
|
|
72
|
+
*
|
|
73
|
+
* @var array
|
|
74
|
+
*/
|
|
75
|
+
protected $appends = [];
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Relationships to auto load with driver
|
|
79
|
+
*
|
|
80
|
+
* @var array
|
|
81
|
+
*/
|
|
82
|
+
protected $with = [];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @var \Spatie\Sluggable\SlugOptions
|
|
86
|
+
*/
|
|
87
|
+
public function getSlugOptions(): SlugOptions
|
|
88
|
+
{
|
|
89
|
+
return SlugOptions::create()
|
|
90
|
+
->generateSlugsFrom('name')
|
|
91
|
+
->saveSlugsTo('slug');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
96
|
+
*/
|
|
97
|
+
public function createdBy()
|
|
98
|
+
{
|
|
99
|
+
return $this->setConnection(config('fleetbase.connection.db'))->belongsTo(User::class);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
104
|
+
*/
|
|
105
|
+
public function category()
|
|
106
|
+
{
|
|
107
|
+
return $this->setConnection(config('fleetbase.connection.db'))->belongsTo(Category::class);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
112
|
+
*/
|
|
113
|
+
public function product()
|
|
114
|
+
{
|
|
115
|
+
return $this->belongsTo(Product::class);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
120
|
+
*/
|
|
121
|
+
public function options()
|
|
122
|
+
{
|
|
123
|
+
return $this->hasMany(ProductVariantOption::class);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\Storefront\Models;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Casts\Json;
|
|
6
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
7
|
+
use Fleetbase\Traits\HasMetaAttributes;
|
|
8
|
+
use Fleetbase\Traits\HasUuid;
|
|
9
|
+
use Fleetbase\Traits\HasApiModelBehavior;
|
|
10
|
+
use Fleetbase\Traits\HasPublicid;
|
|
11
|
+
|
|
12
|
+
class ProductVariantOption extends StorefrontModel
|
|
13
|
+
{
|
|
14
|
+
use HasUuid, HasPublicid, HasMetaAttributes, HasApiModelBehavior;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The type of public Id to generate
|
|
18
|
+
*
|
|
19
|
+
* @var string
|
|
20
|
+
*/
|
|
21
|
+
protected $publicIdType = 'variant_option';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The database table used by the model.
|
|
25
|
+
*
|
|
26
|
+
* @var string
|
|
27
|
+
*/
|
|
28
|
+
protected $table = 'product_variant_options';
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* These attributes that can be queried
|
|
32
|
+
*
|
|
33
|
+
* @var array
|
|
34
|
+
*/
|
|
35
|
+
protected $searchableColumns = ['name', 'description'];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The attributes that are mass assignable.
|
|
39
|
+
*
|
|
40
|
+
* @var array
|
|
41
|
+
*/
|
|
42
|
+
protected $fillable = [
|
|
43
|
+
'public_id',
|
|
44
|
+
'product_variant_uuid',
|
|
45
|
+
'name',
|
|
46
|
+
'description',
|
|
47
|
+
'translations',
|
|
48
|
+
'meta',
|
|
49
|
+
'additional_cost'
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The attributes that should be cast to native types.
|
|
54
|
+
*
|
|
55
|
+
* @var array
|
|
56
|
+
*/
|
|
57
|
+
protected $casts = [
|
|
58
|
+
'translations' => Json::class,
|
|
59
|
+
'meta' => Json::class
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Dynamic attributes that are appended to object
|
|
64
|
+
*
|
|
65
|
+
* @var array
|
|
66
|
+
*/
|
|
67
|
+
protected $appends = [];
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
71
|
+
*/
|
|
72
|
+
public function productVariant()
|
|
73
|
+
{
|
|
74
|
+
return $this->belongsTo(ProductVariant::class);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Set the price as only numbers
|
|
79
|
+
*
|
|
80
|
+
* @void
|
|
81
|
+
*/
|
|
82
|
+
public function setAdditionalCostAttribute($value)
|
|
83
|
+
{
|
|
84
|
+
$this->attributes['additional_cost'] = Utils::numbersOnly($value);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\Storefront\Models;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Models\File;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Contact;
|
|
7
|
+
use Fleetbase\Traits\HasUuid;
|
|
8
|
+
use Fleetbase\Traits\HasApiModelBehavior;
|
|
9
|
+
use Fleetbase\Traits\HasPublicid;
|
|
10
|
+
|
|
11
|
+
class Review extends StorefrontModel
|
|
12
|
+
{
|
|
13
|
+
use HasUuid, HasPublicid, HasApiModelBehavior;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The type of public Id to generate
|
|
17
|
+
*
|
|
18
|
+
* @var string
|
|
19
|
+
*/
|
|
20
|
+
protected $publicIdType = 'review';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The database table used by the model.
|
|
24
|
+
*
|
|
25
|
+
* @var string
|
|
26
|
+
*/
|
|
27
|
+
protected $table = 'reviews';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* These attributes that can be queried
|
|
31
|
+
*
|
|
32
|
+
* @var array
|
|
33
|
+
*/
|
|
34
|
+
protected $searchableColumns = [];
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The attributes that are mass assignable.
|
|
38
|
+
*
|
|
39
|
+
* @var array
|
|
40
|
+
*/
|
|
41
|
+
protected $fillable = [
|
|
42
|
+
'created_by_uuid',
|
|
43
|
+
'customer_uuid',
|
|
44
|
+
'subject_uuid',
|
|
45
|
+
'subject_type',
|
|
46
|
+
'rating',
|
|
47
|
+
'content',
|
|
48
|
+
'rejected',
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The attributes that should be cast to native types.
|
|
53
|
+
*
|
|
54
|
+
* @var array
|
|
55
|
+
*/
|
|
56
|
+
protected $casts = [];
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Dynamic attributes that are appended to object
|
|
60
|
+
*
|
|
61
|
+
* @var array
|
|
62
|
+
*/
|
|
63
|
+
protected $appends = [];
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Attributes that is filterable on this model
|
|
67
|
+
*
|
|
68
|
+
* @var array
|
|
69
|
+
*/
|
|
70
|
+
protected $filterParams = ['store'];
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
74
|
+
*/
|
|
75
|
+
public function createdBy()
|
|
76
|
+
{
|
|
77
|
+
return $this->setConnection(config('fleetbase.connection.db'))->belongsTo(User::class);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
82
|
+
*/
|
|
83
|
+
public function customer()
|
|
84
|
+
{
|
|
85
|
+
return $this->setConnection(config('fleetbase.connection.db'))->belongsTo(Contact::class);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
90
|
+
*/
|
|
91
|
+
public function votes()
|
|
92
|
+
{
|
|
93
|
+
return $this->hasMany(Vote::class, 'subject_uuid');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
98
|
+
*/
|
|
99
|
+
public function files()
|
|
100
|
+
{
|
|
101
|
+
return $this->setConnection(config('fleetbase.connection.db'))->hasMany(File::class, 'subject_uuid');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
106
|
+
*/
|
|
107
|
+
public function photos()
|
|
108
|
+
{
|
|
109
|
+
return $this->files()->where('type', 'storefront_review_upload')->where('content_type', 'like', 'image%');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
114
|
+
*/
|
|
115
|
+
public function videos()
|
|
116
|
+
{
|
|
117
|
+
return $this->files()->where('type', 'storefront_review_upload')->where('content_type', 'like', 'video%');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
|
|
122
|
+
*/
|
|
123
|
+
public function subject()
|
|
124
|
+
{
|
|
125
|
+
return $this->morphTo(__FUNCTION__, 'subject_type', 'subject_uuid');
|
|
126
|
+
}
|
|
127
|
+
}
|