public static PopularTreatmentViewModel DTOtoPopularTreatmentVM(PopularTreatmentDTO popularTreatmentDTO)
 {
     return(new PopularTreatmentViewModel
     {
         Treatments = popularTreatmentDTO.Treatments
                      .Select(th => DTOtoTreatmentChartVM(th)).ToList()
     });
 }
예제 #2
0
 public static StatisticDTO ToDTO(
     int affiliateId,
     int patientCount,
     int treatmentCount,
     decimal monthlyEarnings,
     decimal overallEarnings,
     MonthlyTreatmentHistoryDTO monthlyTreatmentHistoryDTO,
     PopularTreatmentDTO popularTreatmentDTO
     )
 {
     return(new StatisticDTO
     {
         AffiliateId = affiliateId,
         PatientCount = patientCount,
         TreatmentCount = treatmentCount,
         MonthlyEarnings = monthlyEarnings,
         OverallEarnings = overallEarnings,
         MonthlyTreatmentHistory = monthlyTreatmentHistoryDTO,
         PopularTreatment = popularTreatmentDTO
     });
 }
        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
                       ));
        }