From 52b7e914053c762de3323cdf7a9b6a66970ec01d Mon Sep 17 00:00:00 2001 From: ricky rx Date: Sat, 15 Jun 2024 14:00:53 +0700 Subject: [PATCH] feat: TV code with autogenerate code --- app/Models/NewTvRequest.php | 3 +-- app/Models/Tv.php | 17 +++++++++++++++++ database/migrations/2024_05_18_033105_tv.php | 1 - 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/Models/NewTvRequest.php b/app/Models/NewTvRequest.php index 7daaab4..92ec5f7 100644 --- a/app/Models/NewTvRequest.php +++ b/app/Models/NewTvRequest.php @@ -133,7 +133,6 @@ class NewTvRequest extends Model { if($tvRequest->code) $tvRequest->merge(['code' => strtoupper($tvRequest->code)]); $tvRequest->validate([ - 'code' => 'required|string|unique:App\Models\Tv,code', 'company_name' => 'nullable|string', 'address' => 'nullable|string', 'street_address' => 'nullable|string', @@ -157,7 +156,7 @@ class NewTvRequest extends Model { try { DB::beginTransaction(); $tv = new Tv(); - $tv->code = $tvRequest->code; + $tv->code = TV::generateUniqueCode(); $tv->company_name = $tvRequest->company_name; $tv->address = $tvRequest->address; $tv->street_address = $tvRequest->street_address; diff --git a/app/Models/Tv.php b/app/Models/Tv.php index 1ca1128..a71c664 100644 --- a/app/Models/Tv.php +++ b/app/Models/Tv.php @@ -15,6 +15,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; +use Illuminate\Support\Str; class Tv extends Model { use HasFactory; @@ -40,6 +41,22 @@ class Tv extends Model { //------------------------------------------------------------ // -- RELATED TO DATA FUNCTION + public static function generateUniqueCode() { + // init + $totalSuffixDigit = 5; + date_default_timezone_set('Asia/Jakarta'); + $prefixCode = 'TV' . date('Ym'); + + // try to get unique suffix + $uniqueCode = ''; + while(true) { + $suffixCode = strtoupper(Str::random($totalSuffixDigit)); + $uniqueCode = $prefixCode . $suffixCode; + $isUnique = TV::where('code', $uniqueCode)->first(); + if(!$isUnique) break; + } + return $uniqueCode; + } // -- END RELATED TO DATA FUNCTION //------------------------------------------------------------ diff --git a/database/migrations/2024_05_18_033105_tv.php b/database/migrations/2024_05_18_033105_tv.php index 0803d30..e9e9750 100644 --- a/database/migrations/2024_05_18_033105_tv.php +++ b/database/migrations/2024_05_18_033105_tv.php @@ -11,7 +11,6 @@ return new class extends Migration { public function up(): void { Schema::create('tvs', function (Blueprint $table) { $table->id(); - $table->foreignId('outlet_fk')->nullable(); $table->string('code', 50)->unique(); $table->string('ik_address_id', 255)->nullable(); $table->integer('version_code')->nullable();