commit 13/02/2026
This commit is contained in:
@@ -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
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user