Ejemplo n.º 1
0
        public ActionResult Download(RequirementSearchViewModel vm)
        {
            Func <IQueryable <Requirement>, IQueryable <Requirement> > requirementFilter = q =>
            {
                q = q.Include(r => r.Category).Include(r => r.Source);

                if (vm.AssignedToUserId.HasValue)
                {
                    q = q.Where(r => r.AssignedToUserId == vm.AssignedToUserId.Value);
                }

                if (vm.SourceId.HasValue)
                {
                    q = q.Where(r => r.SourceId == vm.SourceId.Value);
                }

                if (vm.CategoryId.HasValue)
                {
                    q = q.Where(r => r.CategoryId == vm.CategoryId.Value);
                }

                if (vm.Status.HasValue)
                {
                    q = q.Where(r => r.RequirementStatus == vm.Status.Value);
                }

                if (!string.IsNullOrEmpty(vm.Title))
                {
                    q = q.Where(r => r.Title.Contains(vm.Title));
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn <= vm.EndDate.Value);
                }

                q = q.OrderByDescending(c => c.CreatedOn);

                return(q);
            };

            var requirements = _requirementRepository.Search(requirementFilter).ToList();

            return(ExportAsCSV(requirements));
        }
Ejemplo n.º 2
0
        public FileContentResult RequirementsByStatusCSV(RequirementSearchViewModel vm)
        {
            Func <IQueryable <Requirement>, IQueryable <Requirement> > requirementFilter = q =>
            {
                if (vm.SourceId.HasValue)
                {
                    q = q.Where(r => r.SourceId == vm.SourceId.Value);
                }

                if (vm.CategoryId.HasValue)
                {
                    q = q.Where(r => r.CategoryId == vm.CategoryId.Value);
                }

                if (vm.Status.HasValue)
                {
                    q = q.Where(r => r.RequirementStatus == vm.Status.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn <= vm.EndDate.Value);
                }

                return(q);
            };

            var csv = new StringBuilder();
            var requirementsByStatus = _requirementRepository.Search(requirementFilter).GroupBy(l => l.RequirementStatus)
                                       .Select(x => new
            {
                x.Key,
                Value = x.Count()
            })
                                       .ToList();

            var keys = string.Join(",", requirementsByStatus.Select(x => x.Key).ToArray());

            csv.AppendLine(keys);
            var values = string.Join(",", requirementsByStatus.Select(x => x.Value).ToArray());

            csv.AppendLine(values);
            return(File(new UTF8Encoding().GetBytes(csv.ToString()), "text/csv", "RequirementsByStatusCSV.csv"));
        }
Ejemplo n.º 3
0
        public ActionResult Index(RequirementSearchViewModel vm)
        {
            Func <IQueryable <Requirement>, IQueryable <Requirement> > requirementFilter = q =>
            {
                q = q.Include(r => r.Category).Include(r => r.Source);

                if (vm.AssignedToUserId.HasValue)
                {
                    q = q.Where(r => r.AssignedToUserId == vm.AssignedToUserId.Value);
                }

                if (vm.SourceId.HasValue)
                {
                    q = q.Where(r => r.SourceId == vm.SourceId.Value);
                }

                if (vm.CategoryId.HasValue)
                {
                    q = q.Where(r => r.CategoryId == vm.CategoryId.Value);
                }

                if (vm.Status.HasValue)
                {
                    q = q.Where(r => r.RequirementStatus == vm.Status.Value);
                }

                if (!string.IsNullOrEmpty(vm.Title))
                {
                    q = q.Where(r => r.Title.Contains(vm.Title));
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.CreatedOn <= vm.EndDate.Value);
                }

                return(q);
            };

            vm.Requirements = _requirementRepository.SearchPage(requirementFilter, o => o.OrderByDescending(c => c.CreatedOn), vm.GetPageNo(), vm.PageSize);

            return(View(vm));
        }
