예제 #1
0
        private void AlertUser(PrayTimeKind prayKind, TimeSpan remainingTime)
        {
            var message =
                $"{prayKind.Stringify()} namazi vaktinin çıkması için kalan süre: {remainingTime.Hours}:{remainingTime.Minutes}:{remainingTime.Seconds}" +
                $"{Environment.NewLine}Bildirim Zamanı: {DateTime.Now.ToString("HH:mm")}";

            var notification = new Plugin.LocalNotification.LocalNotification
            {
                NotificationId = 100,
                Title          = "Namaz Vakti",
                Description    = message,
                ReturningData  = "Dummy data",
                BadgeNumber    = 1
            };

            notificationService.Show(notification);
        }
예제 #2
0
        public static string Stringify(this PrayTimeKind prayTimeKind)
        {
            switch (prayTimeKind)
            {
            case PrayTimeKind.Sabah:
                return("Sabah");

            case PrayTimeKind.Ogle:
                return("Öğle");

            case PrayTimeKind.Ikindi:
                return("İkindi");

            case PrayTimeKind.Aksam:
                return("Akşam");

            case PrayTimeKind.Yatsi:
                return("Yatsı");
            }

            return(null);
        }
예제 #3
0
        internal async void RunCycle()
        {
            var cycleStartTm = DateTime.Now;

            DailyTimes[] dailyTimes = null;
            var(success, file) = strg.GetFile(fileName);

            if (!success)
            {
                var ok = await CheckConnection2();

                if (!ok)
                {
                    return;
                }
                dailyTimes = PullMonthlyData();
            }
            else
            {
                dailyTimes = JsonConvert.DeserializeObject <DailyTimes[]>(file);

                if (!dailyTimes.Any(dt => dt.Date > cycleStartTm.Date))
                {
                    var ok = await CheckConnection2();

                    if (!ok)
                    {
                        return;
                    }
                    dailyTimes = PullMonthlyData();
                }
            }

            var todaysData = dailyTimes.FirstOrDefault(dd => dd.Date == cycleStartTm.Date);

            mainViewModel.TimeTable = todaysData;
            var tomorrowData = dailyTimes.FirstOrDefault(dd => dd.Date == cycleStartTm.Date.AddDays(1));


            if (DateTime.Now.Date > cycleStartTm.Date)
            {
                RunCycle();                                       //if the day passed since the method started
            }
            switch (DateTime.Now.TimeOfDay)
            {
            case var now when todaysData.Imsak.TimeOfDay < now && now < todaysData.Gunes.TimeOfDay:
                if (prayTimeKind != PrayTimeKind.Sabah)
                {
                    mainViewModel.PrayerPerformed = false;
                    prayTimeKind = PrayTimeKind.Sabah;
                }
                mainViewModel.PrayerTimeEndline = todaysData.Gunes;
                break;

            case var now when todaysData.Ogle.TimeOfDay < now && now < todaysData.Ikindi.TimeOfDay:
                if (prayTimeKind != PrayTimeKind.Ogle)
                {
                    mainViewModel.PrayerPerformed = false;
                    prayTimeKind = PrayTimeKind.Ogle;
                }
                mainViewModel.PrayerTimeEndline = todaysData.Ikindi;
                break;

            case var now when todaysData.Ikindi.TimeOfDay < now && now < todaysData.Aksam.TimeOfDay:
                if (prayTimeKind != PrayTimeKind.Ikindi)
                {
                    mainViewModel.PrayerPerformed = false;
                    prayTimeKind = PrayTimeKind.Ikindi;
                }
                mainViewModel.PrayerTimeEndline = todaysData.Aksam;
                break;

            case var now when todaysData.Aksam.TimeOfDay < now && now < todaysData.Yatsi.TimeOfDay:
                if (prayTimeKind != PrayTimeKind.Aksam)
                {
                    mainViewModel.PrayerPerformed = false;
                    prayTimeKind = PrayTimeKind.Aksam;
                }
                mainViewModel.PrayerTimeEndline = todaysData.Yatsi;
                break;

            case var now when todaysData.Yatsi.TimeOfDay < now || now < tomorrowData.Imsak.TimeOfDay:
                if (prayTimeKind != PrayTimeKind.Yatsi)
                {
                    mainViewModel.PrayerPerformed = false;
                    prayTimeKind = PrayTimeKind.Yatsi;
                }
                mainViewModel.PrayerTimeEndline = tomorrowData.Imsak;
                break;

            default: mainViewModel.PrayerTimeEndline = DateTime.MaxValue;
                prayTimeKind = PrayTimeKind.None;
                break;
            }
            mainViewModel.PrayerTimeKind   = prayTimeKind;
            mainViewModel.KilindiSwEnabled = prayTimeKind != PrayTimeKind.None;

            if (prayTimeKind == PrayTimeKind.None)
            {
                return;
            }

            var remainingTime = mainViewModel.PrayerTimeEndline - DateTime.Now;

            if (mainViewModel.AlertOpen && !mainViewModel.PrayerPerformed)
            {
                AlertUser(prayTimeKind, remainingTime);
            }
        }