public ActionResult ReadSortedResponseInfo(string formid, int page, string sort, string sortfield, int orgid, bool reset = false)//List<FormInfoModel> ModelList, string formid)
        {
            //Code added to retain Search Starts
            if (reset)
            {
                Session["SortOrder"] = "";
                Session["SortField"] = "";
            }
            Session["SelectedOrgId"] = orgid;
            if (Session["RootFormId"] != null && Session["RootFormId"].ToString() == formid)
            {
                if (Session["SortOrder"] != null &&
                    !string.IsNullOrEmpty(Session["SortOrder"].ToString()) &&
                    string.IsNullOrEmpty(sort))
                {
                    sort = Session["SortOrder"].ToString();
                }

                if (Session["SortField"] != null &&
                    !string.IsNullOrEmpty(Session["SortField"].ToString()) &&
                    string.IsNullOrEmpty(sortfield))
                {
                    sortfield = Session["SortField"].ToString();
                }

                //if (Session["PageNumber"] != null &&
                //    !string.IsNullOrEmpty(Session["PageNumber"].ToString()) )
                //{
                //    page = Convert.ToInt16(Session["PageNumber"].ToString());
                //}

                Session["SortOrder"] = sort;
                Session["SortField"] = sortfield;
                //Session["PageNumber"] = page;
            }
            else
            {
                Session.Remove("SortOrder");
                Session.Remove("SortField");
                Session.Remove("PageNumber");
            }
            //Code added to retain Search Ends.

            Session["RootFormId"] = formid;
            Session["PageNumber"] = page;
            bool IsMobileDevice = this.Request.Browser.IsMobileDevice;

            var model = new FormResponseInfoModel();

            model = GetFormResponseInfoModel(formid, page, sort, sortfield, orgid);

            if (IsMobileDevice == false)
            {
                return(PartialView("ListResponses", model));
            }
            else
            {
                return(View("ListResponses", model));
            }
        }
        public void GetProjectMetadataTest()
        {
            var    surveyFacade            = new Mock <ISurveyFacade>();
            var    securityFacade          = new Mock <ISecurityFacade>();
            var    projectMetadataProvider = new Mock <Epi.Cloud.Interfaces.MetadataInterfaces.IProjectMetadataProvider>();
            var    surveyResponseDao       = new Mock <ISurveyResponseDao>();
            var    mockControllerContext   = new Mock <ControllerContext>();
            var    mockSession             = new Mock <HttpSessionStateBase>();
            string UserId = Epi.Common.Security.Cryptography.Encrypt("1014");

            mockSession.SetupGet(s => s[SessionKeys.UserId]).Returns(UserId); //somevalue
            mockSession.SetupGet(s => s[SessionKeys.CurrentOrgId]).Returns(1);
            //surveyid=2e1d01d4-f50d-4f23-888b-cd4b7fc9884b
            //formid=63035d12-0386-4e52-a16e-afcadd1d1d7c //257b05f2-dab2-c8e3-caed-92f0f6a88169
            mockSession.SetupGet(s => s[SessionKeys.ProjectId]).Returns("257b05f2-dab2-c8e3-caed-92f0f6a88169"); //somevalue
            mockControllerContext.Setup(p => p.HttpContext.Session).Returns(mockSession.Object);
            HomeController hmc = new HomeController(surveyFacade.Object, securityFacade.Object, projectMetadataProvider.Object, surveyResponseDao.Object);

            hmc.ControllerContext = mockControllerContext.Object;
            // Create fake Controller Context
            //var sessionItems = new SessionStateItemCollection();
            //sessionItems[SessionKeys.UserId] = "1014";
            //sessionItems[SessionKeys.ProjectId] = "f2aed655-b0a5-4f5e-8071-267f035e87a5";
            //hmc.ControllerContext = new FakeControllerContext(hmc, sessionItems);
            FormResponseInfoModel infomdl = new FormResponseInfoModel();

            infomdl = hmc.GetFormResponseInfoModel("2e1d01d4-f50d-4f23-888b-cd4b7fc9884b", 1, "", "", 1);
            //var info = 2e1d01d4-f50d-4f23-888b-cd4b7fc9884b
            Assert.IsNotNull(infomdl, "FormResponse is Empty");
        }
        protected FormResponseInfoModel GetFormResponseInfoModel(string surveyId, int orgId, int userId)
        {
            FormResponseInfoModel formResponseInfoModel = new FormResponseInfoModel();

            formResponseInfoModel.SearchModel = new SearchBoxModel();
            var surveyResponseBuilder             = new SurveyResponseBuilder();
            FormSettingRequest formSettingRequest = new FormSettingRequest {
                ProjectId = GetStringSessionValue(UserSession.Key.ProjectId)
            };

            //Populating the request

            formSettingRequest.FormInfo.FormId = surveyId;
            formSettingRequest.FormInfo.UserId = userId;
            //Getting Column Name  List
            formSettingRequest.CurrentOrgId = orgId;
            var formSettingResponse = formResponseInfoModel.FormSettingResponse = _surveyFacade.GetFormSettings(formSettingRequest);

            formSettingResponse.FormSetting.FormId = surveyId;
            _columns = formSettingResponse.FormSetting.ColumnNameList.ToList();
            _columns.Sort(Compare);
            _columnDigests = formSettingResponse.FormSetting.ColumnDigestList.ToList();
            _columnDigests.Sort(Compare);

            // Setting  Column Name  List
            formResponseInfoModel.Columns       = _columns;
            formResponseInfoModel.ColumnDigests = _columnDigests;

            return(formResponseInfoModel);
        }
        public ActionResult SaveSettings(string formid)
        {
            int CurrentOrgId = int.Parse(Session["SelectedOrgId"].ToString());
            List <FormsHierarchyDTO> FormList       = GetFormsHierarchy(formid);
            FormSettingRequest       FormSettingReq = new Enter.Common.Message.FormSettingRequest();
            int UserId = SurveyHelper.GetDecryptUserId(Session["UserId"].ToString());

            foreach (var Form in FormList)
            {
                FormSettingReq.GetXml          = true;
                FormSettingReq.FormInfo.FormId = new Guid(formid).ToString();
                FormSettingReq.FormInfo.UserId = UserId;
                FormSettingDTO FormSetting = new FormSettingDTO();
                FormSetting.FormId                 = Form.FormId;
                FormSetting.ColumnNameList         = GetDictionary(this.Request.Form["SelectedColumns_" + Form.FormId]);
                FormSetting.AssignedUserList       = GetDictionary(this.Request.Form["SelectedUser"]);
                FormSetting.SelectedOrgList        = GetDictionary(this.Request.Form["SelectedOrg"]);
                FormSetting.IsShareable            = GetBoolValue(this.Request.Form["IsShareable"]);
                FormSetting.SelectedDataAccessRule = int.Parse(this.Request.Form["DataAccessRuleId"]);

                if (!string.IsNullOrEmpty(this.Request.Form["SoftDeleteForm"]) && this.Request.Form["SoftDeleteForm"].ToUpper() == "ON")
                {
                    FormSetting.IsDisabled = true;
                }
                if (!string.IsNullOrEmpty(this.Request.Form["RemoveTestData"]) && this.Request.Form["RemoveTestData"].ToUpper() == "ON")
                {
                    FormSetting.DeleteDraftData = true;
                }
                FormSettingReq.FormSetting.Add(FormSetting);
                FormSettingReq.FormInfo.IsDraftMode = GetBoolValue(this.Request.Form["Mode"]);
                FormSettingReq.CurrentOrgId         = CurrentOrgId;
            }
            FormSettingResponse FormSettingResponse = _isurveyFacade.SaveSettings(FormSettingReq);



            bool IsMobileDevice = this.Request.Browser.IsMobileDevice;

            var model = new FormResponseInfoModel();


            model = GetFormResponseInfoModel(formid, 1, "", "", CurrentOrgId);

            if (IsMobileDevice == false)
            {
                if (!string.IsNullOrEmpty(this.Request.Form["SoftDeleteForm"]) && this.Request.Form["SoftDeleteForm"].ToUpper() == "ON")
                {
                    return(Json(null));
                }
                else
                {
                    return(PartialView("ListResponses", model));
                }
            }
            else
            {
                return(View("ListResponses", model));
            }
        }
        public ActionResult SaveSettings(string formid)
        {
            int currentOrgId = GetIntSessionValue(UserSession.Key.SelectedOrgId);
            List <FormsHierarchyDTO> formsHierarchyDTOList = GetFormsHierarchy(formid);
            FormSettingRequest       formSettingReq        = new FormSettingRequest {
                ProjectId = GetStringSessionValue(UserSession.Key.ProjectId)
            };
            int userId = GetIntSessionValue(UserSession.Key.UserId);

            foreach (var formsHierarchyDTO in formsHierarchyDTOList)
            {
                formSettingReq.GetMetadata     = true;
                formSettingReq.FormInfo.FormId = new Guid(formid).ToString();
                formSettingReq.FormInfo.UserId = userId;
                FormSettingDTO formSetting = new FormSettingDTO();
                formSetting.FormId                 = formsHierarchyDTO.FormId;
                formSetting.ColumnNameList         = GetDictionary(this.Request.Form[FormSetting.Key.SelectedColumns_ + formsHierarchyDTO.FormId]);
                formSetting.AssignedUserList       = GetDictionary(this.Request.Form[FormSetting.Key.SelectedUser]);
                formSetting.SelectedOrgList        = GetDictionary(this.Request.Form[FormSetting.Key.SelectedOrg]);
                formSetting.IsShareable            = GetBoolValue(this.Request.Form[FormSetting.Key.IsShareable]);
                formSetting.SelectedDataAccessRule = int.Parse(this.Request.Form[FormSetting.Key.DataAccessRuleId]);

                if (!string.IsNullOrEmpty(this.Request.Form[FormSetting.Key.SoftDeleteForm]) && this.Request.Form[FormSetting.Key.SoftDeleteForm].ToUpper() == "ON")
                {
                    formSetting.IsDisabled = true;
                }
                if (!string.IsNullOrEmpty(this.Request.Form[FormSetting.Key.RemoveTestData]) && this.Request.Form[FormSetting.Key.RemoveTestData].ToUpper() == "ON")
                {
                    formSetting.DeleteDraftData = true;
                }
                formSettingReq.FormSetting.Add(formSetting);
                formSettingReq.FormInfo.IsDraftMode = GetBoolValue(this.Request.Form[FormSetting.Key.Mode]);
                formSettingReq.CurrentOrgId         = currentOrgId;
            }
            FormSettingResponse formSettingResponse = _surveyFacade.SaveSettings(formSettingReq);

            bool isMobileDevice = this.Request.Browser.IsMobileDevice;

            var model = new FormResponseInfoModel();


            model = GetFormResponseInfoModel(formid, 1, "", "", currentOrgId);

            if (isMobileDevice == false)
            {
                if (!string.IsNullOrEmpty(this.Request.Form[FormSetting.Key.SoftDeleteForm]) && this.Request.Form[FormSetting.Key.SoftDeleteForm].ToUpper() == "ON")
                {
                    return(Json(null));
                }
                else
                {
                    return(PartialView("ListResponses", model));
                }
            }
            else
            {
                return(View("ListResponses", model));
            }
        }
 private void PopulateDropDownlists(FormResponseInfoModel FormResponseInfoModel, List <KeyValuePair <int, string> > list)
 {
     PopulateDropDownlist(out FormResponseInfoModel.SearchColumns1, FormResponseInfoModel.SearchModel.SearchCol1, list);
     PopulateDropDownlist(out FormResponseInfoModel.SearchColumns2, FormResponseInfoModel.SearchModel.SearchCol2, list);
     PopulateDropDownlist(out FormResponseInfoModel.SearchColumns3, FormResponseInfoModel.SearchModel.SearchCol3, list);
     PopulateDropDownlist(out FormResponseInfoModel.SearchColumns4, FormResponseInfoModel.SearchModel.SearchCol4, list);
     PopulateDropDownlist(out FormResponseInfoModel.SearchColumns5, FormResponseInfoModel.SearchModel.SearchCol5, list);
 }
        public ActionResult ReadResponseInfo(string formid, int page = 1)//List<FormInfoModel> ModelList, string formid)
        {
            bool IsMobileDevice = this.Request.Browser.IsMobileDevice;

            var model = new FormResponseInfoModel();

            Session["RootFormId"] = formid;
            model = GetFormResponseInfoModel(formid, page);

            if (IsMobileDevice == false)
            {
                return(PartialView("ListResponses", model));
            }
            else
            {
                return(View("ListResponses", model));
            }
        }
        public ActionResult ReadResponseInfo(string formid, int page = 1)
        {
            bool isMobileDevice = this.Request.Browser.IsMobileDevice;

            var model = new FormResponseInfoModel();


            SetSessionValue(UserSession.Key.RootFormId, formid);
            model = GetFormResponseInfoModel(formid, page);

            if (isMobileDevice == false)
            {
                return(PartialView("ListResponses", model));
            }
            else
            {
                return(View("ListResponses", model));
            }
        }
        public FormResponseInfoModel GetFormResponseInfoModel(string SurveyId, int PageNumber, string sort = "", string sortfield = "", int orgid = -1)
        {
            int UserId = SurveyHelper.GetDecryptUserId(Session["UserId"].ToString());
            FormResponseInfoModel FormResponseInfoModel = new FormResponseInfoModel();

            FormResponseInfoModel.SearchModel = new SearchBoxModel();
            SurveyResponseXML SurveyResponseXML = new SurveyResponseXML();

            if (!string.IsNullOrEmpty(SurveyId))
            {
                SurveyAnswerRequest FormResponseReq = new SurveyAnswerRequest();
                FormSettingRequest  FormSettingReq  = new Enter.Common.Message.FormSettingRequest();

                //Populating the request

                FormSettingReq.FormInfo.FormId = SurveyId;
                FormSettingReq.FormInfo.UserId = UserId;
                //Getting Column Name  List
                FormSettingReq.CurrentOrgId = orgid;
                FormSettingReq.FormInfoOnly = true;
                FormSettingResponse FormSettingResponse = _isurveyFacade.GetFormSettings(FormSettingReq);   //Pain Point
                Columns = FormSettingResponse.FormSetting.ColumnNameList.ToList();
                Columns.Sort(Compare);

                // Setting  Column Name  List
                FormResponseInfoModel.Columns = Columns;

                FormResponseInfoModel.FormInfoModel.IsShared    = FormSettingResponse.FormInfo.IsShared;
                FormResponseInfoModel.FormInfoModel.IsShareable = FormSettingResponse.FormInfo.IsShareable;
                // Set User Role
                //if (FormResponseInfoModel.FormInfoModel.IsShared)
                //{

                //    SetUserRole(UserId, orgid);
                //}
                //else
                //{
                //SetUserRole(UserId, FormSettingResponse.FormInfo.OrganizationId);
                //}
                SetUserRole(UserId, orgid);

                FormResponseReq.Criteria.SurveyId           = SurveyId.ToString();
                FormResponseReq.Criteria.PageNumber         = PageNumber;
                FormResponseReq.Criteria.UserId             = UserId;
                FormResponseReq.Criteria.IsSqlProject       = FormSettingResponse.FormInfo.IsSQLProject;
                FormResponseReq.Criteria.IsShareable        = FormSettingResponse.FormInfo.IsShareable;
                FormResponseReq.Criteria.UserOrganizationId = orgid;
                Session["IsSqlProject"] = FormSettingResponse.FormInfo.IsSQLProject;
                Session["IsOwner"]      = FormSettingResponse.FormInfo.IsOwner;
                //if (Session["SearchCriteria"] != null)
                //{
                //    FormResponseInfoModel.SearchModel = (SearchBoxModel)Session["SearchCriteria"];
                //}
                // Following code retain search starts
                if (Session["SearchCriteria"] != null &&
                    !string.IsNullOrEmpty(Session["SearchCriteria"].ToString()) &&
                    (Request.QueryString["col1"] == null || Request.QueryString["col1"] == "undefined"))
                {
                    FormResponseReq.Criteria.SearchCriteria = Session["SearchCriteria"].ToString();
                    FormResponseInfoModel.SearchModel       = (SearchBoxModel)Session["SearchModel"];
                }
                else
                {
                    FormResponseReq.Criteria.SearchCriteria = CreateSearchCriteria(Request.QueryString, FormResponseInfoModel.SearchModel, FormResponseInfoModel);
                    Session["SearchModel"]    = FormResponseInfoModel.SearchModel;
                    Session["SearchCriteria"] = FormResponseReq.Criteria.SearchCriteria;
                }
                // Following code retain search ends
                PopulateDropDownlists(FormResponseInfoModel, FormSettingResponse.FormSetting.FormControlNameList.ToList());

                if (sort.Length > 0)
                {
                    FormResponseReq.Criteria.SortOrder = sort;
                }
                if (sortfield.Length > 0)
                {
                    FormResponseReq.Criteria.Sortfield = sortfield;
                }


                SurveyAnswerResponse FormResponseList = _isurveyFacade.GetFormResponseList(FormResponseReq);//Pain Point


                //var ResponseTableList ; //= FormSettingResponse.FormSetting.DataRows;
                //Setting Resposes List
                List <ResponseModel> ResponseList = new List <ResponseModel>();
                foreach (var item in FormResponseList.SurveyResponseList)
                {
                    if (item.SqlData != null)
                    {
                        ResponseList.Add(ConvertRowToModel(item, Columns));
                    }
                    else
                    {
                        ResponseList.Add(SurveyResponseXML.ConvertXMLToModel(item, Columns));
                    }
                }


                //foreach (var item in FormResponseList.SurveyResponseList)
                //{
                //    ResponseList.Add(SurveyResponseXML.ConvertXMLToModel(item, Columns));
                //}

                FormResponseInfoModel.ResponsesList = ResponseList;
                //Setting Form Info
                FormResponseInfoModel.FormInfoModel = Mapper.ToFormInfoModel(FormResponseList.FormInfo);
                //Setting Additional Data

                FormResponseInfoModel.NumberOfPages     = FormResponseList.NumberOfPages;
                FormResponseInfoModel.PageSize          = ReadPageSize();
                FormResponseInfoModel.NumberOfResponses = FormResponseList.NumberOfResponses;
                FormResponseInfoModel.sortfield         = sortfield;
                FormResponseInfoModel.sortOrder         = sort;
                FormResponseInfoModel.CurrentPage       = PageNumber;
            }
            return(FormResponseInfoModel);
        }
        private string CreateSearchCriteria(System.Collections.Specialized.NameValueCollection nameValueCollection, SearchBoxModel SearchModel, FormResponseInfoModel Model)
        {
            FormCollection Collection = new FormCollection(nameValueCollection);



            StringBuilder searchBuilder = new StringBuilder();

            if (ValidateSearchFields(Collection))
            {
                if (Collection["col1"].Length > 0 && Collection["val1"].Length > 0)
                {
                    searchBuilder.Append(Collection["col1"] + "='" + Collection["val1"] + "'");
                    SearchModel.SearchCol1 = Collection["col1"];
                    SearchModel.Value1     = Collection["val1"];
                }
                if (Collection["col2"].Length > 0 && Collection["val2"].Length > 0)
                {
                    searchBuilder.Append(" AND " + Collection["col2"] + "='" + Collection["val2"] + "'");
                    SearchModel.SearchCol2 = Collection["col2"];
                    SearchModel.Value2     = Collection["val2"];
                }
                if (Collection["col3"].Length > 0 && Collection["val3"].Length > 0)
                {
                    searchBuilder.Append(" AND " + Collection["col3"] + "='" + Collection["val3"] + "'");
                    SearchModel.SearchCol3 = Collection["col3"];
                    SearchModel.Value3     = Collection["val3"];
                }
                if (Collection["col4"].Length > 0 && Collection["val4"].Length > 0)
                {
                    searchBuilder.Append(" AND " + Collection["col4"] + "='" + Collection["val4"] + "'");
                    SearchModel.SearchCol4 = Collection["col4"];
                    SearchModel.Value4     = Collection["val4"];
                }
                if (Collection["col5"].Length > 0 && Collection["val5"].Length > 0)
                {
                    searchBuilder.Append(" AND " + Collection["col5"] + "='" + Collection["val5"] + "'");
                    SearchModel.SearchCol5 = Collection["col5"];
                    SearchModel.Value5     = Collection["val5"];
                }
            }

            return(searchBuilder.ToString());
        }
        protected string CreateSearchCriteria(NameValueCollection nameValueCollection, SearchBoxModel searchModel, FormResponseInfoModel model)
        {
            FormCollection formCollection = new FormCollection(nameValueCollection);

            StringBuilder searchBuilder = new StringBuilder();

            if (ValidateSearchFields(formCollection))
            {
                if (formCollection["col1"].Length > 0 && formCollection["val1"].Length > 0)
                {
                    searchBuilder.Append(formCollection["col1"] + "='" + formCollection["val1"] + "'");
                    searchModel.SearchCol1 = formCollection["col1"];
                    searchModel.Value1     = formCollection["val1"];
                }
                if (formCollection["col2"].Length > 0 && formCollection["val2"].Length > 0)
                {
                    searchBuilder.Append(" AND " + formCollection["col2"] + "='" + formCollection["val2"] + "'");
                    searchModel.SearchCol2 = formCollection["col2"];
                    searchModel.Value2     = formCollection["val2"];
                }
                if (formCollection["col3"].Length > 0 && formCollection["val3"].Length > 0)
                {
                    searchBuilder.Append(" AND " + formCollection["col3"] + "='" + formCollection["val3"] + "'");
                    searchModel.SearchCol3 = formCollection["col3"];
                    searchModel.Value3     = formCollection["val3"];
                }
                if (formCollection["col4"].Length > 0 && formCollection["val4"].Length > 0)
                {
                    searchBuilder.Append(" AND " + formCollection["col4"] + "='" + formCollection["val4"] + "'");
                    searchModel.SearchCol4 = formCollection["col4"];
                    searchModel.Value4     = formCollection["val4"];
                }
                if (formCollection["col5"].Length > 0 && formCollection["val5"].Length > 0)
                {
                    searchBuilder.Append(" AND " + formCollection["col5"] + "='" + formCollection["val5"] + "'");
                    searchModel.SearchCol5 = formCollection["col5"];
                    searchModel.Value5     = formCollection["val5"];
                }
            }

            return(searchBuilder.ToString());
        }
        public FormResponseInfoModel GetFormResponseInfoModel(string surveyId, int pageNumber, string sort = "", string sortfield = "", int orgid = -1)
        {
            // Initialize the Metadata Accessor
            MetadataAccessor.CurrentFormId = /*FromURL*/ surveyId;

            FormResponseInfoModel formResponseInfoModel = null;

            int    orgId    = GetIntSessionValue(UserSession.Key.CurrentOrgId);
            int    userId   = GetIntSessionValue(UserSession.Key.UserId);
            string userName = GetStringSessionValue(UserSession.Key.UserName);

            if (!string.IsNullOrEmpty(/*FromURL*/ surveyId))
            {
                formResponseInfoModel = GetFormResponseInfoModel(/*FromURL*/ surveyId, orgid, userId);
                FormSettingResponse formSettingResponse = formResponseInfoModel.FormSettingResponse;

                var surveyResponseBuilder = new SurveyResponseBuilder();

                formResponseInfoModel.FormInfoModel.IsShared    = formSettingResponse.FormInfo.IsShared;
                formResponseInfoModel.FormInfoModel.IsShareable = formSettingResponse.FormInfo.IsShareable;
                formResponseInfoModel.FormInfoModel.FormName    = formSettingResponse.FormInfo.FormName;
                formResponseInfoModel.FormInfoModel.FormNumber  = formSettingResponse.FormInfo.FormNumber;


                // Set User Role
                SetUserRole(userId, orgid);

                // If this is the first grid query or the user elects to return to page 1 then
                // clear the QuerySetToken which will retrieve a new grid response set which may
                // include newly created records.
                if (pageNumber <= 1)
                {
                    RemoveSessionValue(UserSession.Key.QuerySetToken);
                }

                var responseContext = InitializeResponseContext(formId: surveyId);

                SurveyAnswerRequest formResponseReq = new SurveyAnswerRequest {
                    ResponseContext = responseContext
                };
                formResponseReq.Criteria.SurveyId           = /*FromURL*/ surveyId;
                formResponseReq.Criteria.PageNumber         = pageNumber;
                formResponseReq.Criteria.UserId             = userId;
                formResponseReq.Criteria.IsSqlProject       = formSettingResponse.FormInfo.IsSQLProject;
                formResponseReq.Criteria.IsShareable        = formSettingResponse.FormInfo.IsShareable;
                formResponseReq.Criteria.DataAccessRuleId   = formSettingResponse.FormSetting.SelectedDataAccessRule;
                formResponseReq.Criteria.IsDraftMode        = formSettingResponse.FormInfo.IsDraftMode;
                formResponseReq.Criteria.UserOrganizationId = orgid;

                SetSessionValue(UserSession.Key.IsSqlProject, formSettingResponse.FormInfo.IsSQLProject);
                SetSessionValue(UserSession.Key.IsOwner, formSettingResponse.FormInfo.IsOwner);

                // Following code retain search starts
                string sessionSearchCriteria = GetStringSessionValue(UserSession.Key.SearchCriteria, defaultValue: null);
                if (!string.IsNullOrEmpty(sessionSearchCriteria) &&
                    (Request.QueryString["col1"] == null || Request.QueryString["col1"] == "undefined"))
                {
                    formResponseReq.Criteria.SearchCriteria = sessionSearchCriteria;
                    formResponseInfoModel.SearchModel       = GetSessionValue <SearchBoxModel>(UserSession.Key.SearchModel);
                }
                else
                {
                    formResponseReq.Criteria.SearchCriteria = CreateSearchCriteria(Request.QueryString, formResponseInfoModel.SearchModel, formResponseInfoModel);
                    SetSessionValue(UserSession.Key.SearchModel, formResponseInfoModel.SearchModel);
                    SetSessionValue(UserSession.Key.SearchCriteria, formResponseReq.Criteria.SearchCriteria);
                }
                // Following code retain search ends
                PopulateDropDownlists(formResponseInfoModel, formSettingResponse.FormSetting.FormControlNameList.ToList());

                if (sort != null && sort.Length > 0)
                {
                    formResponseReq.Criteria.SortOrder = sort;
                }
                else
                {
                    formResponseReq.Criteria.SortOrder = AppSettings.GetStringValue(AppSettings.Key.DefaultSortOrder);
                }
                if (sortfield.Length > 0)
                {
                    formResponseReq.Criteria.Sortfield = sortfield;
                }
                else
                {
                    formResponseReq.Criteria.Sortfield = AppSettings.GetStringValue(AppSettings.Key.DefaultSortField);
                }

                formResponseReq.Criteria.SurveyQAList     = _columns.ToDictionary(c => c.Key.ToString(), c => c.Value);
                formResponseReq.Criteria.FieldDigestList  = formResponseInfoModel.ColumnDigests.ToDictionary(c => c.Key, c => c.Value);
                formResponseReq.Criteria.SearchDigestList = ToSearchDigestList(formResponseInfoModel.SearchModel, /*FromURL*/ surveyId);
                formResponseReq.Criteria.QuerySetToken    = GetStringSessionValue(UserSession.Key.QuerySetToken, null);

                SurveyAnswerResponse surveyAnswerResponse = _surveyFacade.GetFormResponseList(formResponseReq);

                // Remember the QuerySetToken to assure the same set of responses is queried if the user
                // navigates to some other page in the response grid.
                SetSessionValue(UserSession.Key.QuerySetToken, surveyAnswerResponse.QuerySetToken);

                formResponseInfoModel.ResponsesList = surveyAnswerResponse.SurveyResponseList.Select(r => r.ToResponseModel(_columns)).ToList();

                //Setting Form Info
                formResponseInfoModel.FormInfoModel = surveyAnswerResponse.FormInfo.ToFormInfoModel();

                //Setting Additional Data
                formResponseInfoModel.NumberOfPages     = surveyAnswerResponse.NumberOfPages;
                formResponseInfoModel.PageSize          = surveyAnswerResponse.NumberOfResponsesPerPage;
                formResponseInfoModel.NumberOfResponses = surveyAnswerResponse.NumberOfResponses;
                formResponseInfoModel.sortfield         = sortfield;
                formResponseInfoModel.sortOrder         = sort;
                formResponseInfoModel.CurrentPage       = pageNumber;
            }
            return(formResponseInfoModel);
        }