Ejemplo n.º 4
0
        public ActionResult Index(RequirementSearchViewModel vm)
        {
            var firstDay = DateTime.UtcNow.AddDays(-31);
            var lastDay  = DateTime.UtcNow;

            ViewBag.CategoryId = new SelectList(_requirementCategoryRepository.GetAll(), "Id", "Title", vm.CategoryId);
            ViewBag.SourceId   = new SelectList(_crmLeadSourceRepository.GetAll(), "Id", "Title", vm.SourceId);

            Func <IQueryable <Requirement>, IQueryable <Requirement> > requirementFilter = q =>
            {
                if (vm.SourceId.HasValue)
                {
                    q = q.Where(r => r.SourceId == vm.SourceId.Value);
                }

                if (vm.CategoryId.HasValue)
                {
                    q = q.Where(r => r.CategoryId == vm.CategoryId.Value);
                }

                if (vm.Status.HasValue)
                {
                    q = q.Where(r => r.RequirementStatus == vm.Status.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q        = q.Where(r => r.CreatedOn >= vm.StartDate.Value);
                    firstDay = vm.StartDate.Value;
                }

                if (vm.EndDate.HasValue)
                {
                    q       = q.Where(r => r.CreatedOn <= vm.EndDate.Value);
                    lastDay = vm.EndDate.Value;
                }

                return(q);
            };



            vm.Total = _requirementRepository.Count();

            Func <IQueryable <Requirement>, IQueryable <Requirement> > postedRequirementFilter = q =>
            {
                q = q.Where(r => r.CreatedOn >= firstDay && r.PostedOn != null);
                return(requirementFilter(q));
            };

            Func <IQueryable <Requirement>, IQueryable <Requirement> > closedRequirementFilter = q =>
            {
                q = q.Where(r => r.CreatedOn >= firstDay && r.RequirementStatus == RequirementStatus.Won);
                return(requirementFilter(q));
            };

            Func <IQueryable <Requirement>, IQueryable <Requirement> > lostRequirementFilter = q =>
            {
                q = q.Where(r => r.CreatedOn >= firstDay && r.RequirementStatus == RequirementStatus.Lost);
                return(requirementFilter(q));
            };

            var postedRequirements = _requirementRepository.Search(postedRequirementFilter)
                                     .ToList()
                                     .GroupBy(r => r.CreatedOn.ToShortDateString())
                                     .Select(r => new { Day = r.Key, Total = r.Count() });
            var closedRequirements = _requirementRepository.Search(closedRequirementFilter)
                                     .ToList()
                                     .GroupBy(r => r.CreatedOn.ToShortDateString())
                                     .Select(r => new { Day = r.Key, Total = r.Count() });
            var lostRequirements = _requirementRepository.Search(lostRequirementFilter)
                                   .ToList()
                                   .GroupBy(r => r.CreatedOn.ToShortDateString())
                                   .Select(r => new { Day = r.Key, Total = r.Count() });
            var dateArray = new List <string> {
                "x"
            };
            var postedArray = new List <string> {
                "new"
            };
            var closedArray = new List <string> {
                "won"
            };
            var lostArray = new List <string> {
                "lost"
            };

            var counter = firstDay;

            while (counter <= lastDay)
            {
                var selectedDay = counter.ToShortDateString();
                dateArray.Add(selectedDay);

                var selectedPost = postedRequirements.FirstOrDefault(p => p.Day == selectedDay);
                postedArray.Add(selectedPost?.Total.ToString() ?? "0");

                var selectedClosed = closedRequirements.FirstOrDefault(p => p.Day == selectedDay);
                closedArray.Add(selectedClosed != null ? selectedClosed.Total.ToString() : "0");

                var selectedLost = lostRequirements.FirstOrDefault(p => p.Day == selectedDay);
                lostArray.Add(selectedLost != null ? selectedLost.Total.ToString() : "0");


                counter = counter.AddDays(1);
            }

            ViewBag.Dates  = dateArray;
            ViewBag.Posts  = postedArray;
            ViewBag.Closed = closedArray;
            ViewBag.Lost   = lostArray;

            return(View(vm));
        }