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)]);
$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;

@ -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
//------------------------------------------------------------

@ -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();

Loading…
Cancel
Save