コード例 #1
0
        public AnalyticsControl()
        {
            var viewModel = new AnalyticsViewModel();

            this.DataContext = viewModel;

            InitializeComponent();
        }
コード例 #2
0
        // GET: Reviews
        public ActionResult Index(string sortOrder)
        {
            ViewBag.Title = "Product Reviews";

            List <AnalyticsViewModel> campaignList = new List <AnalyticsViewModel>();

            // LINQ Query Syntax used over Method Syntax for simplicity and clarity; performance will be the same.
            var campaignsWithReviews = from campaigns in db.Campaigns
                                       from reviews in db.Reviews
                                       where campaigns.CampaignID == reviews.CampaignId
                                       orderby campaigns.CampaignID
                                       select campaigns;

            ViewBag.NameSortParm       = "name";
            ViewBag.NameDescSortParm   = "name_desc";
            ViewBag.RatingSortParm     = "rating";
            ViewBag.RatingDescSortParm = "rating_desc";

            // NOTE: Sort order is not my work ... added by another programmer
            switch (sortOrder)
            {  //sort reviews based on "Sort by" dropdown selection
            case "name":
                campaignsWithReviews = campaignsWithReviews.OrderBy(r => r.Name);
                break;

            case "name_desc":
                campaignsWithReviews = campaignsWithReviews.OrderByDescending(r => r.Name);
                break;

            case "rating":
                campaignsWithReviews = from campaigns in db.Campaigns
                                       from reviews in db.Reviews
                                       where campaigns.CampaignID == reviews.CampaignId
                                       orderby reviews.ProductRating
                                       select campaigns;
                break;

            case "rating_desc":
                campaignsWithReviews = from campaigns in db.Campaigns
                                       from reviews in db.Reviews
                                       where campaigns.CampaignID == reviews.CampaignId
                                       orderby reviews.ProductRating descending
                                       select campaigns;
                break;
            }
            //

            // Creating new variable of List<Campaign>, containing only unique instances of campagins with reviews.
            var uniqueCampaignsWithReviews = new HashSet <Campaign>(campaignsWithReviews).ToList();

            foreach (var campaign in uniqueCampaignsWithReviews)
            {
                AnalyticsViewModel campaignModel = new AnalyticsViewModel(campaign);
                campaignList.Add(campaignModel);
            }

            return(View(campaignList));
        }
コード例 #3
0
        public ActionResult ByTag(PagerParameters pagerParameters, AnalyticsViewModel <SingleStatDto> model)
        {
            if (!_analyticsSettings.TagsEnabled)
            {
                return(HttpNotFound());
            }

            return(GetAnalyticsResults(pagerParameters, model, x => _analyticsQueries.GetByTagCount(x), x => _analyticsQueries.GetByTag(x)));
        }
コード例 #4
0
        public JsonResult GetAnalyticsField()
        {
            AnalyticsViewModel viewModel = new AnalyticsViewModel
            {
                Categories = _context.Categories.ToList(),
                Products   = _context.Products.ToList(),
                Users      = _mapper.Map <List <User> >(_context.Users.ToList())
            };

            return(new JsonResult(viewModel));
        }
コード例 #5
0
        public IActionResult Analytics()
        {
            if (_user == null)
            {
                _user = _userManager.GetUserAsync(User).Result;
            }

            var viewModel = new AnalyticsViewModel(_db, _dbConnection, _userManager, _user, ChartInterval.Week);

            return(View(viewModel));
        }
コード例 #6
0
        // GET: Analytics
        public ActionResult Index()
        {
            var user = db.Users.FirstOrDefault(u => u.Email.Equals(User.Identity.Name));

            List <Execution> executions = db.Executions.ToList();
            List <Machine>   machines   = db.Machines.ToList();

            if (user.Role != Role.Admin && user.Role != Role.Manager)
            {
                executions = executions.Where(e => e.Machine.CompanyCode == user.CompanyCode).ToList();
                machines   = machines.Where(m => m.CompanyCode == user.CompanyCode).ToList();
            }

            Dictionary <Status, int> totalStatuses = executions.GroupBy(execution => execution.Status)
                                                     .ToList().ToDictionary(input => input.Key, grouping => grouping.Count());

            Dictionary <Reason, int> totalReasons = executions.GroupBy(execution => execution.Reason)
                                                    .ToList().ToDictionary(input => input.Key, grouping => grouping.Count());

            Dictionary <Country, int> totalCountries = machines.GroupBy(execution => execution.Country)
                                                       .ToList().ToDictionary(input => input.Key, grouping => grouping.Count());

            Dictionary <Machine, int> totalMachine = executions.GroupBy(execution => execution.Machine)
                                                     .ToList().ToDictionary(input => input.Key, grouping => grouping.Count());


            var myData = from log in executions
                         group log by log.CreationDate.Value.Date into g
                         orderby g.Key
                         select new { CreateTime = g.Key, Count = g.Count() };


            Tuple <int, int, int> states = new Tuple <int, int, int>(machines.Count(),
                                                                     machines.Count(m => !m.IsDeleted),
                                                                     machines.Count(m => m.IsDeleted));


            Dictionary <DateTime, int> totalExecutionsPerDay = myData.ToList().Where(i => i.CreateTime != null).ToDictionary(i => (DateTime)i.CreateTime, i => i.Count);

            AnalyticsViewModel analyticsViewModel = new AnalyticsViewModel()
            {
                TotalStatuses         = totalStatuses,
                TotalCountries        = totalCountries,
                TotalReasons          = totalReasons,
                TotalExecutionsPerDay = totalExecutionsPerDay,
                TotalMachines         = totalMachine,
                MachinesState         = states
            };

            return(PartialView(analyticsViewModel));
        }
コード例 #7
0
        // GET: Relevant Seller Campaigns
        // Static Search For Now, Will change depending on user after SellerID and ApplicationUser Id are
        // a single data point "db.Campaigns.Where(s => s.ID = ....)";

        public ActionResult SellerIndex()
        {
            List <AnalyticsViewModel> campaigns = new List <AnalyticsViewModel>();
            string applicationUserId            = User.Identity.GetUserId();
            var    sellerCampaigns = db.Campaigns.Where(s => s.ApplicationUser.Id == applicationUserId);

            foreach (var campaign in sellerCampaigns)
            {
                AnalyticsViewModel campaignModel = new AnalyticsViewModel(campaign);
                campaigns.Add(campaignModel);
            }

            return(View(campaigns));
        }
コード例 #8
0
        // GET: Reviews the buyer has created
        // Same expression as seen on Campaign Controller
        public ActionResult ReviewIndex()
        {
            List <AnalyticsViewModel> campaignList = new List <AnalyticsViewModel>();
            string UserId    = HttpContext.User.Identity.GetUserId();
            var    campaigns = db.Campaigns.Where(x => x.ApplicationUser.Id.ToString() == UserId);

            foreach (var campaign in campaigns)
            {
                AnalyticsViewModel campaignModel = new AnalyticsViewModel(campaign);
                campaignList.Add(campaignModel);
            }

            ViewBag.Title = "Products You've Reviewd";

            return(View("Index", campaignList));
        }
コード例 #9
0
        public async Task <IActionResult> Index(ulong guildId)
        {
            var messages = await _messageEntityService.Get(message => message.GuildId == guildId);

            var uniqueUsers = messages.Select(m => m.AuthorId).Distinct().Count();

            var viewModel = new AnalyticsViewModel
            {
                ChatTracker = new ChatTrackerViewModel
                {
                    Messages    = messages,
                    UniqueUsers = uniqueUsers
                }
            };

            return(View(viewModel));
        }
コード例 #10
0
        // GET: Campaigns/BuyerDetails/
        public ActionResult BuyerDetails(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Campaign           buyers = db.Campaigns.Find(id);
            AnalyticsViewModel buyer  = new AnalyticsViewModel(buyers);

            {
            }
            if (buyer == null)
            {
                return(HttpNotFound());
            }
            return(View(buyer));
        }
コード例 #11
0
        public ActionResult Index()
        {
            AnalyticsDTO           analyticsDTO           = new AnalyticsDTO();
            ProductBusinessContext productBusinessContext = new ProductBusinessContext();
            AnalyticsViewModel     analyticsViewModel     = new AnalyticsViewModel();

            try
            {
                analyticsDTO       = productBusinessContext.GetTopProductsByCart();
                analyticsViewModel = AnalyticsMapper.Map <AnalyticsDTO, AnalyticsViewModel>(analyticsDTO);
                return(View(analyticsViewModel));
            }
            catch (Exception ex)
            {
                return(View("InternalError" + ex));
            }
        }
コード例 #12
0
        /// <summary>
        /// Returns Analytics/Default.csthml or nothing if neither GA nor AppIns is available.
        /// </summary>
        /// <returns></returns>
        /// <remarks>
        /// Should I output this VC only when env is Production?
        /// </remarks>
        public async Task <IViewComponentResult> InvokeAsync()
        {
            var coreSettings = await _settingSvc.GetSettingsAsync <CoreSettings>();

            var vm = new AnalyticsViewModel
            {
                GoogleAnalyticsTrackingID = coreSettings.GoogleAnalyticsTrackingID,
                AppInsightsFullScript     = _jsSnippet.FullScript,
            };

            // if neither is available, show nothing
            if (vm.AppInsightsFullScript.IsNullOrEmpty() && vm.GoogleAnalyticsTrackingID.IsNullOrEmpty())
            {
                return(Content(string.Empty));
            }

            return(View("Analytics.cshtml", vm));
        }
コード例 #13
0
        private ActionResult DownloadCsv <D>(AnalyticsViewModel <D> model)
        {
            var ms        = new MemoryStream();
            var sw        = new StreamWriter(ms);
            var csvWriter = new CsvWriter(sw);

            csvWriter.WriteHeader <D>();

            foreach (var entry in model.Entries)
            {
                csvWriter.WriteRecord(entry);
            }

            sw.Flush();
            ms.Seek(0, SeekOrigin.Begin);

            return(File(ms, "text/csv", $"analytics-{DateTime.Now:yyyy-MM-dd-HH-mm}.csv"));
        }
コード例 #14
0
        public IActionResult Index()
        {
            var allUserComments      = _db.MainComments.ToList();
            var allUserSubComments   = _db.SubComments.ToList();
            AnalyticsViewModel model = new AnalyticsViewModel();

            model.CommentList = new List <CommentListViewModel>();

            model.CommentList = _db.MainComments.Select(r => new CommentListViewModel
            {
                UserName         = r.UserName,
                Id               = r.Id,
                NumberOfComments = allUserComments.Count(ur => ur.Id == r.Id) + allUserSubComments.Count(ur => ur.Id == r.Id)
            }).ToList();

            model.PageViews = _db.Posts.Sum(s => s.Views);

            return(View(model));
        }
コード例 #15
0
        public ActionResult GetData(string teamId, string month)
        {
            IEnumerable <Team> teamsList = _teamRepository.GetTeams();
            List <ListItem>    listItems = new List <ListItem>();

            foreach (var team in teamsList)
            {
                listItems.Add(new ListItem(team.Name, team.TeamId));
            }

            AnalyticsViewModel model = new AnalyticsViewModel()
            {
                ListItems     = listItems,
                ListItemValue = new ListItem(),
                CasesData     = GetAnalyticsData(teamId, month)
            };

            return(this.Store(model.CasesData));
        }
コード例 #16
0
        public ActionResult Index()
        {
            IEnumerable <Team> teamsList = _teamRepository.GetTeams();
            List <ListItem>    listItems = new List <ListItem>();

            foreach (var team in teamsList)
            {
                listItems.Add(new ListItem(team.Name, team.TeamId));
            }

            AnalyticsViewModel model = new AnalyticsViewModel()
            {
                ListItems     = listItems,
                ListItemValue = new ListItem(),
                CasesData     = GetAnalyticsData()
            };

            return(View(model));
        }
