feat: add tenant success color
This commit is contained in:
@@ -17,6 +17,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
|
|||||||
'primary_color',
|
'primary_color',
|
||||||
'secondary_color',
|
'secondary_color',
|
||||||
'danger_color',
|
'danger_color',
|
||||||
|
'success_color',
|
||||||
'header_footer_bg_color',
|
'header_footer_bg_color',
|
||||||
'header_logo_id',
|
'header_logo_id',
|
||||||
'footer_logo_id',
|
'footer_logo_id',
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ class StoreTenantRequest extends FormRequest
|
|||||||
'primary_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'primary_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'secondary_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'secondary_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'danger_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'danger_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
|
'success_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'header_footer_bg_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'header_footer_bg_color' => ['required', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'header_logo' => $logoRule,
|
'header_logo' => $logoRule,
|
||||||
'footer_logo' => $logoRule,
|
'footer_logo' => $logoRule,
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ class UpdateTenantRequest extends FormRequest
|
|||||||
'primary_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'primary_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'secondary_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'secondary_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'danger_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'danger_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
|
'success_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'header_footer_bg_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
'header_footer_bg_color' => ['nullable', 'string', 'regex:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/'],
|
||||||
'header_logo' => $logoRule,
|
'header_logo' => $logoRule,
|
||||||
'footer_logo' => $logoRule,
|
'footer_logo' => $logoRule,
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class TenantResource extends JsonResource
|
|||||||
'primary_color' => $this->primary_color,
|
'primary_color' => $this->primary_color,
|
||||||
'secondary_color' => $this->secondary_color,
|
'secondary_color' => $this->secondary_color,
|
||||||
'danger_color' => $this->danger_color,
|
'danger_color' => $this->danger_color,
|
||||||
|
'success_color' => $this->success_color,
|
||||||
'header_footer_bg_color' => $this->header_footer_bg_color,
|
'header_footer_bg_color' => $this->header_footer_bg_color,
|
||||||
// 1 day
|
// 1 day
|
||||||
'header_logo' => $this->headerLogo?->getTemporaryUrl(1440),
|
'header_logo' => $this->headerLogo?->getTemporaryUrl(1440),
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('tenants', function (Blueprint $table) {
|
||||||
|
$table->string('success_color')->default('#28a745')->after('danger_color');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('tenants', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('success_color');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -74,6 +74,7 @@ class TenantSeeder extends Seeder
|
|||||||
'primary_color' => '#6376F3',
|
'primary_color' => '#6376F3',
|
||||||
'secondary_color' => '#A0A0A0',
|
'secondary_color' => '#A0A0A0',
|
||||||
'danger_color' => '#FF8888',
|
'danger_color' => '#FF8888',
|
||||||
|
'success_color' => '#198754',
|
||||||
'header_footer_bg_color' => '#313131',
|
'header_footer_bg_color' => '#313131',
|
||||||
'header_logo' => $headerLogo,
|
'header_logo' => $headerLogo,
|
||||||
'footer_logo' => $footerLogo,
|
'footer_logo' => $footerLogo,
|
||||||
|
|||||||
@@ -324,6 +324,7 @@ class CartControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#28a745',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ class AttributeControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#28a745',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
|
|||||||
@@ -806,6 +806,7 @@ class ProductControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#28a745',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class ProductVariantAttachmentTest extends TestCase
|
|||||||
'primary_color' => '#ffffff',
|
'primary_color' => '#ffffff',
|
||||||
'secondary_color' => '#ffffff',
|
'secondary_color' => '#ffffff',
|
||||||
'danger_color' => '#ffffff',
|
'danger_color' => '#ffffff',
|
||||||
|
'success_color' => '#ffffff',
|
||||||
'header_footer_bg_color' => '#ffffff',
|
'header_footer_bg_color' => '#ffffff',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#ff0000',
|
'primary_color' => '#ff0000',
|
||||||
'secondary_color' => '#00ff00',
|
'secondary_color' => '#00ff00',
|
||||||
'danger_color' => '#0000ff',
|
'danger_color' => '#0000ff',
|
||||||
|
'success_color' => '#00ff00',
|
||||||
'header_footer_bg_color' => '#ffffff',
|
'header_footer_bg_color' => '#ffffff',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
@@ -54,6 +55,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
->assertJsonPath('data.primary_color', '#ff0000')
|
->assertJsonPath('data.primary_color', '#ff0000')
|
||||||
->assertJsonPath('data.secondary_color', '#00ff00')
|
->assertJsonPath('data.secondary_color', '#00ff00')
|
||||||
->assertJsonPath('data.danger_color', '#0000ff')
|
->assertJsonPath('data.danger_color', '#0000ff')
|
||||||
|
->assertJsonPath('data.success_color', '#00ff00')
|
||||||
->assertJsonPath('data.header_footer_bg_color', '#ffffff');
|
->assertJsonPath('data.header_footer_bg_color', '#ffffff');
|
||||||
|
|
||||||
$headerUrl = $response->json('data.header_logo');
|
$headerUrl = $response->json('data.header_logo');
|
||||||
@@ -107,6 +109,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => $base64Image,
|
'header_logo' => $base64Image,
|
||||||
'footer_logo' => $base64Image,
|
'footer_logo' => $base64Image,
|
||||||
@@ -118,6 +121,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
->assertJsonPath('data.primary_color', '#111111')
|
->assertJsonPath('data.primary_color', '#111111')
|
||||||
->assertJsonPath('data.secondary_color', '#222222')
|
->assertJsonPath('data.secondary_color', '#222222')
|
||||||
->assertJsonPath('data.danger_color', '#333333')
|
->assertJsonPath('data.danger_color', '#333333')
|
||||||
|
->assertJsonPath('data.success_color', '#555555')
|
||||||
->assertJsonPath('data.header_footer_bg_color', '#444444');
|
->assertJsonPath('data.header_footer_bg_color', '#444444');
|
||||||
|
|
||||||
$tenant = Tenant::query()->with(['headerLogo', 'footerLogo'])->where('codigo', 'acme')->firstOrFail();
|
$tenant = Tenant::query()->with(['headerLogo', 'footerLogo'])->where('codigo', 'acme')->firstOrFail();
|
||||||
@@ -130,6 +134,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo_id' => $tenant->header_logo_id,
|
'header_logo_id' => $tenant->header_logo_id,
|
||||||
'footer_logo_id' => $tenant->footer_logo_id,
|
'footer_logo_id' => $tenant->footer_logo_id,
|
||||||
@@ -154,6 +159,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => (string) Str::uuid(),
|
'header_logo' => (string) Str::uuid(),
|
||||||
'footer_logo' => (string) Str::uuid(),
|
'footer_logo' => (string) Str::uuid(),
|
||||||
@@ -203,6 +209,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#555555',
|
'primary_color' => '#555555',
|
||||||
'secondary_color' => '#666666',
|
'secondary_color' => '#666666',
|
||||||
'danger_color' => '#777777',
|
'danger_color' => '#777777',
|
||||||
|
'success_color' => '#999999',
|
||||||
'header_footer_bg_color' => '#888888',
|
'header_footer_bg_color' => '#888888',
|
||||||
'header_logo' => $hdrUuid,
|
'header_logo' => $hdrUuid,
|
||||||
'footer_logo' => $ftrUuid,
|
'footer_logo' => $ftrUuid,
|
||||||
@@ -215,6 +222,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
->assertJsonPath('data.primary_color', '#555555')
|
->assertJsonPath('data.primary_color', '#555555')
|
||||||
->assertJsonPath('data.secondary_color', '#666666')
|
->assertJsonPath('data.secondary_color', '#666666')
|
||||||
->assertJsonPath('data.danger_color', '#777777')
|
->assertJsonPath('data.danger_color', '#777777')
|
||||||
|
->assertJsonPath('data.success_color', '#999999')
|
||||||
->assertJsonPath('data.header_footer_bg_color', '#888888');
|
->assertJsonPath('data.header_footer_bg_color', '#888888');
|
||||||
|
|
||||||
$headerUrl = $successfulResponse->json('data.header_logo');
|
$headerUrl = $successfulResponse->json('data.header_logo');
|
||||||
@@ -234,6 +242,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#555555',
|
'primary_color' => '#555555',
|
||||||
'secondary_color' => '#666666',
|
'secondary_color' => '#666666',
|
||||||
'danger_color' => '#777777',
|
'danger_color' => '#777777',
|
||||||
|
'success_color' => '#999999',
|
||||||
'header_footer_bg_color' => '#888888',
|
'header_footer_bg_color' => '#888888',
|
||||||
'header_logo_id' => $hdrAttachment->id,
|
'header_logo_id' => $hdrAttachment->id,
|
||||||
'footer_logo_id' => $ftrAttachment->id,
|
'footer_logo_id' => $ftrAttachment->id,
|
||||||
@@ -286,6 +295,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => 'invalid-color',
|
'primary_color' => 'invalid-color',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => (string) Str::uuid(),
|
'header_logo' => (string) Str::uuid(),
|
||||||
'footer_logo' => (string) Str::uuid(),
|
'footer_logo' => (string) Str::uuid(),
|
||||||
@@ -300,12 +310,28 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#12345',
|
'primary_color' => '#12345',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => (string) Str::uuid(),
|
'header_logo' => (string) Str::uuid(),
|
||||||
'footer_logo' => (string) Str::uuid(),
|
'footer_logo' => (string) Str::uuid(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$response2->assertJsonValidationErrors(['primary_color']);
|
$response2->assertJsonValidationErrors(['primary_color']);
|
||||||
|
|
||||||
|
$response3 = $this->postJson('/api/tenants', [
|
||||||
|
'codigo' => 'acme',
|
||||||
|
'nombre' => 'Acme',
|
||||||
|
'dominio' => 'acme.com',
|
||||||
|
'primary_color' => '#111111',
|
||||||
|
'secondary_color' => '#222222',
|
||||||
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => 'invalid-color',
|
||||||
|
'header_footer_bg_color' => '#444444',
|
||||||
|
'header_logo' => (string) Str::uuid(),
|
||||||
|
'footer_logo' => (string) Str::uuid(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response3->assertJsonValidationErrors(['success_color']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_it_validates_logo_must_be_image_or_svg(): void
|
public function test_it_validates_logo_must_be_image_or_svg(): void
|
||||||
@@ -319,6 +345,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => UploadedFile::fake()->create('document.pdf', 10, 'application/pdf'),
|
'header_logo' => UploadedFile::fake()->create('document.pdf', 10, 'application/pdf'),
|
||||||
'footer_logo' => (string) Str::uuid(),
|
'footer_logo' => (string) Str::uuid(),
|
||||||
@@ -333,6 +360,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => 'data:application/pdf;base64,JVBERi0xLjQKJdcfqksKMSAwIG9iagogIDw8IC9UeXBlIC9DYXRhbG9nCiAgICAvUGFnZXMgMiAwIFI...',
|
'header_logo' => 'data:application/pdf;base64,JVBERi0xLjQKJdcfqksKMSAwIG9iagogIDw8IC9UeXBlIC9DYXRhbG9nCiAgICAvUGFnZXMgMiAwIFI...',
|
||||||
'footer_logo' => (string) Str::uuid(),
|
'footer_logo' => (string) Str::uuid(),
|
||||||
@@ -355,6 +383,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => $header,
|
'header_logo' => $header,
|
||||||
'footer_logo' => $footer,
|
'footer_logo' => $footer,
|
||||||
@@ -410,6 +439,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#ff0000',
|
'primary_color' => '#ff0000',
|
||||||
'secondary_color' => '#00ff00',
|
'secondary_color' => '#00ff00',
|
||||||
'danger_color' => '#0000ff',
|
'danger_color' => '#0000ff',
|
||||||
|
'success_color' => '#00ff00',
|
||||||
'header_footer_bg_color' => '#ffffff',
|
'header_footer_bg_color' => '#ffffff',
|
||||||
'header_logo_id' => $headerAttachment->id,
|
'header_logo_id' => $headerAttachment->id,
|
||||||
'footer_logo_id' => $footerAttachment->id,
|
'footer_logo_id' => $footerAttachment->id,
|
||||||
@@ -438,6 +468,7 @@ class BootstrapTenantControllerTest extends TestCase
|
|||||||
'primary_color' => '#111111',
|
'primary_color' => '#111111',
|
||||||
'secondary_color' => '#222222',
|
'secondary_color' => '#222222',
|
||||||
'danger_color' => '#333333',
|
'danger_color' => '#333333',
|
||||||
|
'success_color' => '#555555',
|
||||||
'header_footer_bg_color' => '#444444',
|
'header_footer_bg_color' => '#444444',
|
||||||
'header_logo' => $base64Image,
|
'header_logo' => $base64Image,
|
||||||
'footer_logo' => $ftrUuid,
|
'footer_logo' => $ftrUuid,
|
||||||
|
|||||||
Reference in New Issue
Block a user