Example #13
0
        private FormResponseInfoModel GetFormResponseInfoModels(string surveyId, string responseId, List <FormsHierarchyDTO> formsHierarchyDTOList = null)
        {
            FormResponseInfoModel formResponseInfoModel = new FormResponseInfoModel();

            var formHieratchyDTO = formsHierarchyDTOList.FirstOrDefault(h => h.FormId == surveyId);

            SurveyResponseBuilder surveyResponseBuilder = new SurveyResponseBuilder();

            if (!string.IsNullOrEmpty(surveyId))
            {
                SurveyAnswerRequest surveyAnswerRequest = new SurveyAnswerRequest();
                FormSettingRequest  formSettingRequest  = new FormSettingRequest {
                    ProjectId = GetStringSessionValue(UserSession.Key.ProjectId)
                };

                //Populating the request

                formSettingRequest.FormInfo.FormId = surveyId;
                formSettingRequest.FormInfo.UserId = GetIntSessionValue(UserSession.Key.UserId);
                //Getting Column Name  List
                FormSettingResponse formSettingResponse = _surveyFacade.GetFormSettings(formSettingRequest);
                _columns = formSettingResponse.FormSetting.ColumnNameList.ToList();
                _columns.Sort(Compare);

                // Setting  Column Name  List
                formResponseInfoModel.Columns = _columns;

                //Getting Resposes
                var ResponseListDTO = formsHierarchyDTOList.FirstOrDefault(x => x.FormId == surveyId).ResponseIds;

                // If we don't have any data for this child form yet then create a response
                if (ResponseListDTO.Count == 0)
                {
                    var formResponseDetail = InitializeFormResponseDetail();
                    formResponseDetail.ParentResponseId = responseId;
                    formResponseDetail.ResponseId       = Guid.NewGuid().ToString();
                    formResponseDetail.ResolveMetadataDependencies();

                    var surveyAnswerDTO = new SurveyAnswerDTO(formResponseDetail);
                    surveyAnswerDTO.CurrentPageNumber = 1;
                    ResponseListDTO.Add(surveyAnswerDTO);
                }

                //Setting Resposes List
                List <ResponseModel> ResponseList = new List <ResponseModel>();
                foreach (var item in ResponseListDTO)
                {
                    if (item.ParentResponseId == responseId)
                    {
                        if (item.SqlData != null)
                        {
                            ResponseList.Add(ConvertRowToModel(item, _columns, "ChildGlobalRecordID"));
                        }
                        else
                        {
                            ResponseList.Add(item.ToResponseModel(_columns));
                        }
                    }
                }

                formResponseInfoModel.ResponsesList = ResponseList;

                formResponseInfoModel.PageSize = ReadPageSize();

                formResponseInfoModel.CurrentPage = 1;
            }
            return(formResponseInfoModel);
        }
Example #14
0
        //string responseid,string SurveyId, int ViewId, string CurrentPage
        // View =0 Root form
        public ActionResult Index(string formid, string responseId, int pagenumber = 1, int viewId = 0)
        {
            bool   reset     = false;
            string sortField = null;
            string sortOrder = null;

            if (Request.QueryString["sortfield"] != null)
            {
                sortField = Request.QueryString["sortfield"];
                SetSessionValue(UserSession.Key.SortField, sortField);
            }
            if (Request.QueryString["sort"] != null)
            {
                sortOrder = Request.QueryString["sort"];
                SetSessionValue(UserSession.Key.SortOrder, sortOrder);
            }
            if (string.IsNullOrWhiteSpace(sortOrder))
            {
                sortOrder = GetStringSessionValue(UserSession.Key.SortOrder, defaultValue: null);
                if (string.IsNullOrWhiteSpace(sortOrder))
                {
                    sortOrder = AppSettings.GetStringValue(AppSettings.Key.DefaultSortOrder);
                }
            }
            if (string.IsNullOrWhiteSpace(sortField))
            {
                sortField = GetStringSessionValue(UserSession.Key.SortField, defaultValue: null);
                if (string.IsNullOrWhiteSpace(sortField))
                {
                    sortField = AppSettings.GetStringValue(AppSettings.Key.DefaultSortField);
                }
            }
            bool.TryParse(Request.QueryString["reset"], out reset);
            if (reset)
            {
                RemoveSessionValue(UserSession.Key.SortOrder);
                RemoveSessionValue(UserSession.Key.SortField);
                RemoveSessionValue(UserSession.Key.SearchCriteria);
            }
            string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

            ViewBag.Version = version;
            bool isAndroid = false;

            if (this.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0)
            {
                isAndroid = true;
            }
            if (viewId == 0)
            {
                //Following code checks if request is for new or selected form.
                if (GetStringSessionValue(UserSession.Key.RootFormId) == formid)
                {
                    _isNewRequest = false;
                }

                SetSessionValue(UserSession.Key.RootFormId, formid);
                RemoveSessionValue(UserSession.Key.RootResponseId);
                RemoveSessionValue(UserSession.Key.FormValuesHasChanged);
                SetSessionValue(UserSession.Key.IsEditMode, false);
                if (pagenumber == 0)
                {
                    pagenumber = 1;
                }
                var model = new FormResponseInfoModel();
                model.ViewId = viewId;
                int currentOrgId = GetIntSessionValue(UserSession.Key.CurrentOrgId, defaultValue: -1);
                model = GetSurveyResponseInfoModel(formid, pagenumber, sortOrder, sortField, currentOrgId);
                SetSessionValue(UserSession.Key.SelectedOrgId, model.FormInfoModel.OrganizationId);
                return(View("Index", model));
            }
            else
            {
                List <FormsHierarchyDTO> formsHierarchy = GetFormsHierarchy();
                int userId = SurveyHelper.GetDecryptUserId(Session[UserSession.Key.UserId].ToString());

                bool isMobileDevice = this.Request.Browser.IsMobileDevice;

                int requestedViewId = viewId;

                SetSessionValue(UserSession.Key.RequestedViewId, requestedViewId);
                SurveyModel surveyModel = new SurveyModel();

                surveyModel.RelateModel     = formsHierarchy.ToRelateModel(formid);
                surveyModel.RequestedViewId = requestedViewId;

                var relateSurveyId = formsHierarchy.Single(x => x.ViewId == viewId);

                if (!string.IsNullOrEmpty(responseId))
                {
                    surveyModel.FormResponseInfoModel = GetFormResponseInfoModels(relateSurveyId.FormId, responseId, formsHierarchy);
                    surveyModel.FormResponseInfoModel.NumberOfResponses = surveyModel.FormResponseInfoModel.ResponsesList.Count();

                    surveyModel.FormResponseInfoModel.ParentResponseId = responseId;
                }

                if (relateSurveyId.ResponseIds.Count() > 0)
                {
                    SurveyAnswerDTO surveyAnswerDTO = GetSurveyAnswer(relateSurveyId.ResponseIds[0].ResponseId, relateSurveyId.FormId);
                    var             form            = _surveyFacade.GetSurveyFormData(relateSurveyId.ResponseIds[0].SurveyId, 1, surveyAnswerDTO, isMobileDevice, null, null, isAndroid);
                    surveyModel.Form = form;
                    if (string.IsNullOrEmpty(responseId))
                    {
                        surveyModel.FormResponseInfoModel = GetFormResponseInfoModels(relateSurveyId.FormId, responseId, formsHierarchy);
                        surveyModel.FormResponseInfoModel.ParentResponseId = relateSurveyId.ResponseIds[0].ParentResponseId;
                    }

                    surveyModel.FormResponseInfoModel.FormInfoModel.FormName = form.SurveyInfo.SurveyName;
                    surveyModel.FormResponseInfoModel.FormInfoModel.FormId   = form.SurveyInfo.SurveyId;
                    surveyModel.FormResponseInfoModel.NumberOfResponses      = surveyModel.FormResponseInfoModel.ResponsesList.Count();
                }
                else
                {
                    FormResponseInfoModel responseInfoModel = new FormResponseInfoModel();
                    if (surveyModel.FormResponseInfoModel.ResponsesList.Count() > 0)
                    {
                        SurveyAnswerDTO surveyAnswerDTO = GetSurveyAnswer(surveyModel.FormResponseInfoModel.ResponsesList[0].Column0, relateSurveyId.FormId);
                        responseInfoModel = GetFormResponseInfoModels(relateSurveyId.FormId, responseId, formsHierarchy);
                        surveyModel.Form  = _surveyFacade.GetSurveyFormData(surveyAnswerDTO.SurveyId, 1, surveyAnswerDTO, isMobileDevice, null, null, isAndroid);
                        responseInfoModel.FormInfoModel.FormName = surveyModel.Form.SurveyInfo.SurveyName.ToString();
                        responseInfoModel.FormInfoModel.FormId   = surveyModel.Form.SurveyInfo.SurveyId.ToString();
                        responseInfoModel.ParentResponseId       = responseId;//SurveyModel.FormResponseInfoModel.ResponsesList[0].Column0;
                        responseInfoModel.NumberOfResponses      = surveyModel.FormResponseInfoModel.ResponsesList.Count();
                    }
                    else
                    {
                        var form1 = _surveyFacade.GetSurveyInfoModel(relateSurveyId.FormId);
                        responseInfoModel.FormInfoModel.FormName = form1.SurveyName.ToString();
                        responseInfoModel.FormInfoModel.FormId   = form1.SurveyId.ToString();
                        responseInfoModel.ParentResponseId       = responseId;
                    }
                    surveyModel.FormResponseInfoModel = responseInfoModel;
                }
                surveyModel.FormResponseInfoModel.ViewId = viewId;

                return(View("Index", surveyModel.FormResponseInfoModel));
            }
        }