コード例 #17
0
        // GET: Analytics
        public ActionResult Index(int?itemId)
        {
            var items = _provider.GetAllItems().ToArray();

            var vm = new AnalyticsViewModel(
                _provider.GetMostWantedCategory(),
                _provider.GetMostOfferedCategory(),
                _provider.GetMostWantedSubcategory(),
                _provider.GetMostOfferedSubcategory())
            {
                MostWantedItems  = _provider.GetMostWantedItem(),
                MostOfferedItems = _provider.GetMostOfferedItem(),

                Items = new SelectList(items, "Id", "Name")
            };

            // by default shows the trends of the #1 most wanted item (if present).
            var mostWantedItem = vm.MostWantedItems.FirstOrDefault();

            if (mostWantedItem != null)
            {
                vm.ItemId = mostWantedItem.Item.Id;
            }
            else // ... or the trends of the first item.
            {
                Debug.Assert(items.FirstOrDefault() != null, "There are no items in the db!");

                vm.ItemId = items.First().Id;
            }

            vm.Chart = CreateChart(
                itemId ?? vm.ItemId); // if specified, shows the trends of the specified item.

            if (Request.IsAjaxRequest())
            {
                return(PartialView("_Analytics", vm));
            }

            return(View(vm));
        }
コード例 #18
0
        public async Task <IActionResult> PostAnalytics([FromBody] AnalyticsViewModel analytics)
        {
            try
            {
                //string userId = this.User.FindFirstValue(ClaimTypes.Name);
                var identity       = (ClaimsIdentity)this.User.Identity;
                var claims         = identity.Claims.ToList();
                var username       = claims.FirstOrDefault(x => x.Type == "cognito:username")?.Value;
                var groupQuestions = from q in analytics.QuestionAnswers
                                     group q by q.SetName
                                     into qGroup
                                     select qGroup;

                foreach (var q in groupQuestions)
                {
                    Assessment assessment = _assessmentViewModelFactory.Create(analytics.Assessment);
                    assessment.AssessmentCreatorId = username;
                    assessment.SetName             = q.FirstOrDefault()?.SetName;
                    assessment = await _analyticsBusiness.SaveAssessment(assessment);

                    List <AnalyticQuestionAnswer> questions = (_questionViewModelFactory.Create(q.AsQueryable())).ToList();
                    questions.ForEach(x =>
                    {
                        x.AssessmentId = assessment.Assessment_Id;
                        x.Industry     = assessment.IndustryName;
                        x.Sector       = assessment.SectorName;
                    });
                    questions.Where(x => x.AnswerText == null).ToList().ForEach(x => x.AnswerText = "U");

                    await _analyticsBusiness.SaveAnalyticQuestions(questions);
                }

                return(Ok(new { message = "Analytics data saved" }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { message = $"Analytics information was not saved" }));
            }
        }
コード例 #19
0
        public async Task <IActionResult> PostAnalyticsAnonymously([FromBody] AnalyticsViewModel analytics)
        {
            try
            {
                Assessment assessment = _assessmentViewModelFactory.Create(analytics.Assessment);
                assessment.AssessmentCreatorId = null;
                assessment = await _analyticsBusiness.SaveAssessment(assessment);

                List <AnalyticQuestionAnswer> questions = (_questionViewModelFactory.Create(analytics.QuestionAnswers.AsQueryable())).ToList();
                questions.ForEach(x => x.AssessmentId = assessment.Assessment_Id);
                questions.Where(x => x.AnswerText == null).ToList().ForEach(x => x.AnswerText = "U");



                await _analyticsBusiness.SaveAnalyticQuestions(questions);

                return(Ok(new { message = "Analytics data saved" }));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Analytic information was not saved: {ex.Message}"));
            }
        }
