Compare commits

..

1 Commits
v1.0.0 ... main

649 changed files with 3316 additions and 6146 deletions

View File

@@ -8,22 +8,18 @@
## Architecture ## Architecture
This project uses a domain-oriented structure grouped by business area under This project uses a domain-oriented structure under `app/Domains`.
`app/Domains`. Cross-cutting modules live under `app/Shared`.
Business domains must live in: Each domain must live in:
```text ```text
app/Domains/<Area>/<DomainName>/ app/Domains/<DomainName>/
``` ```
The current areas are `Core`, `Commerce`, and `Ticketing`. Cross-cutting
modules live in `app/Shared/<ModuleName>/`.
Supported folders inside each domain: Supported folders inside each domain:
```text ```text
app/Domains/<Area>/<DomainName>/ app/Domains/<DomainName>/
├── Models/ ├── Models/
├── Controllers/ ├── Controllers/
├── Requests/ ├── Requests/
@@ -38,28 +34,22 @@ app/Domains/<Area>/<DomainName>/
- Root API routes live in `routes/api.php`. - Root API routes live in `routes/api.php`.
- `routes/api.php` should act as an aggregator only. - `routes/api.php` should act as an aggregator only.
- Each business domain defines its own routes in - Each domain defines its own routes in `app/Domains/<DomainName>/routes/api.php`.
`app/Domains/<Area>/<DomainName>/routes/api.php`.
- Shared modules that expose routes define them in
`app/Shared/<ModuleName>/routes/api.php`.
## Namespaces ## Namespaces
Use this namespace pattern: Use this namespace pattern:
```php ```php
App\Domains\<Area>\<DomainName>\Models App\Domains\<DomainName>\Models
App\Domains\<Area>\<DomainName>\Controllers App\Domains\<DomainName>\Controllers
App\Domains\<Area>\<DomainName>\Requests App\Domains\<DomainName>\Requests
App\Domains\<Area>\<DomainName>\Resources App\Domains\<DomainName>\Resources
App\Domains\<Area>\<DomainName>\Services App\Domains\<DomainName>\Services
App\Domains\<Area>\<DomainName>\Policies App\Domains\<DomainName>\Policies
App\Domains\<Area>\<DomainName>\Exceptions App\Domains\<DomainName>\Exceptions
``` ```
For cross-cutting modules, use `App\Shared\<ModuleName>\...`. Reusable enums
and rules live directly under `App\Shared`.
## Responsibilities ## Responsibilities
- `Models/`: Eloquent models and model relationships. - `Models/`: Eloquent models and model relationships.
@@ -90,19 +80,13 @@ and rules live directly under `App\Shared`.
- Namespace, folder, and class names must stay aligned. - Namespace, folder, and class names must stay aligned.
- Route files should be named `api.php`. - Route files should be named `api.php`.
## Current Areas and Modules ## Current Domains
- `Core`: `Administrator`, `Auth`, `Authorization`, `Bootstrap`, `Client`, - `Tenant`
`Menu`, `Staff`, `Tenant`. - `Product`
- `Commerce`: `Cart`, `Catalog`, `Purchase`, `Sale`.
- `Ticketing`: `Desfile`, `Event`, `FiestaFutbolInfantil`, `Ticket`.
- `Shared`: `Attachable`, `Forms`, `Integration`, `Logging`, `MailTest`,
`Notification`, `StorageTest`, plus shared enums and rules.
## Notes For Future Changes ## Notes For Future Changes
- New features should be added inside the corresponding domain first. - New features should be added inside the corresponding domain first.
- Add new business features to the appropriate area under `app/Domains`. - If a concern does not belong to an existing domain, create a new domain under `app/Domains`.
- Keep generic reusable code in `app/Shared`; do not use it as a catch-all for
business features.
- Avoid placing new business code in `app/Http/Controllers` or `app/Models`. - Avoid placing new business code in `app/Http/Controllers` or `app/Models`.

View File

