feat: TV code with autogenerate code

v2.0.0
ricky rx 1 year ago
parent eee7c263ab
commit 52b7e91405

@ -133,7 +133,6 @@ class NewTvRequest extends Model {
if($tvRequest->code) $tvRequest->merge(['code' => strtoupper($tvRequest->code)]); if($tvRequest->code) $tvRequest->merge(['code' => strtoupper($tvRequest->code)]);
$tvRequest->validate([ $tvRequest->validate([
'code' => 'required|string|unique:App\Models\Tv,code',
'company_name' => 'nullable|string', 'company_name' => 'nullable|string',
'address' => 'nullable|string', 'address' => 'nullable|string',
'street_address' => 'nullable|string', 'street_address' => 'nullable|string',
@ -157,7 +156,7 @@ class NewTvRequest extends Model {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$tv = new Tv(); $tv = new Tv();
$tv->code = $tvRequest->code; $tv->code = TV::generateUniqueCode();
$tv->company_name = $tvRequest->company_name; $tv->company_name = $tvRequest->company_name;
$tv->address = $tvRequest->address; $tv->address = $tvRequest->address;
$tv->street_address = $tvRequest->street_address; $tv->street_address = $tvRequest->street_address;

@ -15,6 +15,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Support\Str;
class Tv extends Model { class Tv extends Model {
use HasFactory; use HasFactory;
@ -40,6 +41,22 @@ class Tv extends Model {
//------------------------------------------------------------ //------------------------------------------------------------
// -- RELATED TO DATA FUNCTION // -- 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 // -- END RELATED TO DATA FUNCTION
//------------------------------------------------------------ //------------------------------------------------------------

@ -11,7 +11,6 @@ return new class extends Migration {
public function up(): void { public function up(): void {
Schema::create('tvs', function (Blueprint $table) { Schema::create('tvs', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('outlet_fk')->nullable();
$table->string('code', 50)->unique(); $table->string('code', 50)->unique();
$table->string('ik_address_id', 255)->nullable(); $table->string('ik_address_id', 255)->nullable();
$table->integer('version_code')->nullable(); $table->integer('version_code')->nullable();

Loading…
Cancel
Save