private void DisplayData(SessionsResult sessionInfo)
    {
        if (sessionInfo == null)
        {
            throw new ApplicationException("sesionInfo is null in DisplayData");
        }

        if (sessionInfo.SponsorId.HasValue)
        {
            sponsorId = sessionInfo.SponsorId.Value;
        }

        if (!String.IsNullOrEmpty(sessionInfo.BoxFolderIdString))
        {
            UploadToBoxMailToHrefId.Visible = true;
            UploadToBoxMailToHrefId.HRef = String.Format("mailto:{0}?subject=Attach Slides and Code Files For Upload To Your Session And Send",sessionInfo.BoxFolderEmailInAddress);
            UploadToBoxMailToHrefId.InnerText = "mailto: Custom Mailer That Attaches To Your Session For All Attendees";

            ButtonCreateMailInId.Visible = false;
            ButtonDeleteSlidesFolderId.Visible = true;
        }
        else
        {
            UploadToBoxMailToHrefId.Visible = false;
            ButtonCreateMailInId.Visible = true;
            ButtonDeleteSlidesFolderId.Visible = false;
        }

        TextBoxMaterialUrl.Text = sessionInfo.SessionsMaterialUrl ?? "";

        LabelPresenter.Text = Context.Server.HtmlDecode(CodeCampSV.Utils.GetAttendeeNameByUsername(sessionInfo.Username));
        LabelPresenterAdditional.Text = Context.Server.HtmlDecode(CodeCampSV.Utils.GetSecondaryPresentersBySessionIdString(sessionInfo.Id,sessionInfo.Username));
        TextBoxSummary.Text = Context.Server.HtmlDecode(sessionInfo.Description);
        TextBoxTitle.Text = Context.Server.HtmlDecode(sessionInfo.Title);
        TextBoxHashTags.Text = Context.Server.HtmlDecode(sessionInfo.TwitterHashTags);
        CheckBoxDoNotShowPrimarySpeaker.Checked = sessionInfo.DoNotShowPrimarySpeaker;
        CheckBoxQueueEmailNotification.Checked = sessionInfo.SessionsMaterialQueueToSend.HasValue && sessionInfo.SessionsMaterialQueueToSend.Value;
         //       TextBoxSlides.Text = sessionInfo.SessionsMaterialUrl;

        if (sessionInfo.SessionLevel_id == 1)
        {
            DropDownListLevels.SelectedIndex = 0;
        }
        else if (sessionInfo.SessionLevel_id == 2)
        {
            DropDownListLevels.SelectedIndex = 1;
        }
        else if (sessionInfo.SessionLevel_id == 3)
        {
            DropDownListLevels.SelectedIndex = 2;
        }

        TagsODS tagsODS = new TagsODS();
        List<TagsODS.DataObjectTags> tagsODSli =
            tagsODS.GetAllBySession(string.Empty, sessionsId,false);

        CheckBoxListTags.DataBind();

        foreach (ListItem li in CheckBoxListTags.Items)
        {
            foreach (TagsODS.DataObjectTags dot in tagsODSli)
            {
                if (dot.Tagname.Equals(li.Text))
                {
                    li.Selected = true;
                }
            }
        }

        if (sessionInfo.SpeakersList != null && sessionInfo.SpeakersList.Count == 1)
        {
            SpeakerHandle2Tr.Visible = false;
            SpeakerHandle3Tr.Visible = false;
        }

        if (sessionInfo.SpeakersList != null && sessionInfo.SpeakersList.Count == 2)
        {
            SpeakerHandle3Tr.Visible = false;
        }

        if (SpeakerHandle1Tr.Visible && sessionInfo.SpeakersList != null && sessionInfo.SpeakersList.Count > 0)
        {
            SpeakerName1.Text = sessionInfo.SpeakersList[0].UserFirstName  + " " +
                                  sessionInfo.SpeakersList[0].UserLastName;
            TextBoxSpeakerHandle1.Text = sessionInfo.SpeakersList[0].TwitterHandle ?? "";
            SpeakerHandle1Id.Text = sessionInfo.SpeakersList[0].AttendeeId.ToString(CultureInfo.InvariantCulture);
        }

        if (SpeakerHandle2Tr.Visible && sessionInfo.SpeakersList != null && sessionInfo.SpeakersList.Count > 1)
        {
            SpeakerName2.Text = sessionInfo.SpeakersList[1].UserFirstName + " " +
                                  sessionInfo.SpeakersList[1].UserLastName;
            TextBoxSpeakerHandle2.Text = sessionInfo.SpeakersList[1].TwitterHandle ?? "";
            SpeakerHandle2Id.Text = sessionInfo.SpeakersList[1].AttendeeId.ToString(CultureInfo.InvariantCulture);
        }

        if (SpeakerHandle3Tr.Visible && sessionInfo.SpeakersList != null && sessionInfo.SpeakersList.Count > 2)
        {
            SpeakerName3.Text = sessionInfo.SpeakersList[2].UserFirstName + " " +
                                  sessionInfo.SpeakersList[2].UserLastName;
            TextBoxSpeakerHandle3.Text = sessionInfo.SpeakersList[2].TwitterHandle ?? "";
            SpeakerHandle3Id.Text = sessionInfo.SpeakersList[2].AttendeeId.ToString(CultureInfo.InvariantCulture);
        }
    }
 public void UpdateHashTag(SessionsResult sessionResult)
 {
     var rec = SessionsManager.I.Get(new SessionsQuery() {Id = sessionResult.Id}).FirstOrDefault();
     if (rec != null)
     {
         rec.TwitterHashTags = sessionResult.TwitterHashTags;
     }
     SessionsManager.I.Update(rec);
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        //FormsAuthentication.SetAuthCookie("pkellner", true);
        bool keepGoing = true;

        if (Request.QueryString["id"] != null)
        {
            Int32.TryParse((string)Request.QueryString["id"], out sessionsId);
            SessionId = sessionsId;
        }
        else
        {
            keepGoing = false;
            //keepGoing = true;
            //sessionsId = 5;
        }

        if (!IsPostBack)
        {
            if (Utils.CheckUserIsAdmin() || Utils.CheckUserIsRemovePrimarySpeaker())
            {
                DivRemovePrimarySpeakerFromSessionDisplay.Visible = true;
            }
            else
            {
                DivRemovePrimarySpeakerFromSessionDisplay.Visible = false;
            }

            _sessionsResults = SessionsManager.I.Get(new SessionsQuery()
                                                            {
                                                                Id = sessionsId,
                                                                WithSpeakers = true
                                                            }).FirstOrDefault();

            //SessionsODS sessionsODS = new SessionsODS();
            //List<SessionsODS.DataObjectSessions> sessionsLi =
            //    sessionsODS.GetByPrimaryKeySessions(sessionsId);

            //SessionsODS.DataObjectSessions sessionInfo = null;

            if (_sessionsResults != null && keepGoing)
            {
                if (Context.User.Identity.IsAuthenticated)
                {
                    if (!_sessionsResults.Username.Equals(Context.User.Identity.Name) && !CodeCampSV.Utils.CheckUserIsAdmin())
                    {
                        keepGoing = false;
                    }
                }
                else
                {
                    keepGoing = false;
                }
            }

            if (keepGoing)
            {
                if (_sessionsResults != null)
                {
                    DisplayData(_sessionsResults);
                }
            }
            else
            {
                ButtonUpdate1.Enabled = false;
                ButtonUpdate2.Enabled = false;
            }
        }
    }
    protected void CaptchaUltimateControl1_Verified(object sender, EventArgs e)
    {
        bool success = false;
        int idSessionNew = -1;
        Dictionary<string, int> tagsDictionaryByName = new Dictionary<string, int>();

        using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["CodeCampSV06"].ConnectionString))
        {
            sqlConnection.Open();
            // get list of existing categories to make sure doesn't exist already
            string sqlSelectAllCategories = "SELECT TagName,id FROM Tags";
            using (SqlCommand sqlCommandTagList = new SqlCommand(sqlSelectAllCategories, sqlConnection))
            {
                using (SqlDataReader sqlReaderTagListAll = sqlCommandTagList.ExecuteReader())
                {
                    while (sqlReaderTagListAll.Read())
                    {
                        String tagName = sqlReaderTagListAll.GetString(0).ToLower().Trim();
                        int tagId = sqlReaderTagListAll.GetInt32(1);
                        if (!tagsDictionaryByName.ContainsKey(tagName) && !String.IsNullOrEmpty(tagName))
                        {
                            tagsDictionaryByName.Add(tagName, tagId);
                        }
                    }
                }
            }
            // first see if new categories to add.

            List<string> categoriesToAdd = new List<string>();
            if (!String.IsNullOrEmpty(TextBoxAddCategories.Text))
            {
                if (TextBoxAddCategories.Text.Length < 200)
                {  // sanity check
                    char[] delimiterChars = { ',', '.', ':', ';' };
                    string[] categoriesPass1 = TextBoxAddCategories.Text.Split(delimiterChars);
                    foreach (string category in categoriesPass1)
                    {
                        if (!tagsDictionaryByName.ContainsKey(category.ToLower().Trim()) && !String.IsNullOrEmpty(category))
                        {
                            categoriesToAdd.Add(category);
                        }
                    }
                }
            }

            MembershipUser mu = Membership.GetUser();
            List<int> listTagIDs = null;

            // $$$ Broken scope, will not work.  See SessionsEdit.aspx for correct way
            // $$$ currently broken when adding sessionspeaker table, not sure why. 4/2010 PGK
            //using (TransactionScope scope = new TransactionScope())
            //{

            try
            {
                // this is the list of all tagid's we will be inserting into session
                // (need to create now so if person has new ones to insert we can do that now)
                //
                listTagIDs = new List<int>();
                if (categoriesToAdd.Count > 0)
                {
                    string sqlInsertTag =
                       "INSERT INTO  dbo.Tags(TagName) VALUES (@TagName);SELECT @@identity";
                    using (SqlCommand sqlCommandInsertTag = new SqlCommand(sqlInsertTag, sqlConnection))
                    {
                        sqlCommandInsertTag.Parameters.Add("TagName", SqlDbType.VarChar).Value = string.Empty;
                        foreach (string newCategory in categoriesToAdd)
                            if (!String.IsNullOrEmpty(newCategory))
                            {
                                sqlCommandInsertTag.Parameters["TagName"].Value = newCategory;
                                int idTag = Convert.ToInt32((Decimal)sqlCommandInsertTag.ExecuteScalar());
                                listTagIDs.Add(idTag);
                            }
                    }

                }

                int attendeeId =
                    Utils.GetAttendeesIdFromUsername(HttpContext.Current.User.Identity.Name);

                var sessionResult = new SessionsResult
                                                   {
                                                       TweetLineTweetedPreCamp = false,
                                                       TweetLineTweeted = false,
                                                       TweetLine = string.Empty,
                                                       TweetLineTweetedDate = new DateTime(1960,1,1),
                                                       Approved = true,
                                                       CodeCampYearId = Utils.GetCurrentCodeCampYear(),
                                                       //Attendeesid = attendeeId,
                                                       Createdate = DateTime.Now,
                                                       Description = TextBoxDescription.Text.Trim(),
                                                       InterentAccessRequired = CheckBoxInternetAccess.Checked,

                                                       SessionLevel_id =
                                                           Convert.ToInt32(DropDownListLevel.SelectedValue),
                                                       LectureRoomsId = Utils.RoomNotAssigned,
                                                       SessionTimesId = Utils.TimeSessionUnassigned,
                                                       Title = TextBoxTitle.Text.Trim(),
                                                       Username = HttpContext.Current.User.Identity.Name,
                                                       DoNotShowPrimarySpeaker = false,
                                                       TwitterHashTags = TextBoxHashTags.Text
                                                   };
                SessionsManager.I.Insert(sessionResult);
                idSessionNew = sessionResult.Id;

                // THIS SHOULD NOT BE USED BECAUSE IT DOES NOT CONTAIN DEFAULTS FOR NEW SESSIONPRESENTER TABLE

                const string sqlInsertSessionPresenter = "INSERT INTO  SessionPresenter (AttendeeId,SessionId) VALUES (@AttendeeId,@SessionId)";
                using (var sqlCommandInsertSessionPresenter = new SqlCommand(sqlInsertSessionPresenter, sqlConnection))
                {
                    sqlCommandInsertSessionPresenter.Parameters.Add("AttendeeId", SqlDbType.Int).Value = attendeeId;
                    sqlCommandInsertSessionPresenter.Parameters.Add("SessionId", SqlDbType.Int).Value = idSessionNew;
                    sqlCommandInsertSessionPresenter.ExecuteScalar();
                }

                foreach (ListItem item in CheckBoxListTags.Items)
                {

                    if (item.Selected)
                    {
                        String itemText = item.Text.Trim().ToLower();
                        if (tagsDictionaryByName.ContainsKey(itemText))
                        {
                            int tagId = tagsDictionaryByName[itemText];
                            listTagIDs.Add(tagId);
                        }
                        else
                        {
                            throw new ApplicationException(String.Format("problem with tag not in dictionary: {0} {1}", itemText, tagsDictionaryByName.Count));
                        }
                    }
                }

                foreach (int idTag in listTagIDs)
                {
                    SessionTagsManager.I.Insert(new SessionTagsResult
                    {
                        SessionId = idSessionNew,
                        TagId = idTag
                    });
                }
                //scope.Complete();
                success = true;
            }
            catch (Exception ee)
            {
                throw new ApplicationException(String.Format("{0} Items in dictionary: {1}", ee, tagsDictionaryByName.Count));
            }
        }
        //} // end of transaction

        CodeCampSV.Utils.CacheClear("sessions");

        if (success)
        {
            string str = "~/Sessions.aspx?id=" + idSessionNew.ToString();
            // invalidate cache for adds when we add a new user
            CodeCampSV.Utils.ClearDisplayAdCache();
            CodeCampSV.Utils.ClearCacheForSessionTags(idSessionNew);
            Response.Redirect(str);
        }
        else
        {
            LabelStatus.Text = "Error Occurred.  Session Not Submitted.";
        }
    }
 private static void UpdateSessionResultForSessionLevel(SessionsResult sessionsResult)
 {
     if (sessionsResult.SessionLevel.ToLower().StartsWith("beg"))
     {
         sessionsResult.SessionLevel_id = 1;
     }
     else if (sessionsResult.SessionLevel.ToLower().StartsWith("int"))
     {
         sessionsResult.SessionLevel_id = 2;
     }
     else if (sessionsResult.SessionLevel.ToLower().StartsWith("adv"))
     {
         sessionsResult.SessionLevel_id = 3;
     }
     else
     {
         sessionsResult.SessionLevel_id = 1;
     }
 }
        /// <summary>
        ///  only let this update some safe fields.
        /// </summary>
        /// <param name="sessionsResult"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(SessionsResult sessionsResult)
        {
            HttpResponseMessage response;
            if (sessionsResult != null)
            {
                sessionsResult.Title = sessionsResult.Title.Trim();

                //if (sessionsResult.Title.StartsWith("bad"))
                //{
                //    response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "session started with bad so erroring!");
                //    return response;
                //}

                var session =
                    SessionsManager.I.Get(new SessionsQuery
                        {
                            Id = sessionsResult.Id
                        }).FirstOrDefault();

                if (session != null)
                {
                    UpdateSessionResultForSessionLevel(sessionsResult);
                    session.Title = sessionsResult.Title;
                    session.Description = sessionsResult.Description;
                    session.TwitterHashTags = sessionsResult.TwitterHashTags;
                    session.SessionLevel_id = sessionsResult.SessionLevel_id;

                    SessionsManager.I.Update(session);

                    response = Request.CreateResponse(HttpStatusCode.OK, sessionsResult);
                }
                else
                {
                    response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed,
                                                           "No SessionId Found For Update");
                }
            }
            else
            {
                response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "SessionResult passed in is null.  Not continuing");
                //    return response;
            }

            return response;
        }
        // POST INSERT rest/session
        public HttpResponseMessage Post(SessionsResult sessionsResult)
        {
            HttpResponseMessage response;
            //string loggedInUsername = "";
            bool sessionAccepted = false;
            int attendeesId = -1;

            if (!User.Identity.IsAuthenticated || String.IsNullOrEmpty(User.Identity.Name))
            {
                response = Request.CreateErrorResponse(HttpStatusCode.Forbidden,
                                                       "Can not create session without being logged in");
            }
            else if (sessionsResult == null)
            {
                response = Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed,
                                                       "no session values passed in");
            }
            else
            {
                //loggedInUsername = User.Identity.Name;
                sessionsResult.Title = sessionsResult.Title.Trim();
                var attendeeRec =
                    AttendeesManager.I.Get(new AttendeesQuery() {Id = sessionsResult.LoggedInUserAttendeeId})
                                    .FirstOrDefault();
                if (attendeeRec != null)
                {
                    attendeesId = attendeeRec.Id;
                    // must have PresentationApprovalRequired set to false (not null) for preapproval
                    if (attendeeRec.PresentationApprovalRequired.HasValue &&
                        attendeeRec.PresentationApprovalRequired.Value == false)
                    {
                        sessionAccepted = true;
                    }
                }

                string message;
                bool canPresent = Utils.GetSpeakerCanPresent(attendeesId, out message);
                if (canPresent)
                {
                    UpdateSessionResultForSessionLevel(sessionsResult);
                    var session = new SessionsResult()
                        {
                            Createdate = DateTime.UtcNow,
                            CodeCampYearId = Utils.CurrentCodeCampYear,
                            Title = sessionsResult.Title,
                            Description = sessionsResult.Description,
                            SessionLevel_id = sessionsResult.SessionLevel_id,
                            TwitterHashTags = sessionsResult.TwitterHashTags,
                            Approved = sessionAccepted,
                            LectureRoomsId = Utils.RoomNotAssigned,
                            SessionTimesId = Utils.TimeSessionUnassigned,
                        };
                    SessionsManager.I.Insert(session);
                    response = Request.CreateResponse(HttpStatusCode.OK, session);
                }
                else
                {
                    response = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "session submission not allowed");
                }
            }

            return response;
        }