using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Util;
using AndroidX.Core.App;
using Plugin.FirebasePushNotification;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GMCabsDriverAssistantSolution.Platforms.Android
{
#if DEBUG
    [Application(Debuggable = true, NetworkSecurityConfig = "@xml/network_security_config")]
#else
    [Application(Debuggable = false)]
#endif    
    //[MetaData("com.google.firebase.messaging.default_notification_icon", Resource = "@drawable/ic_stat_ic_notification")]
    //[MetaData("com.google.firebase.messaging.default_notification_color", Resource = "@color/color_notification_icon")]
    public class GMCabsDriverAssistantApplication : Microsoft.Maui.Controls.Application
    {
    //    #region Constants
    //    public const string TAG = nameof(GMCabsDriverAssistantApplication);
    //    public static string SILENT_NOTIFICATION_CHANNEL_ID = "GMCabsDriverAssistantSilentNotificationChannel";
    //    public static string SILENT_NOTIFICATION_CHANNEL_NAME = "GM Cabs Silent Notification Channel";
    //    public static string SOUND_NOTIFICATION_CHANNEL_ID = "GMCabsDriverAssistantChannel";
    //    public static string SOUND_NOTIFICATION_CHANNEL_NAME = "GM Cabs Notification Channel";
    //    public static string SYSTEM_SOUND_NOTIFICATION_CHANNEL_ID = "GMCabsDriverAssistantSystemChannel";
    //    public static string SYSTEM_SOUND_NOTIFICATION_CHANNEL_NAME = "GM Cabs System Notification Channel";
    //    #endregion

    //    public GMCabsDriverAssistantApplication(IntPtr handle, JniHandleOwnership transfer)
    //        : base(handle, transfer)
    //    {

    //    }

    //    public override void OnCreate()
    //    {
    //        base.OnCreate();

    //        //FirebasePushNotificationManager.Initialize(this, true);
    //        FirebasePushNotificationManager.Initialize(this, false);

    //        CrossFirebasePushNotification.Current.OnNotificationReceived += Current_OnNotificationReceived;
    //    }

    //    [Obsolete]
    //    private void Current_OnNotificationReceived(object source, FirebasePushNotificationDataEventArgs e)
    //    {
    //        var soundFileName = "newbooking";
    //        Log.Debug(TAG, "Received on Android");
    //        string channelId = string.Empty;
    //        string channelName = string.Empty;
    //        NotificationCompat.Builder notificationBuilder = null;
    //        NotificationChannel channel = null;
    //        var data = e.Data;
    //        if (data != null && e.Data.ContainsKey("title"))
    //        {
    //            /*  Custom Sound Notification Channel */
    //            if (data["title"].ToString() == "Booking Available")
    //            {
    //                channelId = SOUND_NOTIFICATION_CHANNEL_ID;
    //                channelName = SOUND_NOTIFICATION_CHANNEL_NAME;
    //                notificationBuilder = new NotificationCompat
    //                                            .Builder(this, channelId)
    //                                            .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
    //                                            //.SetColor(GetColor(Resource.Color.color_notification_icon))
    //                                            .SetContentTitle(data.ContainsKey("title") ? data["title"].ToString() : "")
    //                                            .SetContentText(data.ContainsKey("body") ? data["body"].ToString() : "")
    //                                            .SetPriority((int)NotificationImportance.Max)
    //                                            .SetAutoCancel(true);


    //                channel = new NotificationChannel(channelId, channelName, NotificationImportance.Max);
    //                channel.SetSound(global::Android.Net.Uri.Parse("android.resource://au.com.gmcabs.driverassistant/raw/" + soundFileName), null);
    //            }
    //            /*  Silent Notification Channel */
    //            else if (data["title"].ToString() == "Configuration")
    //            {
    //                channelId = SILENT_NOTIFICATION_CHANNEL_ID;
    //                channelName = SILENT_NOTIFICATION_CHANNEL_NAME;
    //                notificationBuilder = new NotificationCompat
    //                                            .Builder(this, channelId)
    //                                            .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
    //                                            //.SetColor(GetColor(Resource.Color.color_notification_icon))
    //                                            .SetContentTitle(data.ContainsKey("title") ? data["title"].ToString() : "")
    //                                            .SetContentText(data.ContainsKey("body") ? data["body"].ToString() : "")
    //                                            .SetPriority((int)NotificationImportance.Low)
    //                                            .SetNotificationSilent()
    //                                            .SetAutoCancel(true);

    //                channel = new NotificationChannel(channelId, channelName, NotificationImportance.Low);
    //            }
    //            /*  System Sound Notification Channel */
    //            else
    //            {
    //                channelId = SYSTEM_SOUND_NOTIFICATION_CHANNEL_ID;
    //                channelName = SYSTEM_SOUND_NOTIFICATION_CHANNEL_NAME;
    //                notificationBuilder = new NotificationCompat
    //                                            .Builder(this, channelId)
    //                                            .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
    //                                            //.SetColor(GetColor(Resource.Color.color_notification_icon))
    //                                            .SetContentTitle(data.ContainsKey("title") ? data["title"].ToString() : "")
    //                                            .SetContentText(data.ContainsKey("body") ? data["body"].ToString() : "")
    //                                            .SetPriority((int)NotificationImportance.Max)
    //                                            .SetAutoCancel(true);

    //                channel = new NotificationChannel(channelId, channelName, NotificationImportance.Max);
    //            }


    //            NotificationManager notificationManager = (NotificationManager)GetSystemService(NotificationService);

    //            if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
    //            { 
    //                notificationManager.CreateNotificationChannel(channel);
    //            }

    //            notificationManager.Notify(DateTime.Now.Millisecond, notificationBuilder.Build());
    //        }
    //    }
    }
}
