sms entegrasyonu ve ana sayfa işlemleri

This commit is contained in:
2026-01-26 00:19:09 +03:00
parent 1e1baa84ff
commit 5c34df0f09
19 changed files with 1018 additions and 17 deletions

View File

@@ -93,6 +93,7 @@ export async function updateSmsSettings(data: {
revalidatePath("/dashboard/settings")
return { success: true }
} catch (error) {
return { error: (error as Error).message }
}
@@ -133,3 +134,70 @@ export async function sendTestSms(phone: string) {
return { error: (error as Error).message }
}
}
export async function sendBulkSms(phones: string[], message: string) {
try {
await assertAdmin()
// Fetch credentials
const { data: settings } = await supabaseAdmin.from('sms_settings').select('*').single()
if (!settings) throw new Error("SMS ayarları yapılmamış.")
const mobileService = new NetGsmService({
username: settings.username,
password: settings.password,
header: settings.header,
apiUrl: settings.api_url
})
// Remove duplicates and empty
const uniquePhones = Array.from(new Set(phones.filter(p => p && p.trim() !== '')))
const results = []
for (const phone of uniquePhones) {
const result = await mobileService.sendSms(phone, message)
// Log result
await supabaseAdmin.from('sms_logs').insert({
phone,
message,
status: result.success ? 'success' : 'error',
response_code: result.code || result.error
})
results.push({ phone, ...result })
}
const successCount = results.filter(r => r.success).length
const total = uniquePhones.length
revalidatePath("/dashboard/sms")
return {
success: true,
message: `${total} kişiden ${successCount} kişiye başarıyla gönderildi.`,
details: results
}
} catch (error) {
return { error: (error as Error).message }
}
}
export async function getSmsLogs(limit: number = 50) {
try {
await assertAdmin()
const { data, error } = await supabaseAdmin
.from('sms_logs')
.select('*')
.order('created_at', { ascending: false })
.limit(limit)
if (error) throw error
return { success: true, data }
} catch (error) {
return { error: (error as Error).message }
}
}