package com.dumpster.cleaner.business.push.receiver

import android.annotation.SuppressLint
import android.app.AlarmManager
import android.app.PendingIntent
import android.app.job.JobService
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.dumpster.cleaner.BuildConfig
import com.dumpster.cleaner.bean.push.NotificationSendBean
import com.dumpster.cleaner.bean.config.PopupConfigBean
import com.dumpster.cleaner.business.helper.EventUtils
import com.dumpster.cleaner.business.push.notification.MyNotificationManager
import com.dumpster.cleaner.business.push.work.RepeatingWorker
import com.dumpster.cleaner.utils.LogEx
import java.util.Calendar

/**
 *
 */
class AlarmReceiver : BroadcastReceiver() {

    private val TAG = "AlarmJobReceiver"

    companion object {
        fun startAlarm(context: Context, hour: Int) {
//        context.startJob()
            //闹钟定时任务
            val alarmManager = context.getSystemService(JobService.ALARM_SERVICE) as AlarmManager
            val pendingIntent = PendingIntent.getBroadcast(
                context, hour, Intent(context, AlarmReceiver::class.java),
                PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
            )
            val calendar = Calendar.getInstance()
            calendar.set(Calendar.HOUR_OF_DAY, 6)
            calendar.set(Calendar.MINUTE, 0)
            calendar.set(Calendar.SECOND, 0)

            val oneHour = 60 * 60 * 1000L
            var delay = oneHour * hour
            if (BuildConfig.DEBUG) {
                delay = 1 * 60 * 1000L
            }
            alarmManager.setRepeating(
                AlarmManager.RTC_WAKEUP, calendar.timeInMillis, delay, pendingIntent
            )
            RepeatingWorker.Companion.schedulePeriodicWork(context)
        }
    }

    @SuppressLint("UnsafeProtectedBroadcastReceiver")
    override fun onReceive(context: Context, intent: Intent?) {
        LogEx.logDebug(TAG, "AlarmJobReceiver onReceive")
        EventUtils.event("alarm_push")
        if (PopupConfigBean.popupConfigBean.alarmS) {
            MyNotificationManager.submitSendBean(NotificationSendBean(context, NotificationSendBean.Companion.POPUP_WHERE_ALARM))
        }
        RepeatingWorker.Companion.schedulePeriodicWork(context)
    }
}