fix: api tambah pengaduan jenna ai #47

Merged
amaliadwiy merged 1 commits from amalia/01-des-25 into main 2025-12-01 11:22:37 +08:00
2 changed files with 14 additions and 4 deletions

View File

@@ -1,6 +1,12 @@
export function isValidPhone(number: string): boolean {
const clean = number.replace(/[\s.-]/g, ""); // hapus spasi, titik, strip
const regex = /^(?:\+628|08)(\d{7,12})$/;
return regex.test(clean);
}
export function normalizePhoneNumber({ phone }: { phone: string }) {
// Hapus semua spasi, tanda hubung, atau karakter non-digit (+ tetap dipertahankan untuk dicek)
let cleaned = phone.trim().replace(/[\s-]/g, "");
let cleaned = phone.trim().replace(/[\s.-]/g, "");
// Jika diawali dengan +62 → ganti jadi 62
if (cleaned.startsWith("+62")) {

View File

@@ -5,7 +5,7 @@ import { v4 as uuidv4 } from "uuid"
import { getLastUpdated } from "../lib/get-last-updated"
import { mimeToExtension } from "../lib/mimetypeToExtension"
import { generateNoPengaduan } from "../lib/no-pengaduan"
import { normalizePhoneNumber } from "../lib/normalizePhone"
import { isValidPhone, normalizePhoneNumber } from "../lib/normalizePhone"
import { prisma } from "../lib/prisma"
import { renameFile } from "../lib/rename-file"
import { catFile, defaultConfigSF, removeFile, uploadFile, uploadFileBase64 } from "../lib/seafile"
@@ -139,6 +139,10 @@ const PengaduanRoute = new Elysia({
idCategoryFix = "lainnya"
}
if (!isValidPhone(noTelepon)) {
return { success: false, message: 'nomor telepon tidak valid, harap masukkan nomor yang benar' }
}
const nomorHP = normalizePhoneNumber({ phone: noTelepon })
const dataWarga = await prisma.warga.upsert({
where: {
@@ -216,10 +220,10 @@ const PengaduanRoute = new Elysia({
description: "ID atau nama kategori pengaduan (contoh: kebersihan, keamanan, lainnya)"
})),
namaWarga: t.Optional(t.String({
namaWarga: t.String({
examples: ["budiman"],
description: "Nama warga yang melapor"
})),
}),
noTelepon: t.String({
error: "Nomor telepon harus diisi",