protected void btnSave_Click(object sender, EventArgs e)
    {
        DataAdapter da = new DataAdapter();
        long artifactId = 0;
        //todo  this should be converted into a stored procedure. Check if review is already done by the user.
        if (Session["UserToken"] != null && Session["ReviewRefId"]!=null)
        {
            long surveyId = 0;
            DataSet ds = da.ExecuteSelectQuery("SELECT top 1 surveyId FROM SURVEYMASTER WHERE ReviewId=" + Session["ReviewRefId"] + "and UserId=" + Session["UserToken"]);
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count>0)
            {
                surveyId = Convert.ToInt64(ds.Tables[0].Rows[0][0]);
            }
            if (surveyId == 0)
            {
                //new survey
                String query="insert into SurveyMaster values("+Session["ReviewRefId"]+","+Session["UserToken"]+",getdate())";
                da.ExecuteInsertQuery(query);
                //read the latest input query.
                surveyId = Convert.ToInt64(da.ExecuteSelectQuery("SELECT top 1 surveyId FROM SURVEYMASTER WHERE ReviewId=" + Session["ReviewRefId"] + "and UserId=" + Session["UserToken"]).Tables[0].Rows[0][0]);
                DataTable datatable = getQuestions();

                if (r_SurveyQuestions.Controls.Count > 0)
                {
                    List<RepeaterItem> listItem = r_SurveyQuestions.Controls.OfType<RepeaterItem>().ToList();
                    for (int i = 0; i < listItem.Count(); i++)
                    {
                        RadioButtonList rbl = listItem[i].Controls.OfType<RadioButtonList>().ToList()[0];
                        //DropDownList ddl = listItem[i].Controls.OfType<DropDownList>().ToList()[0];
                        long answerId = Convert.ToInt64(rbl.SelectedValue);
                        long questionId = Convert.ToInt64(datatable.Rows[i]["QuestionId"]);
                        artifactId = Convert.ToInt64(datatable.Rows[i]["ArtifactId"]);
                        DataTable dt = da.ExecuteSelectQuery("select * from SURVEYANSWER where questionId=" + questionId + " and surveyId= " + surveyId).Tables[0];
                        if (dt == null || dt.Rows.Count == 0)
                        {
                            da.ExecuteInsertQuery("INSERT INTO SURVEYANSWER VALUES(" + questionId + "," + surveyId + "," + answerId + ",'',getdate())");
                        }

                    }
                }
            }
            else
            {
                //existing survey
                //to-do
            }
           
            Session["ReviewRefId"] = null;
            ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.close();", true);
        }
        //else
        //Response.Redirect("surveyMaster");



    }
    protected void LogIn(object sender, EventArgs e)
    {
        if (IsValid)
        {
            // Validate the user password
            //var manager = new UserManager();
            //ApplicationUser user = manager.Find(UserName.Text, Password.Text);
            //if (user != null)
            //{
            //    IdentityHelper.SignIn(manager, user, RememberMe.Checked);
            //    IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
            //}
            
            if (UserName.Text != null)
            {
                DataAdapter da = new DataAdapter();
                DataSet userSet=da.ExecuteSelectQuery("Select * from Users where UserArchived=0 and UserToken='"+UserName.Text.Replace("'","''")+"'");
                if(userSet!=null && userSet.Tables.Count>0 && userSet.Tables[0].Rows.Count > 0)
                {
                    da.ExecuteUpdateQuery("Update Users set UserLastLoggedIn=GETDATE() where UserToken='" + UserName.Text.Replace("'", "''") + "'");
                    DataTable userTable = userSet.Tables[0];
                    Session["UserToken"]=userTable.Rows[0]["UserId"];
                    IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
                }

            }
            else
            {
                FailureText.Text = "Invalid code";
                ErrorMessage.Visible = true;
            }
        }
    }
 private DataTable readArtifact(long id)
 {
     DataAdapter dataAdapter = new DataAdapter();
     DataSet ds = dataAdapter.ExecuteSelectQuery("SELECT ArtifactText, ArtifactHeader FROM ARTIFACT WHERE ARTIFACTID=" + id);
     return ds.Tables[0];
 }