commit 13/02/2026

This commit is contained in:
2026-02-13 17:04:20 +07:00
parent c797c6e7fe
commit 7b4420ddbd
10 changed files with 365 additions and 198 deletions

View File

@@ -1,12 +1,17 @@
package database.table
import codes.Somecodes.Companion.timeformat2
import com.batoulapps.adhan.CalculationMethod
import com.batoulapps.adhan.CalculationParameters
import com.batoulapps.adhan.Coordinates
import com.batoulapps.adhan.Madhab
import com.batoulapps.adhan.PrayerTimes
import com.batoulapps.adhan.data.DateComponents
import content.Language
import messageDB
import org.tinylog.Logger
import java.text.SimpleDateFormat
import java.time.LocalTime
import java.util.Date
import java.util.TimeZone
@@ -16,7 +21,6 @@ import java.util.TimeZone
* @param longitude The longitude of the location. Default is Monas, Jakarta (longitude: 106.8272).
* @param timezone The time zone for formatting prayer times. Default is "Asia/Jakarta".
*/
@Suppress("unused")
class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.8272, val timezone : TimeZone = TimeZone.getTimeZone("Asia/Jakarta")) {
var coordinate: Coordinates = Coordinates(latitude, longitude)
@@ -30,11 +34,21 @@ class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.82
var maghrib_enable = false
var isya_enable = false
var fajar_sound = ""
var dzuhur_sound = ""
var ashar_sound = ""
var maghrib_sound = ""
var isya_sound = ""
var fajar_message = ""
var dzuhur_message = ""
var ashar_message = ""
var maghrib_message = ""
var isya_message = ""
var fajar_time = ""
var dzuhur_time = ""
var ashar_time = ""
var maghrib_time = ""
var isya_time = ""
var adzan_broadcastzones = ""
var adzan_language = Language.DEFAULT.value
init{
// sumber chatgpt Kemenag
@@ -44,14 +58,93 @@ class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.82
timeformatter.timeZone = timezone
}
/**
* Change the time zone used for formatting prayer times.
* @param timezone The new AdzanTimeZone.
*/
fun ChangeTimezone(timezone: AdzanTimeZone) {
ChangeTimeZone(timezone.toTimeZoneString())
data class AdzanTask(
val prayerName : String,
val timeString : String,
val message : String,
val sb_tags : String
)
fun CheckTime() : AdzanTask?{
val hhmm = LocalTime.now().format(timeformat2)
if (hhmm == fajar_time){
if (fajar_enable){
val mb = messageDB.Find_Messagebank(fajar_message, adzan_language)
if (mb!=null){
return AdzanTask(
"Fajar",
fajar_time,
mb.Description,
mb.Message_TAGS
)
} else Logger.error { "Skipped Adzan Fajar because Unable to find $fajar_message in messageDB" }
} else Logger.info{"Skipped Adzan Fajar because fajr_enable is false"}
}
if (hhmm == dzuhur_time){
if (dzuhur_enable){
val mb = messageDB.Find_Messagebank(dzuhur_message, adzan_language)
if (mb!=null){
return AdzanTask(
"Dzuhur",
dzuhur_time,
mb.Description,
mb.Message_TAGS
)
} else Logger.error { "Skipped Adzan Dzuhur because Unable to find $dzuhur_message in messageDB" }
} else Logger.info{"Skipped Adzan Dzuhur because dzuhur_enable is false"}
}
if (hhmm == ashar_time) {
if (ashar_enable){
val mb = messageDB.Find_Messagebank(ashar_message, adzan_language)
if (mb!=null){
return AdzanTask(
"Ashar",
ashar_time,
mb.Description,
mb.Message_TAGS
)
} else Logger.error { "Skipped Adzan Ashar because Unable to find $ashar_message in messageDB" }
} else Logger.info{"Skipped Adzan Ashar because ashar_enable is false"}
}
if (hhmm == maghrib_time){
if (maghrib_enable){
val mb = messageDB.Find_Messagebank(maghrib_message, adzan_language)
if (mb!=null){
return AdzanTask(
"Maghrib",
maghrib_time,
mb.Description,
mb.Message_TAGS
)
} else Logger.error { "Skipped Adzan Maghrib because Unable to find $maghrib_message in messageDB" }
} else Logger.info{"Skipped Adzan Maghrib because maghrib_enable is false"}
}
if (hhmm == isya_time) {
if (isya_enable){
val mb = messageDB.Find_Messagebank(isya_message, adzan_language)
if (mb!=null){
return AdzanTask(
"Isya",
isya_time,
mb.Description,
mb.Message_TAGS
)
} else Logger.error { "Skipped Adzan Isya because Unable to find $isya_message in messageDB" }
} else Logger.info{"Skipped Adzan Isya because isya_enable is false"}
}
return null
}
// /**
// * Change the time zone used for formatting prayer times.
// * @param timezone The new AdzanTimeZone.
// */
// fun ChangeTimezone(timezone: AdzanTimeZone) {
// ChangeTimeZone(timezone.toTimeZoneString())
// }
/**
* Change the time zone used for formatting prayer times.
* @param timezoneString The new time zone string (e.g., "Asia/Jakarta").
@@ -60,29 +153,29 @@ class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.82
timeformatter.timeZone = TimeZone.getTimeZone(timezoneString)
}
/**
* Set prayer time adjustments in minutes.
* @param fajrMinute Adjustment for Fajr prayer time in minutes.
* @param dhuhrMinute Adjustment for Dhuhr prayer time in minutes.
* @param asrMinute Adjustment for Asr prayer time in minutes.
* @param maghribMinute Adjustment for Maghrib prayer time in minutes.
* @param ishaMinute Adjustment for Isha prayer time in minutes.
*/
fun SetPrayerAdjustment(fajrMinute: Int = 0, dhuhrMinute: Int = 0, asrMinute: Int = 0,maghribMinute: Int = 0, ishaMinute: Int = 0) {
params.adjustments.fajr = fajrMinute
params.adjustments.dhuhr = dhuhrMinute
params.adjustments.asr = asrMinute
params.adjustments.maghrib = maghribMinute
params.adjustments.isha = ishaMinute
}
/**
* Change the coordinates used for Adzan calculations.
* @param lat The new latitude.
* @param long The new longitude.
*/
fun ChangeCoordinate(lat: Double, long: Double) {
coordinate = Coordinates(lat, long)
}
// /**
// * Set prayer time adjustments in minutes.
// * @param fajrMinute Adjustment for Fajr prayer time in minutes.
// * @param dhuhrMinute Adjustment for Dhuhr prayer time in minutes.
// * @param asrMinute Adjustment for Asr prayer time in minutes.
// * @param maghribMinute Adjustment for Maghrib prayer time in minutes.
// * @param ishaMinute Adjustment for Isha prayer time in minutes.
// */
// fun SetPrayerAdjustment(fajrMinute: Int = 0, dhuhrMinute: Int = 0, asrMinute: Int = 0,maghribMinute: Int = 0, ishaMinute: Int = 0) {
// params.adjustments.fajr = fajrMinute
// params.adjustments.dhuhr = dhuhrMinute
// params.adjustments.asr = asrMinute
// params.adjustments.maghrib = maghribMinute
// params.adjustments.isha = ishaMinute
// }
// /**
// * Change the coordinates used for Adzan calculations.
// * @param lat The new latitude.
// * @param long The new longitude.
// */
// fun ChangeCoordinate(lat: Double, long: Double) {
// coordinate = Coordinates(lat, long)
// }
fun ChangeLatitude(lat: Double) {
coordinate = Coordinates(lat, coordinate.longitude)
@@ -92,19 +185,19 @@ class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.82
coordinate = Coordinates(coordinate.latitude, long)
}
/**
* Get prayer times for a specific date string in the format "dd/MM/yyyy".
* @param date_string The date string for which to get prayer times.
* @return An AdzanPrayerTime object containing the prayer times, or null if the date string is invalid.
*/
fun GetPrayerTimes(date_string: String) : AdzanPrayerTime?{
try{
val date = dateformatter.parse(date_string)
return GetPrayerTimes(date)
} catch (e: Exception){
return null
}
}
// /**
// * Get prayer times for a specific date string in the format "dd/MM/yyyy".
// * @param date_string The date string for which to get prayer times.
// * @return An AdzanPrayerTime object containing the prayer times, or null if the date string is invalid.
// */
// fun GetPrayerTimes(date_string: String) : AdzanPrayerTime?{
// try{
// val date = dateformatter.parse(date_string)
// return GetPrayerTimes(date)
// } catch (_: Exception){
// return null
// }
// }
/**
* Get prayer times for a specific date.
@@ -125,31 +218,38 @@ class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.82
/**
* Get prayer times for the current date.
* this will update fajar_time, dzuhur_time, ashar_time, maghrib_time, isya_time properties
* @return An AdzanPrayerTime object containing the prayer times for today.
*/
fun GetTodayPrayerTimes() : AdzanPrayerTime{
return GetPrayerTimes(Date())
val result = GetPrayerTimes(Date())
fajar_time = result.fajr
dzuhur_time = result.dhuhr
ashar_time = result.asr
maghrib_time = result.maghrib
isya_time = result.isha
return result
}
/**
* Get prayer times for all days in a specific month and year.
* @param month The month (1-12) for which to get prayer times.
* @param year The year for which to get prayer times.
* @return A list of AdzanPrayerTime objects for each day in the specified month and year.
*/
fun GetMonthlyPrayerTimes(month: Int, year: Int) : List<AdzanPrayerTime>{
val prayerTimesList = mutableListOf<AdzanPrayerTime>()
val calendar = java.util.Calendar.getInstance()
calendar.set(year, month - 1, 1) // Month is 0-based in Calendar
val daysInMonth = calendar.getActualMaximum(java.util.Calendar.DAY_OF_MONTH)
for (day in 1..daysInMonth) {
calendar.set(year, month - 1, day)
val date = calendar.time
val prayerTimes = GetPrayerTimes(date)
prayerTimesList.add(prayerTimes)
}
return prayerTimesList
}
// /**
// * Get prayer times for all days in a specific month and year.
// * @param month The month (1-12) for which to get prayer times.
// * @param year The year for which to get prayer times.
// * @return A list of AdzanPrayerTime objects for each day in the specified month and year.
// */
// fun GetMonthlyPrayerTimes(month: Int, year: Int) : List<AdzanPrayerTime>{
// val prayerTimesList = mutableListOf<AdzanPrayerTime>()
// val calendar = java.util.Calendar.getInstance()
// calendar.set(year, month - 1, 1) // Month is 0-based in Calendar
// val daysInMonth = calendar.getActualMaximum(java.util.Calendar.DAY_OF_MONTH)
//
// for (day in 1..daysInMonth) {
// calendar.set(year, month - 1, day)
// val date = calendar.time
// val prayerTimes = GetPrayerTimes(date)
// prayerTimesList.add(prayerTimes)
// }
//
// return prayerTimesList
// }
}