コード例 #20
0
        private AnalyticsQueryModel QueryModelForViewModel(Pager pager, AnalyticsViewModel model)
        {
            var query = new AnalyticsQueryModel
            {
                Skip = model.DownloadCsv ? 0 : pager.GetStartIndex(),
                Take = model.DownloadCsv ? 0 : pager.PageSize
            };

            DateTime parsed;

            if (!string.IsNullOrWhiteSpace(model.From.Date) && DateTime.TryParse(model.From.Date, out parsed))
            {
                query.FromUtc = parsed.ToUniversalTime();
            }

            if (!string.IsNullOrWhiteSpace(model.To.Date) && DateTime.TryParse(model.To.Date, out parsed))
            {
                query.ToUtc = parsed.ToUniversalTime();
            }

            query.Term = model.Term;
            return(query);
        }
コード例 #21
0
        /// <summary>
        /// sorts the data as per the requirement.
        /// top 3 categories with top 3 selling products at begining
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            try
            {
                IEnumerable <CategoryDTO> categoryDTOs;

                AnalyticsDTO           analyticsDTO           = new AnalyticsDTO();
                ProductBusinessContext productBusinessContext = new ProductBusinessContext();
                AnalyticsViewModel     analyticsViewModel     = new AnalyticsViewModel();
                try
                {
                    analyticsDTO       = productBusinessContext.GetTopProductsByCart();
                    analyticsViewModel = AnalyticsMapper.Map <AnalyticsDTO, AnalyticsViewModel>(analyticsDTO);
                    return(View(analyticsViewModel));
                }
                catch (Exception ex)
                {
                    return(RedirectToAction("ExceptionCatch", "Static", new { exception = ex.Message }));
                }
            }catch (Exception ex)
            {
                return(RedirectToAction("ExceptionCatch", "Static", new { exception = ex.Message }));
            }
        }
コード例 #22
0
        public ActionResult Index()
        {
            if (Session["UserID"] != null)
            {
                ViewBag.IsLoggedIn = "True";
            }


            ProductBusinessContext productBusinessContext = new ProductBusinessContext();
            //productBusinessContext.Changes(new Guid(Session["UserID"].ToString()));
            AnalyticsViewModel analyticsViewModel = new AnalyticsViewModel();
            AnalyticsDTO       analyticsDTO       = new AnalyticsDTO();

            try
            {
                analyticsDTO       = productBusinessContext.GetTopProductsByCat();
                analyticsViewModel = _AnalyticsMapper.Map <AnalyticsDTO, AnalyticsViewModel>(analyticsDTO);
                return(View(analyticsViewModel));
            }
            catch (Exception)
            {
                return(View("Internal Error"));
            }
        }
コード例 #23
0
 public ActionResult Index(PagerParameters pagerParameters, AnalyticsViewModel <RawAnalyticsDto> model)
 {
     return(GetAnalyticsResults(pagerParameters, model, query => _analyticsQueries.GetAllCount(query), query => _analyticsQueries.GetAll(query)));
 }
コード例 #24
0
        private ActionResult GetAnalyticsResults <D>(PagerParameters pagerParameters, AnalyticsViewModel <D> model, Func <AnalyticsQueryModel, int> count, Func <AnalyticsQueryModel, IList <D> > entries)
        {
            if (!_authorizer.Authorize(Permissions.ViewAnalytics, T("You are not allowed to view analytics, missing View Analytics permission.")))
            {
                throw new UnauthorizedAccessException();
            }

            if (model.From == null)
            {
                model.From = new DateTimeEditor();
            }
            model.From.ShowDate = true;

            if (model.To == null)
            {
                model.To = new DateTimeEditor();
            }
            model.To.ShowDate = true;

            var pager      = new Pager(_siteService.GetSiteSettings(), pagerParameters);
            var queryModel = QueryModelForViewModel(pager, model);
            var total      = count(queryModel);
            var pagerShape = _shape.Pager(pager).TotalItemCount(total);

            model.Entries     = entries(queryModel);
            model.Pager       = pagerShape;
            model.TagsEnabled = _analyticsSettings.TagsEnabled;

            if (!model.DownloadCsv)
            {
                return(View(model));
            }

            return(DownloadCsv(model));
        }