@@ -2,7 +2,7 @@
"info": { "info": {
"_postman_id": "76fd6fd2-53b9-4d92-8e02-1ddcc6207fa2", "_postman_id": "76fd6fd2-53b9-4d92-8e02-1ddcc6207fa2",
"name": "ShopIt API — Complete", "name": "ShopIt API — Complete",
"description": "Colección canónica generada desde las rutas reales de Laravel. Incluye 136 operaciones HTTP, presets de configuración para cada integración, ejemplos de payload, filtros, archivos y tokens separados para Storefront, Admin App y Scanner.\n\nUso rápido:\n1. Ajustá `base_url` y las credenciales.\n2. Ejecutá el Login de la aplicación correspondiente; el token se guarda automáticamente.\n3. Ajustá los IDs y códigos de las variables de colección.\n\nRegeneración: `php postman/generate-shopit-collection.php`.", "description": "Colección canónica generada desde las rutas reales de Laravel. Incluye 137 operaciones HTTP, presets de configuración para cada integración, ejemplos de payload, filtros, archivos y tokens separados para Storefront, Admin App y Scanner.\n\nUso rápido:\n1. Ajustá `base_url` y las credenciales.\n2. Ejecutá el Login de la aplicación correspondiente; el token se guarda automáticamente.\n3. Ajustá los IDs y códigos de las variables de colección.\n\nRegeneración: `php postman/generate-shopit-collection.php`.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
}, },
"item": [ "item": [
@@ -678,6 +678,57 @@
}, },
"response": [] "response": []
}, },
{
"name": "Create Catalog",
"request": {
"method": "POST",
"header": [
{
"key": "Accept",
"value": "application/json",
"type": "text"
},
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"description": "Ruta Laravel: `POST /api/tenants/{tenant:codigo}/catalog-items`\n\nControlador: `App\\Domains\\Catalog\\Controllers\\CatalogController@store`",
"url": {
"raw": "{{base_url}}/api/tenants/{{tenant_code}}/catalog-items?q=demo&page=1",
"host": [
"{{base_url}}"
],
"path": [
"api",
"tenants",
"{{tenant_code}}",
"catalog-items"
],
"query": [
{
"key": "q",
"value": "demo"
},
{
"key": "page",
"value": "1"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"type\": \"standard\",\n \"category_id\": {{category_id}},\n \"slug\": \"producto-demo\",\n \"nombre\": \"Producto Demo\",\n \"descripcion\": \"Producto creado desde Postman\",\n \"precio\": 10000,\n \"inventory_policy\": \"tracked\",\n \"inventory_subject\": \"product\",\n \"max_units_per_user\": 5,\n \"has_tickets\": false,\n \"real_stock\": 100,\n \"images\": [\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\"\n ]\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": []
},
{ {
"name": "Get Catalog", "name": "Get Catalog",
"request": { "request": {
@@ -1856,7 +1907,7 @@
"description": "Consulta, configura o desvincula cualquier integración usando `{{integration_code}}`.", "description": "Consulta, configura o desvincula cualquier integración usando `{{integration_code}}`.",
"item": [ "item": [
{ {
"name": "List Admin Website Type Integration", "name": "List Website Type Integration",
"request": { "request": {
"method": "GET", "method": "GET",
"header": [ "header": [
@@ -1866,16 +1917,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `GET /api/admin-website-types/{adminWebsiteType:codigo}/integrations`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@index`\n\nRequiere autenticación Sanctum.", "description": "Ruta Laravel: `GET /api/website-types/{websiteType:codigo}/integrations`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@index`\n\nRequiere autenticación Sanctum.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations" "integrations"
] ]
}, },
@@ -1893,7 +1944,7 @@
"response": [] "response": []
}, },
{ {
"name": "Get Admin Website Type Integration", "name": "Get Website Type Integration",
"request": { "request": {
"method": "GET", "method": "GET",
"header": [ "header": [
@@ -1903,16 +1954,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `GET /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@show`\n\nRequiere autenticación Sanctum.", "description": "Ruta Laravel: `GET /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@show`\n\nRequiere autenticación Sanctum.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/{{integration_code}}", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/{{integration_code}}",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"{{integration_code}}" "{{integration_code}}"
] ]
@@ -1946,16 +1997,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `PUT /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.", "description": "Ruta Laravel: `PUT /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/{{integration_code}}", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/{{integration_code}}",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"{{integration_code}}" "{{integration_code}}"
] ]
@@ -1983,7 +2034,7 @@
"response": [] "response": []
}, },
{ {
"name": "Delete Admin Website Type Integration", "name": "Delete Website Type Integration",
"request": { "request": {
"method": "DELETE", "method": "DELETE",
"header": [ "header": [
@@ -1993,16 +2044,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `DELETE /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@destroy`\n\nRequiere autenticación Sanctum.", "description": "Ruta Laravel: `DELETE /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@destroy`\n\nRequiere autenticación Sanctum.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/{{integration_code}}", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/{{integration_code}}",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"{{integration_code}}" "{{integration_code}}"
] ]
@@ -2042,16 +2093,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `PUT /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `email`. Configura el transporte SMTP usado para el envío de correos.", "description": "Ruta Laravel: `PUT /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `email`. Configura el transporte SMTP usado para el envío de correos.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/email", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/email",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"email" "email"
] ]
@@ -2100,16 +2151,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `PUT /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `telepagos`. Configura las credenciales productivas de Telepagos.", "description": "Ruta Laravel: `PUT /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `telepagos`. Configura las credenciales productivas de Telepagos.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/telepagos", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/telepagos",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"telepagos" "telepagos"
] ]
@@ -2158,16 +2209,16 @@
"type": "text" "type": "text"
} }
], ],
"description": "Ruta Laravel: `PUT /api/admin-website-types/{adminWebsiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\AdminWebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `telepagos_homo`. Configura las credenciales del entorno de homologación de Telepagos.", "description": "Ruta Laravel: `PUT /api/website-types/{websiteType:codigo}/integrations/{integration_code}`\n\nControlador: `App\\Domains\\Integration\\Controllers\\WebsiteTypeIntegrationController@store`\n\nRequiere autenticación Sanctum.\n\nPreset: `telepagos_homo`. Configura las credenciales del entorno de homologación de Telepagos.",
"url": { "url": {
"raw": "{{base_url}}/api/admin-website-types/{{admin_website_type_code}}/integrations/telepagos_homo", "raw": "{{base_url}}/api/website-types/{{website_type_code}}/integrations/telepagos_homo",
"host": [ "host": [
"{{base_url}}" "{{base_url}}"
], ],
"path": [ "path": [
"api", "api",
"admin-website-types", "website-types",
"{{admin_website_type_code}}", "{{website_type_code}}",
"integrations", "integrations",
"telepagos_homo" "telepagos_homo"
] ]
@@ -2499,7 +2550,7 @@
}, },
"body": { "body": {
"mode": "raw", "mode": "raw",
"raw": "{\n \"client_id\": {{client_id}},\n \"codigo\": \"{{tenant_code}}\",\n \"nombre\": \"Tenant Demo\",\n \"dominio\": \"{{tenant_domain}}\",\n \"site_title\": \"ShopIt Demo\",\n \"primary_color\": \"#111827\",\n \"secondary_color\": \"#2563EB\",\n \"danger_color\": \"#DC2626\",\n \"success_color\": \"#16A34A\",\n \"header_bg_color\": \"#FFFFFF\",\n \"footer_bg_color\": \"#111827\",\n \"header_logo\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\",\n \"footer_logo\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\",\n \"search_product_layout\": \"column_with_image\",\n \"search_group_layout\": \"paginated\",\n \"search_items_per_page\": 12,\n \"display_categories\": true,\n \"display_seach_bar\": true,\n \"display_cart\": true,\n \"cart_editing_policy\": \"full\",\n \"admin_website_type_code\": \"shopit\",\n \"storefront_website_type_code\": \"shopit\"\n}", "raw": "{\n \"client_id\": {{client_id}},\n \"codigo\": \"{{tenant_code}}\",\n \"nombre\": \"Tenant Demo\",\n \"dominio\": \"{{tenant_domain}}\",\n \"site_title\": \"ShopIt Demo\",\n \"primary_color\": \"#111827\",\n \"secondary_color\": \"#2563EB\",\n \"danger_color\": \"#DC2626\",\n \"success_color\": \"#16A34A\",\n \"header_bg_color\": \"#FFFFFF\",\n \"footer_bg_color\": \"#111827\",\n \"header_logo\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\",\n \"footer_logo\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\",\n \"search_product_layout\": \"column_with_image\",\n \"search_group_layout\": \"paginated\",\n \"search_items_per_page\": 12,\n \"display_categories\": true,\n \"display_seach_bar\": true,\n \"display_cart\": true,\n \"cart_editing_policy\": \"full\",\n \"website_type_code\": \"shopit\"\n}",
"options": { "options": {
"raw": { "raw": {
"language": "json" "language": "json"
@@ -6217,7 +6268,7 @@
"type": "string" "type": "string"
}, },
{ {
"key": "storefront_website_type_code", "key": "website_type_code",
"value": "shopit", "value": "shopit",
"type": "string" "type": "string"
}, },
@@ -6330,10 +6381,6 @@
"key": "s3_path", "key": "s3_path",
"value": "postman/test-file.png", "value": "postman/test-file.png",
"type": "string" "type": "string"
},
{
"key": "admin_website_type_code",
"value": "shopit"
} }
] ]
} }

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Administrator\Controllers; namespace App\Domains\Administrator\Controllers;
use App\Domains\Core\Administrator\Requests\StoreAdministratorRequest; use App\Domains\Administrator\Requests\StoreAdministratorRequest;
use App\Domains\Core\Administrator\Requests\UpdateAdministratorRequest; use App\Domains\Administrator\Requests\UpdateAdministratorRequest;
use App\Domains\Core\Administrator\Resources\AdministratorResource; use App\Domains\Administrator\Resources\AdministratorResource;
use App\Domains\Core\Administrator\Services\AdministratorService; use App\Domains\Administrator\Services\AdministratorService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection; use Illuminate\Http\Resources\Json\AnonymousResourceCollection;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Administrator\Requests; namespace App\Domains\Administrator\Requests;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Administrator\Requests; namespace App\Domains\Administrator\Requests;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Administrator\Resources; namespace App\Domains\Administrator\Resources;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace App\Domains\Core\Administrator\Services; namespace App\Domains\Administrator\Services;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;

View File

@@ -1,6 +1,6 @@
<?php <?php
use App\Domains\Core\Administrator\Controllers\AdminAppAdministratorController; use App\Domains\Administrator\Controllers\AdminAppAdministratorController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('v1/adminapp/tenant') Route::prefix('v1/adminapp/tenant')

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Shared\Attachable\Enums; namespace App\Domains\Attachable\Enums;
enum AttachmentType: string enum AttachmentType: string
{ {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Shared\Attachable\Exceptions; namespace App\Domains\Attachable\Exceptions;
use RuntimeException; use RuntimeException;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Shared\Attachable\Models; namespace App\Domains\Attachable\Models;
use App\Shared\Attachable\Enums\AttachmentType; use App\Domains\Attachable\Enums\AttachmentType;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Shared\Attachable\Models; namespace App\Domains\Attachable\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Shared\Attachable\Services; namespace App\Domains\Attachable\Services;
use App\Shared\Attachable\Enums\AttachmentType; use App\Domains\Attachable\Enums\AttachmentType;
use App\Shared\Attachable\Exceptions\AttachmentStorageException; use App\Domains\Attachable\Exceptions\AttachmentStorageException;
use App\Shared\Attachable\Models\Attachment; use App\Domains\Attachable\Models\Attachment;
use App\Shared\Attachable\Models\AttachmentCrop; use App\Domains\Attachable\Models\AttachmentCrop;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\AdminAppLoginRequest; use App\Domains\Auth\Requests\AdminAppLoginRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\PasswordLoginService; use App\Domains\Auth\Services\PasswordLoginService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Auth\Resources\AdminAppMeResource; use App\Domains\Auth\Resources\AdminAppMeResource;
use App\Domains\Core\Auth\Services\AdminAppContextService; use App\Domains\Auth\Services\AdminAppContextService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Requests\AdminAppCreateResetPasswordAttemptRequest; use App\Domains\Auth\Requests\AdminAppCreateResetPasswordAttemptRequest;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Requests\CreateResetPasswordAttemptRequest; use App\Domains\Auth\Requests\CreateResetPasswordAttemptRequest;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Requests\ScannerCreateResetPasswordAttemptRequest; use App\Domains\Auth\Requests\ScannerCreateResetPasswordAttemptRequest;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Services\GoogleAuthService; use App\Domains\Auth\Services\GoogleAuthService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\GoogleTokenExchangeRequest; use App\Domains\Auth\Requests\GoogleTokenExchangeRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\GoogleAuthService; use App\Domains\Auth\Services\GoogleAuthService;
use App\Domains\Commerce\Cart\Services\GuestCartMergeService; use App\Domains\Cart\Services\GuestCartMergeService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Cookie; use Illuminate\Support\Facades\Cookie;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\LoginUserRequest; use App\Domains\Auth\Requests\LoginUserRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\PasswordLoginService; use App\Domains\Auth\Services\PasswordLoginService;
use App\Domains\Commerce\Cart\Services\GuestCartMergeService; use App\Domains\Cart\Services\GuestCartMergeService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Cookie; use Illuminate\Support\Facades\Cookie;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\RegisterUserRequest; use App\Domains\Auth\Requests\RegisterUserRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\RegisterUserService; use App\Domains\Auth\Services\RegisterUserService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Requests\ResetPasswordRequest; use App\Domains\Auth\Requests\ResetPasswordRequest;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\ScannerLoginRequest; use App\Domains\Auth\Requests\ScannerLoginRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\PasswordLoginService; use App\Domains\Auth\Services\PasswordLoginService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Auth\Resources\ScannerMeResource; use App\Domains\Auth\Resources\ScannerMeResource;
use App\Domains\Core\Auth\Services\ScannerContextService; use App\Domains\Auth\Services\ScannerContextService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Requests\UpdateProfileRequest; use App\Domains\Auth\Requests\UpdateProfileRequest;
use App\Domains\Core\Auth\Resources\UserResource; use App\Domains\Auth\Resources\UserResource;
use App\Domains\Core\Auth\Services\ProfileService; use App\Domains\Auth\Services\ProfileService;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
class UpdateProfileController class UpdateProfileController

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Auth\Controllers; namespace App\Domains\Auth\Controllers;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Requests\ValidateResetPasswordAttemptRequest; use App\Domains\Auth\Requests\ValidateResetPasswordAttemptRequest;
use App\Domains\Core\Auth\Services\ResetPasswordAttemptService; use App\Domains\Auth\Services\ResetPasswordAttemptService;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Exceptions; namespace App\Domains\Auth\Exceptions;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;
use RuntimeException; use RuntimeException;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Models; namespace App\Domains\Auth\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Models; namespace App\Domains\Auth\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden; use Illuminate\Database\Eloquent\Attributes\Hidden;

View File

@@ -1,13 +1,13 @@
<?php <?php
namespace App\Domains\Core\Auth\Models; namespace App\Domains\Auth\Models;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Domains\Core\Authorization\Models\Role; use App\Domains\Authorization\Models\Role;
use App\Domains\Commerce\Catalog\Models\Category; use App\Domains\Catalog\Models\Category;
use App\Domains\Ticketing\Event\Models\EventDateChangeView; use App\Domains\Event\Models\EventDateChangeView;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Domains\Ticketing\Ticket\Models\ScanAttempt; use App\Domains\Ticket\Models\ScanAttempt;
use Database\Factories\UserFactory; use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden; use Illuminate\Database\Eloquent\Attributes\Hidden;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Password; use Illuminate\Validation\Rules\Password;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,5 +1,5 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
class ScannerLoginRequest extends AdminAppLoginRequest {} class ScannerLoginRequest extends AdminAppLoginRequest {}

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Auth\Requests; namespace App\Domains\Auth\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Core\Auth\Resources; namespace App\Domains\Auth\Resources;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Tenant\Resources\TenantResource; use App\Domains\Tenant\Resources\TenantResource;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Core\Auth\Resources; namespace App\Domains\Auth\Resources;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Tenant\Resources\TenantResource; use App\Domains\Tenant\Resources\TenantResource;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Resources; namespace App\Domains\Auth\Resources;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
class AdminAppContextService class AdminAppContextService
{ {

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
class AdminCredentialVerifier class AdminCredentialVerifier

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Shared\Notification\Events\UserRegistered; use App\Domains\Notification\Events\UserRegistered;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Domains\Core\Tenant\Support\TenantDomainNormalizer; use App\Domains\Tenant\Support\TenantDomainNormalizer;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;

View File

@@ -1,14 +1,14 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Exceptions\AccountLockedException; use App\Domains\Auth\Exceptions\AccountLockedException;
use App\Domains\Core\Auth\Models\LoginAttempt; use App\Domains\Auth\Models\LoginAttempt;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Authorization\Enums\PermissionCode; use App\Domains\Authorization\Enums\PermissionCode;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Shared\Notification\Events\PasswordResetRequested; use App\Domains\Notification\Events\PasswordResetRequested;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
class ProfileService class ProfileService

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Shared\Notification\Events\UserRegistered; use App\Domains\Notification\Events\UserRegistered;
class RegisterUserService class RegisterUserService
{ {

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\ResetPasswordAttempt; use App\Domains\Auth\Models\ResetPasswordAttempt;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Shared\Notification\Events\PasswordResetRequested; use App\Domains\Notification\Events\PasswordResetRequested;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Throwable; use Throwable;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Auth\Services; namespace App\Domains\Auth\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
class ScannerContextService class ScannerContextService
{ {

View File

@@ -1,10 +1,10 @@
<?php <?php
use App\Domains\Core\Auth\Controllers\AdminAppLoginController; use App\Domains\Auth\Controllers\AdminAppLoginController;
use App\Domains\Core\Auth\Controllers\AdminAppMeController; use App\Domains\Auth\Controllers\AdminAppMeController;
use App\Domains\Core\Auth\Controllers\CreateAdminAppResetPasswordAttemptController; use App\Domains\Auth\Controllers\CreateAdminAppResetPasswordAttemptController;
use App\Domains\Core\Auth\Controllers\ResetPasswordController; use App\Domains\Auth\Controllers\ResetPasswordController;
use App\Domains\Core\Auth\Controllers\ValidateResetPasswordAttemptController; use App\Domains\Auth\Controllers\ValidateResetPasswordAttemptController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('v1/adminapp')->group(function (): void { Route::prefix('v1/adminapp')->group(function (): void {

View File

@@ -1,14 +1,14 @@
<?php <?php
use App\Domains\Core\Auth\Controllers\CreateResetPasswordAttemptController; use App\Domains\Auth\Controllers\CreateResetPasswordAttemptController;
use App\Domains\Core\Auth\Controllers\GoogleTokenExchangeController; use App\Domains\Auth\Controllers\GoogleTokenExchangeController;
use App\Domains\Core\Auth\Controllers\LoginController; use App\Domains\Auth\Controllers\LoginController;
use App\Domains\Core\Auth\Controllers\LogoutController; use App\Domains\Auth\Controllers\LogoutController;
use App\Domains\Core\Auth\Controllers\MeController; use App\Domains\Auth\Controllers\MeController;
use App\Domains\Core\Auth\Controllers\RegisterController; use App\Domains\Auth\Controllers\RegisterController;
use App\Domains\Core\Auth\Controllers\ResetPasswordController; use App\Domains\Auth\Controllers\ResetPasswordController;
use App\Domains\Core\Auth\Controllers\UpdateProfileController; use App\Domains\Auth\Controllers\UpdateProfileController;
use App\Domains\Core\Auth\Controllers\ValidateResetPasswordAttemptController; use App\Domains\Auth\Controllers\ValidateResetPasswordAttemptController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::post('/register', RegisterController::class); Route::post('/register', RegisterController::class);

View File

@@ -1,10 +1,10 @@
<?php <?php
use App\Domains\Core\Auth\Controllers\CreateScannerResetPasswordAttemptController; use App\Domains\Auth\Controllers\CreateScannerResetPasswordAttemptController;
use App\Domains\Core\Auth\Controllers\ResetPasswordController; use App\Domains\Auth\Controllers\ResetPasswordController;
use App\Domains\Core\Auth\Controllers\ScannerLoginController; use App\Domains\Auth\Controllers\ScannerLoginController;
use App\Domains\Core\Auth\Controllers\ScannerMeController; use App\Domains\Auth\Controllers\ScannerMeController;
use App\Domains\Core\Auth\Controllers\ValidateResetPasswordAttemptController; use App\Domains\Auth\Controllers\ValidateResetPasswordAttemptController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('v1/scanner')->group(function (): void { Route::prefix('v1/scanner')->group(function (): void {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Authorization\Enums; namespace App\Domains\Authorization\Enums;
enum PermissionCode: string enum PermissionCode: string
{ {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Authorization\Enums; namespace App\Domains\Authorization\Enums;
enum RoleCode: string enum RoleCode: string
{ {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Authorization\Models; namespace App\Domains\Authorization\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Authorization\Models; namespace App\Domains\Authorization\Models;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Core\Menu\Models\Menu; use App\Domains\Menu\Models\Menu;
use App\Domains\Core\Menu\Models\MenuRole; use App\Domains\Menu\Models\MenuRole;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Core\Authorization\Models; namespace App\Domains\Authorization\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Controllers; namespace App\Domains\Bootstrap\Controllers;
use App\Domains\Core\Bootstrap\Requests\AdminAppBootstrapRequest; use App\Domains\Bootstrap\Requests\AdminAppBootstrapRequest;
use App\Domains\Core\Bootstrap\Resources\AdminAppBootstrapResource; use App\Domains\Bootstrap\Resources\AdminAppBootstrapResource;
use App\Domains\Core\Bootstrap\Services\AdminAppBootstrapService; use App\Domains\Bootstrap\Services\AdminAppBootstrapService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
class AdminAppBootstrapController extends Controller class AdminAppBootstrapController extends Controller

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Controllers; namespace App\Domains\Bootstrap\Controllers;
use App\Domains\Core\Bootstrap\Requests\ScannerBootstrapRequest; use App\Domains\Bootstrap\Requests\ScannerBootstrapRequest;
use App\Domains\Core\Bootstrap\Resources\ScannerBootstrapResource; use App\Domains\Bootstrap\Resources\ScannerBootstrapResource;
use App\Domains\Core\Bootstrap\Services\ScannerBootstrapService; use App\Domains\Bootstrap\Services\ScannerBootstrapService;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
class ScannerBootstrapController extends Controller class ScannerBootstrapController extends Controller

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Controllers; namespace App\Domains\Bootstrap\Controllers;
use App\Domains\Core\Bootstrap\Requests\TenantBootstrapRequest; use App\Domains\Bootstrap\Requests\TenantBootstrapRequest;
use App\Domains\Core\Bootstrap\Services\TenantBootstrapService; use App\Domains\Bootstrap\Services\TenantBootstrapService;
use App\Domains\Core\Tenant\Resources\TenantResource; use App\Domains\Tenant\Resources\TenantResource;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
class TenantBootstrapController extends Controller class TenantBootstrapController extends Controller

View File

@@ -1,5 +1,5 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Requests; namespace App\Domains\Bootstrap\Requests;
class AdminAppBootstrapRequest extends TenantBootstrapRequest {} class AdminAppBootstrapRequest extends TenantBootstrapRequest {}

View File

@@ -1,5 +1,5 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Requests; namespace App\Domains\Bootstrap\Requests;
class ScannerBootstrapRequest extends TenantBootstrapRequest {} class ScannerBootstrapRequest extends TenantBootstrapRequest {}

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Requests; namespace App\Domains\Bootstrap\Requests;
use App\Domains\Core\Tenant\Support\TenantDomainNormalizer; use App\Domains\Tenant\Support\TenantDomainNormalizer;
use Closure; use Closure;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,22 +1,22 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Resources; namespace App\Domains\Bootstrap\Resources;
use App\Domains\Core\Tenant\Models\AdminWebsiteType; use App\Domains\Tenant\Models\WebsiteType;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
/** @mixin array{website_type: AdminWebsiteType} */ /** @mixin array{website_type: WebsiteType} */
class AdminAppBootstrapResource extends JsonResource class AdminAppBootstrapResource extends JsonResource
{ {
/** @return array<string, mixed> */ /** @return array<string, mixed> */
public function toArray(Request $request): array public function toArray(Request $request): array
{ {
/** @var AdminWebsiteType $websiteType */ /** @var WebsiteType $websiteType */
$websiteType = $this->resource['website_type']; $websiteType = $this->resource['website_type'];
return [ return [
'admin_website_type_code' => $websiteType->codigo, 'website_type_code' => $websiteType->codigo,
'site_title' => $websiteType->site_title, 'site_title' => $websiteType->site_title,
'primary_color' => $websiteType->primary_color, 'primary_color' => $websiteType->primary_color,
'secondary_color' => $websiteType->secondary_color, 'secondary_color' => $websiteType->secondary_color,

View File

@@ -1,5 +1,5 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Resources; namespace App\Domains\Bootstrap\Resources;
class ScannerBootstrapResource extends AdminAppBootstrapResource {} class ScannerBootstrapResource extends AdminAppBootstrapResource {}

View File

@@ -1,16 +1,16 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Services; namespace App\Domains\Bootstrap\Services;
use App\Domains\Core\Tenant\Models\AdminWebsiteType; use App\Domains\Tenant\Models\WebsiteType;
class AdminAppBootstrapService class AdminAppBootstrapService
{ {
/** @return array{website_type: AdminWebsiteType} */ /** @return array{website_type: WebsiteType} */
public function get(string $domain): array public function get(string $domain): array
{ {
return [ return [
'website_type' => AdminWebsiteType::query() 'website_type' => WebsiteType::query()
->with(['siteLogo', 'footerLogo', 'favicon']) ->with(['siteLogo', 'footerLogo', 'favicon'])
->where('dominio', $domain) ->where('dominio', $domain)
->firstOrFail(), ->firstOrFail(),

View File

@@ -1,16 +1,16 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Services; namespace App\Domains\Bootstrap\Services;
use App\Domains\Core\Tenant\Models\AdminWebsiteType; use App\Domains\Tenant\Models\WebsiteType;
class ScannerBootstrapService class ScannerBootstrapService
{ {
/** @return array{website_type: AdminWebsiteType} */ /** @return array{website_type: WebsiteType} */
public function get(string $domain): array public function get(string $domain): array
{ {
return [ return [
'website_type' => AdminWebsiteType::query() 'website_type' => WebsiteType::query()
->with(['siteLogo', 'footerLogo', 'favicon']) ->with(['siteLogo', 'footerLogo', 'favicon'])
->where('scanner_domain', $domain) ->where('scanner_domain', $domain)
->firstOrFail(), ->firstOrFail(),

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Core\Bootstrap\Services; namespace App\Domains\Bootstrap\Services;
use App\Domains\Core\Authorization\Enums\RoleCode; use App\Domains\Authorization\Enums\RoleCode;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Domains\Core\Tenant\Services\TenantInformationService; use App\Domains\Tenant\Services\TenantInformationService;
use App\Domains\Core\Tenant\Support\TenantDomainNormalizer; use App\Domains\Tenant\Support\TenantDomainNormalizer;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
class TenantBootstrapService class TenantBootstrapService
@@ -37,8 +37,7 @@ class TenantBootstrapService
'roles', 'roles',
fn ($query) => $query->where('codigo', RoleCode::User->value) fn ($query) => $query->where('codigo', RoleCode::User->value)
), ),
$tenant->storefront_website_type_code === 'onticket_multi_event' 'categories' => fn ($query) => $query->orderBy('nombre'),
? 'eventCategories' : 'categories' => fn ($query) => $query->orderBy('nombre'),
] ]
); );
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
use App\Domains\Core\Bootstrap\Controllers\AdminAppBootstrapController; use App\Domains\Bootstrap\Controllers\AdminAppBootstrapController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::get( Route::get(

View File

@@ -1,6 +1,6 @@
<?php <?php
use App\Domains\Core\Bootstrap\Controllers\TenantBootstrapController; use App\Domains\Bootstrap\Controllers\TenantBootstrapController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::get('tenants/bootstrap', TenantBootstrapController::class); Route::get('tenants/bootstrap', TenantBootstrapController::class);

View File

@@ -1,6 +1,6 @@
<?php <?php
use App\Domains\Core\Bootstrap\Controllers\ScannerBootstrapController; use App\Domains\Bootstrap\Controllers\ScannerBootstrapController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::get( Route::get(

View File

@@ -1,13 +1,13 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Controllers; namespace App\Domains\Cart\Controllers;
use App\Domains\Commerce\Cart\Models\CartItem; use App\Domains\Cart\Models\CartItem;
use App\Domains\Commerce\Cart\Requests\AddCartItemRequest; use App\Domains\Cart\Requests\AddCartItemRequest;
use App\Domains\Commerce\Cart\Requests\UpdateCartItemQuantityRequest; use App\Domains\Cart\Requests\UpdateCartItemQuantityRequest;
use App\Domains\Commerce\Cart\Resources\CartResource; use App\Domains\Cart\Resources\CartResource;
use App\Domains\Commerce\Cart\Services\CartService; use App\Domains\Cart\Services\CartService;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View File

@@ -1,17 +1,17 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Models; namespace App\Domains\Cart\Models;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Commerce\Catalog\Models\CatalogItem; use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Commerce\Catalog\Models\Inventory; use App\Domains\Catalog\Models\Inventory;
use App\Domains\Commerce\Catalog\Models\StockReservation; use App\Domains\Catalog\Models\StockReservation;
use App\Domains\Commerce\Catalog\Models\Variant; use App\Domains\Catalog\Models\Variant;
use App\Domains\Commerce\Catalog\Services\CatalogInventoryService; use App\Domains\Catalog\Services\CatalogInventoryService;
use App\Domains\Commerce\Catalog\Services\StockReservationService; use App\Domains\Catalog\Services\StockReservationService;
use App\Domains\Commerce\Purchase\Models\Purchase; use App\Domains\Purchase\Models\Purchase;
use App\Domains\Commerce\Purchase\Services\UserPurchaseLimitService; use App\Domains\Purchase\Services\UserPurchaseLimitService;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -375,7 +375,7 @@ class Cart extends Model
): CatalogItem|Variant { ): CatalogItem|Variant {
$catalogItemQuery = CatalogItem::query() $catalogItemQuery = CatalogItem::query()
->whereKey($catalogItemId) ->whereKey($catalogItemId)
->forTenantCatalog($this->tenant()->firstOrFail()); ->where('tenant_code', $this->tenant_codigo);
if ($lockForUpdate) { if ($lockForUpdate) {
$catalogItemQuery->lockForUpdate(); $catalogItemQuery->lockForUpdate();

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Models; namespace App\Domains\Cart\Models;
use App\Domains\Commerce\Catalog\Models\CatalogItem; use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Commerce\Catalog\Models\Variant; use App\Domains\Catalog\Models\Variant;
use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Requests; namespace App\Domains\Cart\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Requests; namespace App\Domains\Cart\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Resources; namespace App\Domains\Cart\Resources;
use App\Domains\Commerce\Cart\Models\CartItem; use App\Domains\Cart\Models\CartItem;
use App\Domains\Commerce\Catalog\Enums\InventoryPolicy; use App\Domains\Catalog\Enums\InventoryPolicy;
use App\Domains\Commerce\Catalog\Models\Variant; use App\Domains\Catalog\Models\Variant;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Resources; namespace App\Domains\Cart\Resources;
use App\Domains\Commerce\Cart\Models\Cart; use App\Domains\Cart\Models\Cart;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Services; namespace App\Domains\Cart\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Commerce\Cart\Models\Cart; use App\Domains\Cart\Models\Cart;
use App\Domains\Commerce\Catalog\Exceptions\StockReservationExpiredException; use App\Domains\Catalog\Exceptions\StockReservationExpiredException;
use App\Domains\Commerce\Catalog\Services\ExpireStockReservationsService; use App\Domains\Catalog\Services\ExpireStockReservationsService;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Services; namespace App\Domains\Cart\Services;
use App\Domains\Commerce\Cart\Models\Cart; use App\Domains\Cart\Models\Cart;
use App\Domains\Commerce\Cart\Models\CartItem; use App\Domains\Cart\Models\CartItem;
use App\Domains\Commerce\Catalog\Models\Variant; use App\Domains\Catalog\Models\Variant;
use App\Domains\Commerce\Catalog\Services\CatalogInventoryService; use App\Domains\Catalog\Services\CatalogInventoryService;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class CartVariantReplacementService class CartVariantReplacementService

View File

@@ -1,9 +1,9 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Services; namespace App\Domains\Cart\Services;
use App\Domains\Core\Auth\Models\User; use App\Domains\Auth\Models\User;
use App\Domains\Commerce\Cart\Models\Cart; use App\Domains\Cart\Models\Cart;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class GuestCartMergeService class GuestCartMergeService

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace App\Domains\Commerce\Cart\Services; namespace App\Domains\Cart\Services;
use App\Domains\Commerce\Cart\Models\Cart; use App\Domains\Cart\Models\Cart;
use App\Domains\Commerce\Catalog\Models\StockReservation; use App\Domains\Catalog\Models\StockReservation;
use App\Domains\Commerce\Catalog\Services\StockReservationService; use App\Domains\Catalog\Services\StockReservationService;
use App\Domains\Commerce\Purchase\Models\Purchase; use App\Domains\Purchase\Models\Purchase;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;

View File

@@ -1,6 +1,6 @@
<?php <?php
use App\Domains\Commerce\Cart\Controllers\CartController; use App\Domains\Cart\Controllers\CartController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('tenants/{tenant:codigo}') Route::prefix('tenants/{tenant:codigo}')

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace App\Domains\Commerce\Catalog\Controllers\AdminApp; namespace App\Domains\Catalog\Controllers\AdminApp;
use App\Domains\Commerce\Catalog\Models\FeaturedGroup; use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Commerce\Catalog\Requests\AdminApp\UpsertOnTicketFeaturedGroupRequest; use App\Domains\Catalog\Requests\AdminApp\UpsertOnTicketFeaturedGroupRequest;
use App\Domains\Commerce\Catalog\Resources\AdminApp\OnTicketFeaturedGroupResource; use App\Domains\Catalog\Resources\AdminApp\OnTicketFeaturedGroupResource;
use App\Domains\Commerce\Catalog\Services\OnTicketFeaturedGroupService; use App\Domains\Catalog\Services\OnTicketFeaturedGroupService;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -58,7 +58,7 @@ class OnTicketFeaturedGroupController extends Controller
{ {
$tenant = $request->user()->tenant()->firstOrFail(); $tenant = $request->user()->tenant()->firstOrFail();
abort_unless(in_array($tenant->storefront_website_type_code, ['onticket', 'onticket_multi_event'], true), 404); abort_unless($tenant->website_type_code === 'onticket', 404);
return $tenant; return $tenant;
} }

View File

@@ -1,25 +1,27 @@
<?php <?php
namespace App\Domains\Commerce\Catalog\Controllers; namespace App\Domains\Catalog\Controllers;
use App\Domains\Commerce\Cart\Services\CartService; use App\Domains\Cart\Services\CartService;
use App\Domains\Commerce\Catalog\Models\CatalogItem; use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Commerce\Catalog\Models\Category; use App\Domains\Catalog\Models\Category;
use App\Domains\Commerce\Catalog\Models\FeaturedGroup; use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Commerce\Catalog\Requests\CatalogItemDetailRequest; use App\Domains\Catalog\Requests\CatalogItemDetailRequest;
use App\Domains\Commerce\Catalog\Requests\CatalogVariantOptionsRequest; use App\Domains\Catalog\Requests\CatalogVariantOptionsRequest;
use App\Domains\Commerce\Catalog\Requests\CategoryPageRequest; use App\Domains\Catalog\Requests\CategoryPageRequest;
use App\Domains\Commerce\Catalog\Requests\FeaturedGroupPageRequest; use App\Domains\Catalog\Requests\FeaturedGroupPageRequest;
use App\Domains\Commerce\Catalog\Requests\SearchCatalogItemsRequest; use App\Domains\Catalog\Requests\SearchCatalogItemsRequest;
use App\Domains\Commerce\Catalog\Resources\CatalogFeaturedGroupResource; use App\Domains\Catalog\Requests\StoreCatalogItemRequest;
use App\Domains\Commerce\Catalog\Resources\CatalogItemDetailResource; use App\Domains\Catalog\Resources\CatalogFeaturedGroupResource;
use App\Domains\Commerce\Catalog\Resources\CatalogSearchItemResource; use App\Domains\Catalog\Resources\CatalogItemDetailResource;
use App\Domains\Commerce\Catalog\Resources\CatalogVariantOptionsResource; use App\Domains\Catalog\Resources\CatalogItemResource;
use App\Domains\Commerce\Catalog\Services\CatalogItemAllowanceService; use App\Domains\Catalog\Resources\CatalogSearchItemResource;
use App\Domains\Commerce\Catalog\Services\CatalogService; use App\Domains\Catalog\Resources\CatalogVariantOptionsResource;
use App\Domains\Commerce\Catalog\Services\FeaturedGroupService; use App\Domains\Catalog\Services\CatalogItemAllowanceService;
use App\Domains\Commerce\Catalog\Services\VariantSelectionService; use App\Domains\Catalog\Services\CatalogService;
use App\Domains\Core\Tenant\Models\Tenant; use App\Domains\Catalog\Services\FeaturedGroupService;
use App\Domains\Catalog\Services\VariantSelectionService;
use App\Domains\Tenant\Models\Tenant;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -38,7 +40,7 @@ class CatalogController extends Controller
return response()->json($featuredGroups->map( return response()->json($featuredGroups->map(
fn (FeaturedGroup $featuredGroup): array => (new CatalogFeaturedGroupResource( fn (FeaturedGroup $featuredGroup): array => (new CatalogFeaturedGroupResource(
$featuredGroup, $featuredGroup,
$featuredGroupService->itemsResponse($featuredGroup, $tenant, 1, $this->userId($request)), $featuredGroupService->itemsResponse($featuredGroup, 1, $this->userId($request)),
))->resolve() ))->resolve()
)); ));
} }
@@ -100,7 +102,6 @@ class CatalogController extends Controller
return response()->json($featuredGroupService->itemsResponse( return response()->json($featuredGroupService->itemsResponse(
$featuredGroup, $featuredGroup,
$tenant,
$page, $page,
$this->userId($request), $this->userId($request),
)); ));
@@ -113,8 +114,7 @@ class CatalogController extends Controller
CatalogService $catalogService, CatalogService $catalogService,
CatalogItemAllowanceService $allowances, CatalogItemAllowanceService $allowances,
): CatalogItemDetailResource { ): CatalogItemDetailResource {
abort_unless($catalogItem->tenant_code === $tenant->codigo abort_unless($catalogItem->tenant_code === $tenant->codigo, 404);
&& ($tenant->active_event_id === null || $catalogItem->event_id === $tenant->active_event_id), 404);
$variantId = $request->validated('variant_id'); $variantId = $request->validated('variant_id');
@@ -134,8 +134,7 @@ class CatalogController extends Controller
VariantSelectionService $variantSelectionService, VariantSelectionService $variantSelectionService,
CartService $cartService, CartService $cartService,
): CatalogVariantOptionsResource { ): CatalogVariantOptionsResource {
abort_unless($catalogItem->tenant_code === $tenant->codigo abort_unless($catalogItem->tenant_code === $tenant->codigo, 404);
&& ($tenant->active_event_id === null || $catalogItem->event_id === $tenant->active_event_id), 404);
$includedVariantId = null; $includedVariantId = null;
$cartItemId = $request->validated('cart_item_id'); $cartItemId = $request->validated('cart_item_id');
@@ -164,6 +163,21 @@ class CatalogController extends Controller
); );
} }
public function store(
StoreCatalogItemRequest $request,
Tenant $tenant,
CatalogService $catalogService,
): JsonResponse {
$catalogItem = $catalogService->create([
...$request->validated(),
'tenant_code' => $tenant->codigo,
]);
return CatalogItemResource::make($catalogItem)
->response()
->setStatusCode(201);
}
private function userId(Request $request): ?int private function userId(Request $request): ?int
{ {
$userId = $request->user()?->getAuthIdentifier() ?? Auth::guard('sanctum')->id(); $userId = $request->user()?->getAuthIdentifier() ?? Auth::guard('sanctum')->id();

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Commerce\Catalog\Enums; namespace App\Domains\Catalog\Enums;
enum CatalogItemType: string enum CatalogItemType: string
{ {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Commerce\Catalog\Enums; namespace App\Domains\Catalog\Enums;
enum FeaturedGroupSource: string enum FeaturedGroupSource: string
{ {

View File

@@ -1,6 +1,6 @@
<?php <?php
namespace App\Domains\Commerce\Catalog\Enums; namespace App\Domains\Catalog\Enums;
enum GroupLayout: string enum GroupLayout: string
{ {

Some files were not shown because too many files have changed in this diff Show More