protected void btnPurgeEvent_Click(object sender, EventArgs e)
        {
            checkLogin();
            //create session variable to indicate a change was made on child page
            var reset = "reset";

            Session["resetToken"] = reset;
            //capture selected event id from session variable
            try
            {
                int selectedEventID = (int)Session["selectedEventID"];
                //retrieve event from db
                BusinessObjects.ExEvent selectedExEvent = _myExEventManager.FetchEvent(selectedEventID);
                try
                {
                    _myExEventManager.DeleteExEvent(selectedExEvent);
                }
                catch (Exception)
                {
                }
            }
            catch (Exception)
            {
            }
            Page.ClientScript.RegisterStartupScript(this.GetType(), "myCloseScript", "window.close()", true);
            //System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Event deleted successfully');", true);
        }
        public void updateEvent(string status)
        {
            checkLogin();
            //retrieve logged in user info
            //create new event
            //update new event to reflect submitted changes
            BusinessObjects.Employee loggedInEmployee = (BusinessObjects.Employee)Session["loggedInUser"];
            try
            {
                int selectedEventID = (int)Session["selectedEventID"];

                BusinessObjects.ExEvent originalExEvent = _myExEventManager.FetchEvent(selectedEventID);
                BusinessObjects.ExEvent updatedExEvent  = new BusinessObjects.ExEvent();

                updatedExEvent.eventID        = originalExEvent.eventID;
                updatedExEvent.eventDate      = originalExEvent.eventDate;
                updatedExEvent.employeeID     = originalExEvent.employeeID;
                updatedExEvent.submissionDate = originalExEvent.submissionDate;
                updatedExEvent.activityName   = originalExEvent.activityName;
                updatedExEvent.startTime      = originalExEvent.startTime;
                updatedExEvent.endTime        = originalExEvent.endTime;
                updatedExEvent.statusName     = status;
                updatedExEvent.activityNote   = originalExEvent.activityNote;

                updatedExEvent.completedBy   = loggedInEmployee.FirstName + " " + loggedInEmployee.LastName;
                updatedExEvent.completedDate = DateTime.Now;
                _myExEventManager.UpdateExEvent(originalExEvent, updatedExEvent);
            }
            catch (Exception)
            {
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            checkLogin();
            //capture form fields
            DateTime eventDate      = Convert.ToDateTime(txtEventDate.Text);
            int      EmployeeID     = loggedInEmployee.EmployeeID;
            DateTime submissionDate = DateTime.Now;
            string   activity       = listActivity.SelectedItem.Value;
            string   startTime      = startHour.Text + ":" + startMinute.Text + " " + startAMPM.Text;
            string   endTime        = endHour.Text + ":" + endMinute.Text + " " + endAMPM.Text;
            string   statusName     = "Pending";
            string   note           = txtActivityNote.Text;

            //create new event object with form data
            BusinessObjects.ExEvent eventToAdd = new BusinessObjects.ExEvent();
            eventToAdd.eventDate      = eventDate;
            eventToAdd.employeeID     = EmployeeID;
            eventToAdd.submissionDate = submissionDate;
            eventToAdd.activityName   = activity;
            eventToAdd.startTime      = startTime;
            eventToAdd.endTime        = endTime;
            eventToAdd.statusName     = statusName;
            eventToAdd.activityNote   = note;
            //add event to db
            try
            {
                _myExEventManager.AddExEvent(eventToAdd);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "myCloseScript", "window.close()", true);
                //System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Submission Received');", true);
            }
            catch (Exception)
            {
            }
        }
        protected void btnMarkPending_Click(object sender, EventArgs e)
        {
            checkLogin();
            //create session variable to indicate a change was made on child page
            var reset = "reset";

            Session["resetToken"] = reset;
            //obtain info for current event
            //create object to hold updated event
            //change updated event status to pending
            try
            {
                int selectedEventID = (int)Session["selectedEventID"];
                BusinessObjects.ExEvent selectedExEvent = _myExEventManager.FetchEvent(selectedEventID);
                BusinessObjects.ExEvent updatedExEvent  = new BusinessObjects.ExEvent();
                updatedExEvent.eventID        = selectedExEvent.eventID;
                updatedExEvent.eventDate      = Convert.ToDateTime(txtEventDate.Text);
                updatedExEvent.employeeID     = selectedExEvent.employeeID;
                updatedExEvent.submissionDate = selectedExEvent.submissionDate;
                updatedExEvent.activityName   = listActivity.SelectedItem.Value;
                updatedExEvent.startTime      = startHour.SelectedItem.Value + ":" + startMinute.SelectedItem.Value + " " + startAMPM.SelectedItem.Value;
                updatedExEvent.endTime        = endHour.SelectedItem.Value + ":" + endMinute.SelectedItem.Value + " " + endAMPM.SelectedItem.Value;
                updatedExEvent.statusName     = "Pending";
                updatedExEvent.activityNote   = txtActivityNote.Text;

                //remove rejected event
                try
                {
                    _myExEventManager.DeleteExEvent(selectedExEvent);
                }
                catch (Exception)
                {
                }

                //resubmit updated event as a new event
                try
                {
                    _myExEventManager.AddExEvent(updatedExEvent);
                }
                catch (Exception)
                {
                }
            }
            catch (Exception)
            {
            }
            Page.ClientScript.RegisterStartupScript(this.GetType(), "myCloseScript", "window.close()", true);
            //System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Exception resubmitted as a new pending event.');", true);
        }
        public void updateEvent(string status)
        {
            //create employee object from stored sessoin variable
            BusinessObjects.Employee loggedInEmployee = (BusinessObjects.Employee)Session["loggedInUser"];
            try
            {
                int selectedEventID = (int)Session["selectedEventID"];

                BusinessObjects.ExEvent originalExEvent = _myExEventManager.FetchEvent(selectedEventID);
                BusinessObjects.ExEvent updatedExEvent  = new BusinessObjects.ExEvent();

                updatedExEvent.eventID        = originalExEvent.eventID;
                updatedExEvent.eventDate      = Convert.ToDateTime(txtEventDate.Text);
                updatedExEvent.employeeID     = originalExEvent.employeeID;
                updatedExEvent.submissionDate = originalExEvent.submissionDate;
                updatedExEvent.activityName   = listActivity.SelectedItem.Value;
                updatedExEvent.startTime      = startHour.SelectedItem.Value + ":" + startMinute.SelectedItem.Value + " " + startAMPM.SelectedItem.Value;
                updatedExEvent.endTime        = endHour.SelectedItem.Value + ":" + endMinute.SelectedItem.Value + " " + endAMPM.SelectedItem.Value;
                updatedExEvent.statusName     = status;
                updatedExEvent.activityNote   = txtActivityNote.Text;

                //if the new event status is completed or rejected, capture and update info for completed on and completed by
                if (status != "Pending")
                {
                    updatedExEvent.completedBy   = loggedInEmployee.FirstName + " " + loggedInEmployee.LastName;
                    updatedExEvent.completedDate = DateTime.Now;
                    _myExEventManager.UpdateExEvent(originalExEvent, updatedExEvent);
                }
                else
                {
                    updatedExEvent.completedDate = originalExEvent.completedDate;
                    updatedExEvent.completedBy   = originalExEvent.completedBy;
                    _myExEventManager.UpdateExEventToPending(originalExEvent, updatedExEvent);
                }
                //Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", "window.close()", true);
                //System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Submission Updated Successfully');", true);
                //Response.End();
            }
            catch (Exception)
            {
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            checkLogin();
            //create session variable to indicate a change was made on child page
            var reset = "reset";

            Session["resetToken"] = reset;
            //update event with data in form fields
            try
            {
                int selectedEventID = (int)Session["selectedEventID"];
                BusinessObjects.ExEvent selectedExEvent = _myExEventManager.FetchEvent(selectedEventID);
                updateEvent(selectedExEvent.statusName);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "OnClose", "window.close()", true);
                //Response.Close();
            }
            catch (Exception)
            {
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            checkLogin();
            if (!IsPostBack)
            {
                //find current list of activities and bind to activity drop down list
                List <Activity> activitiesToList = _myExEventManager.FetchActivityList();
                listActivity.DataTextField  = "activityName";
                listActivity.DataValueField = "activityName";
                listActivity.DataSource     = activitiesToList;
                listActivity.DataBind();
            }
            //disable form fields by default on page load
            lblCompletedOn.Visible   = false;
            txtCompletedOn.Visible   = false;
            lblCompletedBy.Visible   = false;
            txtCompletedBy.Visible   = false;
            btnSave.Visible          = false;
            btnMarkCompleted.Visible = false;
            btnMarkRejected.Visible  = false;
            btnMarkPending.Visible   = false;
            btnPurgeEvent.Visible    = false;

            if (Session["selectedEventID"] != null)
            {
                if (!IsPostBack)
                {
                    //extract current event id from session variable
                    int selectedEventID = (int)Session["selectedEventID"];
                    txtEventDate.Text = selectedEventID.ToString();

                    try
                    {
                        //search db for event by event id
                        BusinessObjects.ExEvent selectedExEvent = _myExEventManager.FetchEvent(selectedEventID);
                        try
                        {
                            //search db for employee that event belongs to, then populate form field with employee full name
                            BusinessObjects.Employee selectedEmployee = new BusinessObjects.Employee();
                            selectedEmployee = _myEmployeeManager.FindSingleEmployee(selectedExEvent.employeeID);
                            txtAgent.Text    = selectedEmployee.FirstName + " " + selectedEmployee.LastName;
                        }
                        catch (Exception)
                        {
                        }
                        //obtain info for logged in user
                        //populate remaining form fields with user/event info
                        Employee loggedInEmployee = (Employee)Session["loggedInUser"];
                        txtStatus.Text             = selectedExEvent.statusName;
                        txtSubmissionDate.Text     = selectedExEvent.submissionDate.ToShortDateString();
                        txtEventDate.Text          = (selectedExEvent.eventDate).ToShortDateString();
                        listActivity.SelectedValue = selectedExEvent.activityName;
                        string   eventStartTime = selectedExEvent.startTime;
                        string[] splitStartTime = eventStartTime.Split(delimiterChars);
                        startHour.SelectedValue   = splitStartTime[0];
                        startMinute.SelectedValue = splitStartTime[1];
                        startAMPM.SelectedValue   = splitStartTime[2];

                        string   eventEndTime = selectedExEvent.endTime;
                        string[] splitEndTime = eventEndTime.Split(delimiterChars);
                        endHour.SelectedValue   = splitEndTime[0];
                        endMinute.SelectedValue = splitEndTime[1];
                        endAMPM.SelectedValue   = splitEndTime[2];

                        txtActivityNote.Text = selectedExEvent.activityNote;

                        //if event is completed, show info for completed by user and completed on date
                        if (selectedExEvent.statusName == "Completed")
                        {
                            lblCompletedOn.Visible = true;
                            txtCompletedOn.Visible = true;
                            lblCompletedBy.Visible = true;
                            txtCompletedBy.Visible = true;
                            txtCompletedOn.Text    = (selectedExEvent.completedDate).ToShortDateString();
                            txtCompletedBy.Text    = selectedExEvent.completedBy;
                        }
                        //if the event is pending, and the logged in user is a supervisor or lead, display buttons to complete or reject the event
                        else if (selectedExEvent.statusName == "Pending" && loggedInEmployee.RoleName != "Agent")
                        {
                            btnSave.Visible          = true;
                            btnMarkCompleted.Visible = true;
                            btnMarkRejected.Visible  = true;
                        }
                        //if the event is rejected, and the logged in user is a supervisor or lead, display buttons to purge the event or revert the status back to pending
                        else if (selectedExEvent.statusName == "Rejected" && loggedInEmployee.RoleName != "Agent")
                        {
                            lblCompletedOn.Visible = true;
                            txtCompletedOn.Visible = true;
                            lblCompletedBy.Visible = true;
                            txtCompletedBy.Visible = true;
                            btnMarkPending.Visible = true;
                            btnPurgeEvent.Visible  = true;
                            txtCompletedOn.Text    = (selectedExEvent.completedDate).ToShortDateString();
                            txtCompletedBy.Text    = selectedExEvent.completedBy;
                        }
                        //if the event is pending, and the user is not a supervisor or lead, only display button to save changes to the event
                        else if (selectedExEvent.statusName == "Pending")
                        {
                            btnSave.Visible = true;
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }