예제 #1
0
        public JsonResult GetQlikViewUrl(string documentName)
        {
            return(JsonResponse(() =>
            {
                var userId = AssistedUser.UserID.ToString();
                var settingValue = Affiliate.GetFeatureSetting(Features.QlikView, FeatureSettings.UserIdentifierField);

                if (!string.IsNullOrWhiteSpace(settingValue))
                {
                    if (settingValue.Equals("ProfileID", StringComparison.InvariantCultureIgnoreCase))
                    {
                        userId = AssistedUser.ProfileID;
                    }
                }

                if (string.IsNullOrEmpty(userId))
                {
                    throw new ApplicationException("User does not have a valid User ID!");
                }

                var url = string.Empty;
                var baseUrl = Affiliate.GetFeatureSetting(Features.QlikView, FeatureSettings.BaseUrl);
                var webTicket = GetWebTicket(userId);

                if (!string.IsNullOrEmpty(webTicket))
                {
                    url = string.Format("{0}/authenticate.aspx?type=html&try=/QvAJAXZfc/opendocnotoolbar.htm?document=accesspoint/{1}&webticket={2}&back={3}",
                                        baseUrl, documentName, webTicket, string.Empty);
                }

                return url;
            }));
        }
예제 #2
0
        public ActionResult Dashboard()
        {
            var viewModel = new DashboardViewModel();

            var siteMap       = ViewBag.SiteMap as SiteMap;
            var surveySummary = _surveyService.GetSurveySummary(Settings.SurveyNames.BusinessAssessment, AssistedUser.UserID);

            foreach (var page in surveySummary.Pages)
            {
                var pillar = new PillarProgressModel()
                {
                    Title   = page.PageName,
                    Tooltip = page.Tooltip,
                    Enabled = page.State != SurveyState.NotStarted,
                    Score   = page.DisplayScore
                };

                if (siteMap != null)
                {
                    var contentPage = siteMap.Items.FirstOrDefault(p => p.Title.Equals(page.PageName, StringComparison.InvariantCultureIgnoreCase));

                    if (contentPage != null)
                    {
                        pillar.Url = contentPage.Url;
                    }
                }

                viewModel.Pillars.Add(pillar);
            }

            viewModel.IsQlikViewDashboardEnabled = QlikViewFeature != null && QlikViewFeature.IsEnabled;
            viewModel.QlikViewDocument           = Affiliate.GetFeatureSetting(Features.QlikView, FeatureSettings.PentameterDashboardDocument);
            viewModel.AssessmentText             = (surveySummary.State == SurveyState.NotStarted ? "Launch Assessment" : "Update Assessment");
            viewModel.AssessmentShortText        = viewModel.AssessmentText.Substring(0, 6);
            viewModel.IsBannerExpanded           = GetCurrentUser().GetCachedObject(BannerStateCacheKey, new ExpandCollapseState()
            {
                Expanded = true
            }).Expanded;

            return(View("Dashboard", viewModel));
        }
예제 #3
0
        private string GetWebTicket(string userId, string userGroups = null)
        {
            var baseUrl = Affiliate.GetFeatureSetting(Features.QlikView, FeatureSettings.BaseUrl);

            if (string.IsNullOrWhiteSpace(baseUrl))
            {
                return(null);
            }

            var result       = string.Empty;
            var webTicketUrl = baseUrl + "/GetWebTicket.aspx";
            var groups       = new StringBuilder();

            // Override if TestUserID exists
            var testUserId = Settings.Get <string>("app:Qlikview.TestUserID");

            if (!string.IsNullOrEmpty(testUserId))
            {
                userId = testUserId;
            }

            if (!string.IsNullOrEmpty(userGroups))
            {
                groups.Append("<GroupList>");

                foreach (var group in userGroups.Split(','))
                {
                    groups.Append(string.Format("<string>{0}</string>", group));
                }

                groups.Append("</GroupList>");
                groups.Append("<GroupsIsNames>true</GroupsIsNames>");
            }

            var webTicketRequest = string.Format("<Global method=\"GetWebTicket\"><UserId>{0}</UserId>{1}</Global>", userId, groups);
            var client           = (HttpWebRequest)WebRequest.Create(new Uri(webTicketUrl));

            client.PreAuthenticate        = true;
            client.Method                 = "POST";
            client.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

            try
            {
                using (var sw = new StreamWriter(client.GetRequestStream()))
                {
                    sw.WriteLine(webTicketRequest);
                }

                var response = new StreamReader(client.GetResponse().GetResponseStream());
                result = response.ReadToEnd();

                var doc = XDocument.Parse(result);

                return(doc.Root.Element("_retval_").Value);
            }
            catch (Exception ex)
            {
                throw new Exception(
                          string.Format("Unable to retrieve WebTicket from QlikView.\nTicketUrl: {0},\nTicketRequest: {1}.\nResult: {2}",
                                        webTicketUrl, webTicketRequest, result), ex);
            }
        }