private void Dashboard_Activated(object sender, EventArgs e)
 {
     if (UserSession.signIn)
     {
         _createEvents(DateTime.Now);
         _createTransactions(DateTime.Now);
         LblUserName.Text = UserSession.UserData.UserName;
         if (!RecurringBackground.IsBusy)
         {
             RecurringBackground.RunWorkerAsync();
         }
     }
     else
     {
         LoginForm loginForm = new LoginForm();
         loginForm.Activate();
         loginForm.Show();
     }
 }
        public async void _checkRecurringTransaction()
        {
            NormalTransactionRepository    normalTransactionRepository    = new NormalTransactionRepository();
            RecurringTransactionRepository recurringTransactionRepository = new RecurringTransactionRepository();

            List <RecurringTransaction> recurringTransactionList = recurringTransactionRepository.GetTransactions(UserSession.UserData.Id);

            foreach (RecurringTransaction recurringTransaction in recurringTransactionList)
            {
                int noOfDays = (DateTime.Now - UserSession.UserData.LastAccessDate).Days;

                DateTime recurringTime = UserSession.UserData.LastAccessDate;
                TimeSpan timeSpan      = new TimeSpan(recurringTransaction.TransactionDate.Hour, recurringTransaction.TransactionDate.Minute, recurringTransaction.TransactionDate.Second);
                recurringTime = recurringTime.Date + timeSpan;

                for (int i = 0; i <= noOfDays; i++)
                {
                    if (recurringTransaction.Status.Equals("Weekly"))
                    {
                        if (recurringTime.DayOfWeek != recurringTransaction.TransactionDate.DayOfWeek)
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringTransaction.Status.Equals("Monthly"))
                    {
                        if (recurringTime.Day != recurringTransaction.TransactionDate.Day)
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringTransaction.Status.Equals("Yearly"))
                    {
                        string recurringTimeString = recurringTime.ToString("dd/MM");
                        string createdDateString   = recurringTransaction.TransactionDate.ToString("dd/MM");
                        if (!recurringTimeString.Equals(createdDateString))
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringTime > UserSession.UserData.LastAccessDate && recurringTime <= DateTime.Now && recurringTime > recurringTransaction.TransactionDate)
                    {
                        _messageStatus = await Task.Run(() => normalTransactionRepository.AddNormalTransaction(new Transaction
                        {
                            Name            = recurringTransaction.Name,
                            Amount          = recurringTransaction.Amount,
                            Type            = recurringTransaction.Type,
                            TransactionDate = recurringTime,
                            Note            = recurringTransaction.Note,
                            ContactId       = recurringTransaction.ContactId,
                            UserId          = recurringTransaction.UserId
                        }));

                        RecurringBackground.ReportProgress(1, "New Transaction has been Added");
                    }
                    recurringTime = recurringTime.AddDays(1);
                }
            }
        }
        public async void _checkRecurringEvent()
        {
            EventRepository          _eventRepository          = new EventRepository();
            RecurringEventRepository _recurringEventRepository = new RecurringEventRepository();
            List <RecurringEvent>    recurringEventList        = _recurringEventRepository.GetEvents(UserSession.UserData.Id);

            foreach (RecurringEvent recurringEvent in recurringEventList)
            {
                int noOfDays = (DateTime.Now - UserSession.UserData.LastAccessDate).Days;

                DateTime recurringTime = UserSession.UserData.LastAccessDate;
                TimeSpan timeSpan      = new TimeSpan(recurringEvent.EventDate.Hour, recurringEvent.EventDate.Minute, recurringEvent.EventDate.Second);
                recurringTime = recurringTime.Date + timeSpan;

                for (int i = 0; i <= noOfDays; i++)
                {
                    if (recurringEvent.Status.Equals("Weekly"))
                    {
                        if (recurringTime.DayOfWeek != recurringEvent.EventDate.DayOfWeek)
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringEvent.Status.Equals("Monthly"))
                    {
                        if (recurringTime.Day != recurringEvent.EventDate.Day)
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringEvent.Status.Equals("Yearly"))
                    {
                        string recurringTimeString = recurringTime.ToString("dd/MM");
                        string createdDateString   = recurringEvent.EventDate.ToString("dd/MM");
                        if (!recurringTimeString.Equals(createdDateString))
                        {
                            recurringTime = recurringTime.AddDays(1);
                            continue;
                        }
                    }

                    if (recurringTime > UserSession.UserData.LastAccessDate && recurringTime <= DateTime.Now && recurringTime > recurringEvent.EventDate)
                    {
                        _messageStatus = await Task.Run(() => _eventRepository.AddEvent(new Event
                        {
                            Name      = recurringEvent.Name,
                            Location  = recurringEvent.Location,
                            Type      = recurringEvent.Type,
                            EventDate = recurringTime,
                            Note      = recurringEvent.Note,
                            ContactId = recurringEvent.ContactId,
                            UserId    = recurringEvent.UserId
                        }));

                        RecurringBackground.ReportProgress(1, "New Event has been Added");
                    }
                    recurringTime = recurringTime.AddDays(1);
                }
            }
        }