using Android.App;
using Android.Content;
using Android.OS;
using AndroidX.Core.App;
using GMCabsDriverAssistantSolution.Platforms.Android.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

[assembly: Dependency(typeof(NotificationHelper))]
namespace GMCabsDriverAssistantSolution.Platforms.Android.Helpers
{
    internal class NotificationHelper : INotification
    {
        private static string foregroundChannelId = "9001";
        private static Context context = global::Android.App.Application.Context;

        public Notification ReturnNotif()
        {
            var intent = new Intent(context, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.SingleTop);
            intent.PutExtra("Title", "Message");

            var pendingIntentFlags = (Build.VERSION.SdkInt >= BuildVersionCodes.S)
              ? PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Mutable
              : PendingIntentFlags.UpdateCurrent;
            var pendingActivityIntent = PendingIntent.GetActivity(context, 0, intent, pendingIntentFlags);
            var pendingIntent = PendingIntent.GetBroadcast(context, 0, intent, pendingIntentFlags);

            var notifBuilder = new NotificationCompat.Builder(context, foregroundChannelId)
             .SetContentTitle("Location")
             .SetContentText("Update location")
             .SetOngoing(true)
             .SetContentIntent(pendingIntent);


            if (global::Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.O)
            {
                NotificationChannel notificationChannel = new NotificationChannel(foregroundChannelId, "Title", NotificationImportance.High);
                notificationChannel.Importance = NotificationImportance.High;
                notificationChannel.EnableLights(true);
                notificationChannel.EnableVibration(true);
                notificationChannel.SetShowBadge(true);
                notificationChannel.SetVibrationPattern(new long[] { 100, 200, 300 });

                var notifManager = context.GetSystemService(Context.NotificationService) as NotificationManager;
                if (notifManager != null)
                {
                    notifBuilder.SetChannelId(foregroundChannelId);
                    notifManager.CreateNotificationChannel(notificationChannel);
                }
            }

            return notifBuilder.Build();
        }
    }
}
