Пример #1
0
        public void MapStatisticToViewModelOnSuccessReturnsProperties()
        {
            //arrange
            var mean      = 1D;
            var stdev     = 2D;
            var skew      = 3D;
            var kurt      = 4D;
            var statistic = new Mock <IStatistic>();

            statistic.Setup(s => s.Mean).Returns(mean);
            statistic.Setup(s => s.Stdev).Returns(stdev);
            statistic.Setup(s => s.Skew).Returns(skew);
            statistic.Setup(s => s.Kurt).Returns(kurt);

            var mapper = new StatisticMapper();

            //act
            var result = mapper.MapStatisticToViewModel(statistic.Object);

            //assert
            Assert.AreEqual(mean, result.Mean);
            Assert.AreEqual(stdev, result.Stdev);
            Assert.AreEqual(skew, result.Skew);
            Assert.AreEqual(kurt, result.Kurt);
        }
        public StatisticDTO GetStatisticData(
            int affiliateId,
            DateTime firstDay,
            DateTime firstDayLastMonth,
            DateTime lastDay,
            DateTime lastDayLastMonth
            )
        {
            var patientCount = _context.Patients
                               .Count();

            int treatmentCount = 0;
            List <TreatmentHistory> lastMonthTreatmentHistories, thisMonthTreatmentHistories, overallTreatmentHistories;

            if (affiliateId == 0)
            {
                treatmentCount = _context.TreatmentHistories
                                 .Count();

                lastMonthTreatmentHistories = _context.TreatmentHistories.Where(th => th.DateOfTreatment >= firstDayLastMonth &&
                                                                                th.DateOfTreatment <= lastDayLastMonth)
                                              .ToList();

                thisMonthTreatmentHistories = _context.TreatmentHistories.Where(th => th.DateOfTreatment >= firstDay &&
                                                                                th.DateOfTreatment <= lastDay)
                                              .ToList();

                overallTreatmentHistories = _context.TreatmentHistories
                                            .Include(th => th.Treatment)
                                            .ToList();
            }
            else
            {
                treatmentCount = _context.TreatmentHistories
                                 .Where(th => th.AffiliateId.Equals(affiliateId))
                                 .Count();

                lastMonthTreatmentHistories = _context.TreatmentHistories.Where(th => th.DateOfTreatment >= firstDayLastMonth &&
                                                                                th.DateOfTreatment <= lastDayLastMonth)
                                              .Where(th => th.AffiliateId.Equals(affiliateId))
                                              .ToList();

                thisMonthTreatmentHistories = _context.TreatmentHistories.Where(th => th.DateOfTreatment >= firstDay &&
                                                                                th.DateOfTreatment <= lastDay)
                                              .Where(th => th.AffiliateId.Equals(affiliateId))
                                              .ToList();

                overallTreatmentHistories = _context.TreatmentHistories
                                            .Where(th => th.AffiliateId.Equals(affiliateId))
                                            .Include(th => th.Treatment)
                                            .ToList();
            }

            var monthlyEarnings = lastMonthTreatmentHistories
                                  .Sum(th => th.Price);

            var overallEarnings = overallTreatmentHistories
                                  .Sum(th => th.Price);

            MonthlyTreatmentHistoryDTO monthlyTreatmentHistory = new MonthlyTreatmentHistoryDTO()
            {
                TreatmentHistories = new List <TreatmentHistoryChartDTO>()
            };

            foreach (var treatmentHistory in thisMonthTreatmentHistories)
            {
                var treatmentHistoryChart = monthlyTreatmentHistory.TreatmentHistories
                                            .FirstOrDefault(th => th.DateOfTreatment.ToString("dd-MM-yyyy").Equals(treatmentHistory.DateOfTreatment.ToString("dd-MM-yyyy")));
                if (treatmentHistoryChart is null)
                {
                    monthlyTreatmentHistory.TreatmentHistories.Add(new TreatmentHistoryChartDTO()
                    {
                        Count           = 1,
                        DateOfTreatment = treatmentHistory.DateOfTreatment
                    });
                }
                else
                {
                    treatmentHistoryChart.Count++;
                }
            }

            monthlyTreatmentHistory.MaxCount = monthlyTreatmentHistory.TreatmentHistories.Count > 0 ?
                                               monthlyTreatmentHistory.TreatmentHistories.Max(th => th.Count) : 0;

            PopularTreatmentDTO popularTreatment = new PopularTreatmentDTO()
            {
                Treatments = new List <TreatmentChartDTO>()
            };

            foreach (var treatmentHistory in overallTreatmentHistories)
            {
                var treatmentChart = popularTreatment.Treatments
                                     .FirstOrDefault(th => th.Name.Equals(treatmentHistory.Treatment.Name));
                if (treatmentChart is null)
                {
                    popularTreatment.Treatments.Add(new TreatmentChartDTO()
                    {
                        Count = 1,
                        Name  = treatmentHistory.Treatment.Name
                    });
                }
                else
                {
                    treatmentChart.Count++;
                }
            }

            return(StatisticMapper.ToDTO(
                       affiliateId,
                       patientCount,
                       treatmentCount,
                       monthlyEarnings,
                       overallEarnings,
                       monthlyTreatmentHistory,
                       popularTreatment
                       ));
        }
        public ActionResult <StatisticViewModel> GetSpecifiicStatistic(int affiliateId)
        {
            var statisticDTO = _service.Get(affiliateId);

            return(StatisticMapper.DTOtoVM(statisticDTO));
        }
        public ActionResult <StatisticViewModel> GetStatistic()
        {
            var statisticDTO = _service.Get();

            return(StatisticMapper.DTOtoVM(statisticDTO));
        }