コード例 #25
0
 public AnalyticsPopUp()
 {
     InitializeComponent();
     viewModel      = new AnalyticsViewModel();
     BindingContext = viewModel;
 }
コード例 #26
0
ファイル: Analytics.cshtml.cs プロジェクト: luhis/shitforum
 public async Task OnGetAsync(CancellationToken cancellationToken)
 {
     this.Model = Map(await this.analyticsService.GetHits(cancellationToken));
 }
コード例 #27
0
        /// <summary>
        /// Get the analytics for the website
        /// </summary>
        /// <returns></returns>
        public AnalyticsViewModel GetAnalytics()
        {
            AnalyticsViewModel   analyticsVM = new AnalyticsViewModel();
            MicoBloggingEntities db          = new MicoBloggingEntities();

            //Query selects the total tweets
            var tweetData = db.Tweets.Select(t => t).ToList();
            //tweets are filtered by Today's date
            int totalTweetsToday = tweetData.Where(t => DateTime.Compare(t.CreationTime.Date, DateTime.Now.Date) == 0).Count();

            //Adds Data to Analytics View Model
            analyticsVM.TotalTweetsToday = totalTweetsToday;

            //selects the tweet
            //group by userid
            //finds count in descending order
            Queue <int> list = new Queue <int>();

            try
            {
                foreach (var line in tweetData.GroupBy(tweet => tweet.UserId)
                         .Select(group => new
                {
                    UserId = group.Key,
                    Count = group.Count()
                }).OrderByDescending(x => x.Count))
                {
                    int UserId = line.UserId;
                    list.Enqueue(UserId);
                }
                //Selects the user firstname
                //that have most tweets till date
                if (list.Count() > 0)
                {
                    int    userId       = list.Dequeue();
                    string mostTweetsBy = (from userD in db.Users
                                           where userD.Uid == userId
                                           select userD.FName).Single();

                    //puts the data in the Viewmodel
                    analyticsVM.MostTweetsBy = mostTweetsBy;
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Sorry Some Error Occured");
            }

            /* Query to select the Most Liked tweets
             * grouping by tweet id
             * where twiteliek is true
             * order by descending
             */
            var tweetLikeDislike = db.TweetLikeDislikes.Select(t => t).ToList();

            Queue <int> listLD = new Queue <int>();
            var         Like   = db.TweetLikeDislikes.Select(t => t.LikeDislike).ToList();

            try
            {
                foreach (var tweetLData in tweetLikeDislike.Where(x => x.LikeDislike == "true      ").GroupBy(tweet => tweet.TweetId)
                         .Select(group => new
                {
                    tweetId = group.Key,
                    count = group.Count(),
                }).OrderByDescending(x => x.tweetId)
                         )
                {
                    int tweetid = Convert.ToInt32(tweetLData.tweetId);
                    listLD.Enqueue(tweetid);
                    break;
                }

                /*
                 * finds the Tweet Body in database
                 * that has maximum Likes*/

                int    tweetId        = listLD.Dequeue();
                string mostLikedTweet = (from tweet in db.Tweets
                                         where tweet.Tid == tweetId
                                         select tweet.Body).Single();
                //Inserts into Analytics
                analyticsVM.MostLikedTweets = mostLikedTweet;
            }
            catch (Exception)
            {
                Console.WriteLine("Sorry Some Error Occured");
            }


            return(analyticsVM);
        }
コード例 #28
0
 public ActionResult ByUser(PagerParameters pagerParameters, AnalyticsViewModel <SingleStatDto> model)
 {
     return(GetAnalyticsResults(pagerParameters, model, query => _analyticsQueries.GetByUserCount(query), query => _analyticsQueries.GetByUser(query)));
 }