/// <summary>
        /// Retrieves all the events and updates the custom control panel
        /// </summary>
        private void InitEvents()
        {
            using (var db = new EventContext())
            {
                _events = (from userEvent in db.Events where (userEvent.User.UserId == _user.UserId)
                           select userEvent).ToList();
                _events = _events.Where(usrEvnt => (usrEvnt.StartDateTime >= startDtPicker.Value &&
                                                    usrEvnt.EndDateTime >= startDtPicker.Value &&
                                                    usrEvnt.StartDateTime <= endDtPicker.Value &&
                                                    usrEvnt.EndDateTime <= endDtPicker.Value)).ToList();

                SetRepeatEvent();

                foreach (var userEvent in _events)
                {
                    EventDetailsPanel eventDetailsPanel = new EventDetailsPanel(_user, userEvent);
                    eventDetailsPanel.Tag = userEvent.EventId;
                    eventDetailsPanel.RepeatButtonClick  += EventDetailsPanel_RepeatButtonClick;
                    eventDetailsPanel.RemoveButtonClick  += EventDetailsPanel_RemoveButtonClick;
                    eventDetailsPanel.EditButtonClick    += EventDetailsPanel_EditButtonClick;
                    eventDetailsPanel.ControlDoubleClick += EventDetailsPanel_ControlDoubleClick;
                    flowLayoutPanel1.Controls.Add(eventDetailsPanel);
                }
            }
        }
        ///// <summary>
        ///// Struct which holds the event
        ///// repetition data
        ///// </summary>
        //struct EventRepeatStat
        //{
        //    public Event UserEvent;
        //    public DateTime RepeatStartDateTime;
        //    public DateTime RepeatEndDateTime;
        //}

        /// <summary>
        /// Allow user to see an event's
        /// full details
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EventDetailsPanel_ControlDoubleClick(object sender, EventArgs e)
        {
            EventDetailsPanel temp      = (EventDetailsPanel)sender;
            Event             userEvent = temp.Event;

            EventView eventView = new EventView(userEvent, _user);

            eventView.ShowDialog(this);
        }
        private void EventDetailsPanel_EditButtonClick(object sender, EventArgs e)
        {
            EventDetailsPanel temp      = (EventDetailsPanel)sender;
            Event             userEvent = temp.Event;

            //MessageBox.Show("Edit btn click!", "Info!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            // Redirect to the edit event view
            EditEventView editEventView = new EditEventView(userEvent, _user);

            editEventView.ShowDialog(this);
        }
        private void EventDetailsPanel_RepeatButtonClick(object sender, EventArgs e)
        {
            EventDetailsPanel temp      = (EventDetailsPanel)sender;
            Event             tempEvent = temp.Event;

            // Switch the Recurr property
            tempEvent.Recurr = !tempEvent.Recurr;

            UpdateEvent(tempEvent);
            flowLayoutPanel1.Controls.Clear();
            InitEvents();
        }
        private void EventDetailsPanel_RemoveButtonClick(object sender, EventArgs e)
        {
            EventDetailsPanel temp     = (EventDetailsPanel)sender;
            Event             delEvent = temp.Event;

            if (MessageBox.Show("Please confirm before proceed"
                                + "\n" + "Do you want to Delete event: '" + delEvent.EventTitle + "' ?",
                                "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                //if YES
                DeleteEvent(delEvent.EventId);
            }
        }