Example #15
0
        public FormResponseInfoModel GetSurveyResponseInfoModel(string surveyId, int pageNumber, string sort = "", string sortfield = "", int orgid = -1)
        {
            // Initialize the Metadata Accessor
            MetadataAccessor.CurrentFormId = surveyId;

            FormResponseInfoModel formResponseInfoModel = null;
            int    orgId    = GetIntSessionValue(UserSession.Key.CurrentOrgId);
            int    userId   = GetIntSessionValue(UserSession.Key.UserId);
            string userName = GetStringSessionValue(UserSession.Key.UserName);

            if (!string.IsNullOrEmpty(surveyId))
            {
                formResponseInfoModel = GetFormResponseInfoModel(surveyId, orgid, userId);
                FormSettingResponse formSettingResponse = formResponseInfoModel.FormSettingResponse;
                var surveyResponseBuilder = new SurveyResponseBuilder();
                formResponseInfoModel.FormInfoModel.IsShared    = formSettingResponse.FormInfo.IsShared;
                formResponseInfoModel.FormInfoModel.IsShareable = formSettingResponse.FormInfo.IsShareable;
                formResponseInfoModel.FormInfoModel.FormName    = formSettingResponse.FormInfo.FormName;
                formResponseInfoModel.FormInfoModel.FormNumber  = formSettingResponse.FormInfo.FormNumber;


                // Set User Role
                //if (formResponseInfoModel.FormInfoModel.IsShared)
                //{

                //    SetUserRole(UserId, orgid);
                //}
                //else
                //{
                //SetUserRole(UserId, FormSettingResponse.FormInfo.OrganizationId);
                //}
                //SetUserRole(userId, orgid);

                var responseContext = InitializeResponseContext(formId: surveyId);

                SurveyAnswerRequest formResponseReq = new SurveyAnswerRequest {
                    ResponseContext = responseContext
                };
                formResponseReq.Criteria.SurveyId         = surveyId.ToString();
                formResponseReq.Criteria.PageNumber       = /*FromURL*/ pageNumber;
                formResponseReq.Criteria.UserId           = userId;
                formResponseReq.Criteria.IsSqlProject     = formSettingResponse.FormInfo.IsSQLProject;
                formResponseReq.Criteria.IsShareable      = formSettingResponse.FormInfo.IsShareable;
                formResponseReq.Criteria.DataAccessRuleId = formSettingResponse.FormSetting.SelectedDataAccessRule;
                //formResponseReq.Criteria.IsMobile = true;
                formResponseReq.Criteria.UserOrganizationId = orgid;
                formResponseReq.Criteria.IsDraftMode        = formSettingResponse.FormInfo.IsDraftMode;

                SetSessionValue(UserSession.Key.IsSqlProject, formSettingResponse.FormInfo.IsSQLProject);
                SetSessionValue(UserSession.Key.IsOwner, formSettingResponse.FormInfo.IsOwner);

                // Following code retain search starts
                string sessionSearchCriteria = GetStringSessionValue(UserSession.Key.SearchCriteria, defaultValue: null);
                if (!string.IsNullOrEmpty(sessionSearchCriteria) &&
                    (Request.QueryString["col1"] == null || Request.QueryString["col1"] == "undefined"))
                {
                    formResponseReq.Criteria.SearchCriteria = sessionSearchCriteria;
                    formResponseInfoModel.SearchModel       = GetSessionValue <SearchBoxModel>(UserSession.Key.SearchModel);
                }
                else
                {
                    formResponseReq.Criteria.SearchCriteria = CreateSearchCriteria(Request.QueryString, formResponseInfoModel.SearchModel, formResponseInfoModel);
                    SetSessionValue(UserSession.Key.SearchModel, formResponseInfoModel.SearchModel);
                    SetSessionValue(UserSession.Key.SearchCriteria, formResponseReq.Criteria.SearchCriteria);
                }
                // Following code retain search ends
                PopulateDropDownlists(formResponseInfoModel, formSettingResponse.FormSetting.FormControlNameList.ToList());

                if (sort != null && sort.Length > 0)
                {
                    formResponseReq.Criteria.SortOrder = sort;
                }
                else
                {
                    formResponseReq.Criteria.SortOrder = AppSettings.GetStringValue(AppSettings.Key.DefaultSortOrder);
                }
                if (!string.IsNullOrEmpty(sortfield) && sortfield.Length > 0)
                {
                    formResponseReq.Criteria.Sortfield = sortfield;
                }
                else
                {
                    formResponseReq.Criteria.Sortfield = AppSettings.GetStringValue(AppSettings.Key.DefaultSortField);
                }
                formResponseReq.Criteria.SurveyQAList     = _columns.ToDictionary(c => c.Key.ToString(), c => c.Value);
                formResponseReq.Criteria.FieldDigestList  = formResponseInfoModel.ColumnDigests.ToDictionary(c => c.Key, c => c.Value);
                formResponseReq.Criteria.SearchDigestList = ToSearchDigestList(formResponseInfoModel.SearchModel, surveyId);


                SurveyAnswerResponse formResponseList = _surveyFacade.GetFormResponseList(formResponseReq);
                var surveyResponse = formResponseList.SurveyResponseList;//.Skip((pageNumber - 1) * 20).Take(20);

                formResponseList.SurveyResponseList = surveyResponse.ToList();
                List <ResponseModel>                responseList      = new List <ResponseModel>();
                List <ResponseModel>                responseListModel = new List <ResponseModel>();
                Dictionary <string, string>         dictory           = new Dictionary <string, string>();
                List <Dictionary <string, string> > dictoryList       = new List <Dictionary <string, string> >();;

                foreach (var item in formResponseList.SurveyResponseList)
                {
                    if (item.SqlData != null)
                    {
                        responseList.Add(ConvertRowToModel(item, _columns, "GlobalRecordId"));
                    }
                    else
                    {
                        responseList.Add(item.ToResponseModel(_columns));
                    }
                }

                string sortFieldcolumn = string.Empty;
                if (!string.IsNullOrEmpty(sortfield))
                {
                    foreach (var column in _columns)
                    {
                        if (column.Value == sortfield)
                        {
                            sortFieldcolumn = "Column" + column.Key;
                        }
                    }
                }

                var sortList = responseList;
                if (!string.IsNullOrEmpty(sortfield))
                {
                    if (sort != "ASC")
                    {
                        switch (sortFieldcolumn)
                        {
                        case "Column1":
                            responseListModel = sortList.OrderByDescending(x => x.Column1).ToList();
                            break;

                        case "Column2":
                            responseListModel = sortList.OrderByDescending(x => x.Column2).ToList();
                            break;

                        case "Column3":
                            responseListModel = sortList.OrderByDescending(x => x.Column3).ToList();
                            break;

                        case "Column4":
                            responseListModel = sortList.OrderByDescending(x => x.Column4).ToList();
                            break;

                        case "Column5":
                            responseListModel = sortList.OrderByDescending(x => x.Column5).ToList();
                            break;
                        }
                    }
                    else
                    {
                        switch (sortFieldcolumn)
                        {
                        case "Column1":
                            responseListModel = sortList.OrderBy(x => x.Column1).ToList();
                            break;

                        case "Column2":
                            responseListModel = sortList.OrderBy(x => x.Column2).ToList();
                            break;

                        case "Column3":
                            responseListModel = sortList.OrderBy(x => x.Column3).ToList();
                            break;

                        case "Column4":
                            responseListModel = sortList.OrderBy(x => x.Column4).ToList();
                            break;

                        case "Column5":
                            responseListModel = sortList.OrderBy(x => x.Column5).ToList();
                            break;
                        }
                    }
                    // formResponseInfoModel.ResponsesList = responseListModel.Skip((pageNumber - 1) * 20).Take(20).ToList();
                    formResponseInfoModel.ResponsesList = responseList.Take(20).ToList();
                }
                if (string.IsNullOrEmpty(sort))
                {
                    // formResponseInfoModel.ResponsesList = responseList.Skip((pageNumber - 1) * 20).Take(20).ToList();
                    formResponseInfoModel.ResponsesList = responseList.Take(20).ToList();
                }

                //Setting Form Info
                formResponseInfoModel.FormInfoModel = formResponseList.FormInfo.ToFormInfoModel();
                //Setting Additional Data

                formResponseInfoModel.NumberOfPages     = formResponseList.NumberOfPages;
                formResponseInfoModel.PageSize          = ReadPageSize();
                formResponseInfoModel.NumberOfResponses = formResponseList.NumberOfResponses;
                formResponseInfoModel.sortfield         = /*FromURL*/ sortfield;
                formResponseInfoModel.sortOrder         = /*FromURL*/ sort;
                formResponseInfoModel.CurrentPage       = /*FromURL*/ pageNumber;
            }
            return(formResponseInfoModel);
        }