/**
         * This function will get the current users ID based on their login.
         * It will populate a gridview of all the notes the user has created.
         **/
        protected void getNotes()
        {
            var userStore = new UserStore<IdentityUser>();
            var manager = new UserManager<IdentityUser>(userStore);
            var userID = User.Identity.GetUserId();

            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var objE = (from bg in db.blogs

                                join br in db.blog_references on bg.blogID equals br.blogID
                                join bt in db.blog_title on bg.blogID equals bt.blogID
                                join bp in db.blog_post on bg.blogID equals bp.blogID
                                where bg.userID == userID
                                select new { bg.blogID, br.bookName, br.chapterID, br.verseID, bt.title, bp.post });

                    grdNotes.DataSource = objE.ToList();
                    grdNotes.DataBind();
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
        }
        public void getBible(int bookNum)
        {
            int bN = bookNum;
            using (DefaultConnectionEF db = new DefaultConnectionEF())
            {
                var objE = (from b in db.BibleBasicEnglishes
                            where b.bookNum == bN
                            select b).ToList();

                grdBible.DataSource = objE.ToList();
                grdBible.DataBind();

            }
        }
        protected void btnNext_Click(object sender, EventArgs e)
        {
            Session["bookNum"] = Convert.ToInt32(Session["bookNum"]) + 1;
            int bookNum = Convert.ToInt32(Session["bookNum"]);
            if (Convert.ToInt32(Session["bookNum"]) >= 66)
            {
                btnNextBook.Visible = false;
                btnPreviousBook.Visible = true;

                try
                {
                    using (DefaultConnectionEF db = new DefaultConnectionEF())
                    {
                        var book = (from b in db.BibleBasicEnglishes
                                    where b.bookNum == bookNum
                                    select b).FirstOrDefault();

                        lblCurrentBook.Text = book.Book;

                        getBible(bookNum);
                    }
                }
                catch (Exception ex)
                {
                    Response.Redirect("/errors.aspx");
                }
            }
            else
            {
                btnPreviousBook.Visible = true;
                try
                {
                    using (DefaultConnectionEF db = new DefaultConnectionEF())
                    {
                        var book = (from b in db.BibleBasicEnglishes
                                    where b.bookNum == bookNum
                                    select b).FirstOrDefault();

                        lblCurrentBook.Text = book.Book;
                        getBible(bookNum);

                    }
                }
                catch (Exception ex)
                {
                    Response.Redirect("/errors.aspx");
                }
            }
        }
        protected void GetBible()
        {
            //connect using our connection string from web.config and EF context class
            using (DefaultConnectionEF conn = new DefaultConnectionEF())
            {
                //use link to query the Departments model
                var bible = from b in conn.BibleBasicEnglishes
                            select b;

                //bind the query result to the gridview
                string sortString = Session["sortColumn"].ToString() + " " + Session["sortDirection"].ToString();
               // grdBible.DataSource = bible.AsQueryable().OrderBy(sortString).ToList();
               // grdBible.DataBind();
            }
        }
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            try
            {
                // Default UserStore constructor uses the default connection string named: DefaultConnection
                var userStore = new UserStore<IdentityUser>();
                var manager = new UserManager<IdentityUser>(userStore);

                var user = new IdentityUser() { UserName = txtUsername.Text };
                IdentityResult result = manager.Create(user, txtPassword.Text);

                if (result.Succeeded)
                {
                    //lblStatus.Text = string.Format("User {0} was created successfully!", user.UserName);
                    //lblStatus.CssClass = "label label-success";

                    var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
                    var userIdentity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
                    authenticationManager.SignIn(new AuthenticationProperties() { }, userIdentity);

                    //add user to users db
                    using (DefaultConnectionEF db = new DefaultConnectionEF())
                    {

                        blogUser u = new blogUser();
                        u.userID = user.Id;
                        u.fName = txtFName.Text;
                        u.lName = txtLName.Text;

                        db.blogUsers.Add(u);
                        db.SaveChanges();

                    }
                    //redirect to main menu
                    Response.Redirect("/admin/bibleMenu.aspx");
                }
                else
                {
                    //lblStatus.Text = result.Errors.FirstOrDefault();
                    //lblStatus.CssClass = "label label-danger";
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
        }
        /**
         * This method will delete a note by getting the row index and using the blogID
         * it will remove all instances from all tables.
         **/
        protected void grdNotes_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Int32 selectedRow = e.RowIndex;

            //get the selected StudentID using the grids Data Key collection
            Int32 blogID = Convert.ToInt32(grdNotes.DataKeys[selectedRow].Values["blogID"]);

                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    //query for blog result
                    blog b = (from objs in db.blogs
                              where objs.blogID == blogID
                              select objs).FirstOrDefault();

                    //query for blog post result
                    blog_post bp = (from objs in db.blog_post
                                    where objs.blogID == blogID
                                    select objs).FirstOrDefault();

                    //query for blog title result
                    blog_title bt = (from objs in db.blog_title
                                     where objs.blogID == blogID
                                     select objs).FirstOrDefault();

                    //query for blog references result
                    blog_references br = (from objs in db.blog_references
                                          where objs.blogID == blogID
                                          select objs).FirstOrDefault();

                    //remove blog references
                    db.blog_references.Remove(br);
                    db.SaveChanges();
                    //remove blog title
                    db.blog_title.Remove(bt);
                    db.SaveChanges();
                    //remove blog post
                    db.blog_post.Remove(bp);
                    db.SaveChanges();
                    //remove blog
                    db.blogs.Remove(b);
                    db.SaveChanges();
                }
                //refresh the grid
                getNotes();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            //get userID from asp db
                var userStore = new UserStore<IdentityUser>();
                var manager = new UserManager<IdentityUser>(userStore);
                var userID = User.Identity.GetUserId();

                //using userID to get user information fname and lname
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    blogUser id = (from objs in db.blogUsers
                                   where objs.userID == userID
                                   select objs).FirstOrDefault();

                    lblUserId.Text = "Welcome " + id.fName;

                }
        }
        public void getBlog()
        {
            var userStore = new UserStore<IdentityUser>();
            var manager = new UserManager<IdentityUser>(userStore);
            var userID = User.Identity.GetUserId();

            //try
            //{
            using (DefaultConnectionEF db = new DefaultConnectionEF())
            {
                int chapterid, verseid;

                if ((Request.QueryString["blogID"]) != null)
                {
                    var blogID = Convert.ToInt32((Request.QueryString["blogID"]));

                    var objE = (from bg in db.blogs
                                join br in db.blog_references on bg.blogID equals br.blogID
                                join bt in db.blog_title on bg.blogID equals bt.blogID
                                join bp in db.blog_post on bg.blogID equals bp.blogID
                                where bg.userID == Convert.ToString(userID) && bg.blogID == blogID
                                select new { bg.blogID, br.bookName, br.chapterID, br.verseID, br.verseText, bt.title, bp.post }).FirstOrDefault();
                   // objE.ToList();

                    if (objE != null)
                    {

                        blogID = objE.blogID;
                        ddlBook.SelectedValue = objE.bookName;
                        chapterid = objE.chapterID;
                        verseid = objE.verseID;
                        TextVerse.Text = objE.verseText;
                        titleTxt.Text = objE.title;
                        txtBlog.Text = objE.post;

                    }
                }
            }
            //}
            //catch (Exception ex)
            //{
            //Response.Redirect("/errors.aspx");
            //}
        }
        public void BindddlBook()
        {
            ddlBook.Items.Clear();
            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var objB = (from b in db.BibleBasicEnglishes
                                orderby b.ID
                                group b by b.Book into d
                                select new { Book = d.Key, books = d.ToList() });

                    ddlBook.DataSource = objB.ToList();
                    ddlBook.DataBind();
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                var userStore = new UserStore<IdentityUser>();
                var manager = new UserManager<IdentityUser>(userStore);
                var userID = User.Identity.GetUserId();
                //do insert or update

                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    blog b = new blog();
                    blog_references bref = new blog_references();
                    blog_title btitle = new blog_title();
                    blog_post bpost = new blog_post();

                    int chapterid = Convert.ToInt32(ddlChapter.SelectedValue);
                    int verseid = Convert.ToInt32(ddlVerse.SelectedValue);

                    Int32 blogID = 0;

                    if ((Request.QueryString["blogID"]) != null)
                    {
                        blogID = Convert.ToInt32(Request.QueryString["blogID"]);
                        bref.blogID = blogID;
                        bpost.blogID = blogID;
                        btitle.blogID = blogID;
                    }

                    //set blog variable
                    b.blogID = blogID;
                    //set references variables
                    bref.bookName = ddlBook.SelectedValue;
                    bref.chapterID = Convert.ToInt32(ddlChapter.SelectedValue);
                    bref.verseID = Convert.ToInt32(ddlVerse.SelectedValue);
                    //set post variables
                    bpost.post = txtBlog.Text;
                    //set title variables
                    btitle.title = titleTxt.Text;

                    if (blogID == 0)
                    {
                        db.blogs.Add(b);
                        db.SaveChanges();

                        blogID = (from n in db.blogs
                                  where n.userID == userID
                                  orderby n.blogID descending
                                  select n.blogID).First();

                        bref.blogID = blogID;
                        bpost.blogID = blogID;
                        btitle.blogID = blogID;

                        db.blog_references.Add(bref);
                        db.blog_post.Add(bpost);
                        db.blog_title.Add(btitle);
                    }
                    db.SaveChanges();
                }
             }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }

                Response.Redirect("/admin/notes.aspx");
        }
        //String VerseText;
        //Int32 Chapter, Verse;
        protected void Page_Load(object sender, EventArgs e)
        {
            var userStore = new UserStore<IdentityUser>();
            var manager = new UserManager<IdentityUser>(userStore);
            var userID = User.Identity.GetUserId();

            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    blogUser id = (from objs in db.blogUsers
                               where objs.userID == userID
                               select objs).FirstOrDefault();
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }

            getBlog();

            if (!IsPostBack)
            {

                // Bind Book dropdownlist
                BindddlBook();
                ddlChapter.Enabled = false;
                ddlVerse.Enabled = false;

                // Insert one item to dropdownlist top
                ddlBook.Items.Insert(0, new ListItem("Select Book", "-1"));
                ddlChapter.Items.Insert(0, new ListItem("Select Chapter", "-1"));
                ddlVerse.Items.Insert(0, new ListItem("Select Verse", "-1"));
            }
        }
        protected void ddlChapter_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Bind city dropdownlist based on region value
            //string strChapter = string.Empty;
            //strChapter = ddlChapter.SelectedValue;

            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var Verse = (from v in db.BibleBasicEnglishes
                                 where v.Book == ddlBook.SelectedValue && v.Chapter.ToString() == ddlChapter.SelectedValue
                                 group v by v.Verse into d
                                 select new { Verse = d.Key, verses = d.ToList() });

                    //ddlVerse.Items.Clear();
                    ddlVerse.DataSource = Verse.ToList();
                    ddlVerse.DataBind();
                    ddlVerse.Items.Insert(0, new ListItem("Select Verse", "-1"));

                    // Initialize Verse dropdownlist selected index
                    hdfDdlVerseSelectIndex.Value = "0";

                    // Enable Verse dropdownlist when it has items
                    if (ddlVerse.Items.Count > 0)
                    {
                        ddlVerse.Enabled = true;
                    }
                    else
                    {
                        ddlVerse.Enabled = false;
                    }
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
        }
        protected void ddlBook_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Remove Chapter dropdownlist items
            ddlChapter.Items.Clear();

            // Bind Chapter dropdownlist based on Book value
            if (ddlBook.SelectedValue == "-1")
            {

            }
            else
            {
                ddlChapter.Enabled = true;

                try
                {
                    using (DefaultConnectionEF db = new DefaultConnectionEF())
                    {
                        var objC = (from c in db.BibleBasicEnglishes
                                    where c.Book == ddlBook.SelectedValue
                                    group c by c.Chapter into d
                                    select new { Chapter = d.Key, chapters = d.ToList() });

                        ddlChapter.DataSource = objC.ToList();
                        ddlChapter.DataBind();
                    }
                }
                catch (Exception ex)
                {
                    Response.Redirect("/errors.aspx");
                }
            }

            ddlChapter.Items.Insert(0, new ListItem("Select Chapter", "-1"));

            // Clear Verse dropdownlist
            ddlVerse.Enabled = true;
            ddlVerse.Items.Clear();
            ddlVerse.Items.Insert(0, new ListItem("Select Verse", "-1"));
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            // Get the selected index of Chapter dropdownlist
            int iVerseSelected = Convert.ToInt16(hdfDdlVerseSelectIndex.Value);

            // The result will be showing
            string strResult = string.Empty;
            if (ddlBook.SelectedIndex == 0)
            {
                strResult = "Please select a Book.";
            }
            else if (ddlChapter.SelectedIndex == 0 && strResult == string.Empty)
            {
                strResult = "Please select a Chapter";
            }
            else if (ddlVerse.SelectedIndex == 0 && strResult == string.Empty)
            {
                strResult = "Please select a Verse";
            }
            else
            {
                strResult = "You selected Book: " + ddlBook.SelectedValue
                    + " ; Chapter: " + ddlChapter.SelectedValue
                    + " ; Verse: " + ddlVerse.SelectedValue;

            }

            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var Versetxt = (from v in db.BibleBasicEnglishes
                                    where v.Book == ddlBook.SelectedValue && v.Chapter.ToString() == ddlChapter.SelectedValue && v.Verse.ToString() == ddlVerse.SelectedValue
                                    select v.VerseText);

                    TextVerse.Text = Versetxt.FirstOrDefault().ToString();
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
            lblResult.Text = strResult;
        }
        protected void ddlChapter_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                int BookNum;
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var bN = (from b in db.BibleBasicEnglishes
                              where b.Book == ddlBook.SelectedValue
                              select b).FirstOrDefault();

                    BookNum = Convert.ToInt32(bN.bookNum);
                }

                Session["bookNum"] = BookNum;
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    var book = (from b in db.BibleBasicEnglishes
                                where b.bookNum == BookNum
                                select b).FirstOrDefault();

                    lblCurrentBook.Text = book.Book;
                }

                if (BookNum == 1)
                {
                    btnPreviousBook.Visible = false;
                }
                else if (BookNum == 66)
                {
                    btnPreviousBook.Visible = true;
                    btnNextBook.Visible = false;
                }
                else
                {
                    btnNextBook.Visible = true;
                    btnPreviousBook.Visible = true;
                }

            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var userStore = new UserStore<IdentityUser>();
            var manager = new UserManager<IdentityUser>(userStore);
            var userID = User.Identity.GetUserId();

            try
            {
                using (DefaultConnectionEF db = new DefaultConnectionEF())
                {
                    blogUser id = (from objs in db.blogUsers
                               where objs.userID == userID
                               select objs).FirstOrDefault();
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/errors.aspx");
            }

            if (!IsPostBack)
            {
                getNotes();
            }
        }