public async Task <JsonResult> GetReportMonthByType(string day = "", int?deviceId = null, string type = "")
        {
            double   total1 = 0, total2 = 0, total3 = 0;
            int      count1 = 0, count2 = 0, count3 = 0;
            DateTime date = DateTime.Today;

            if (day != "")
            {
                try
                {
                    date = Convert.ToDateTime(day);
                }
                catch { }
            }
            DateTime distance1 = new DateTime(date.Year, date.Month, 1);
            DateTime distance2 = new DateTime(date.Year, date.Month, 10, 23, 59, 59);
            DateTime distance3 = new DateTime(date.Year, date.Month, 11);
            DateTime distance4 = new DateTime(date.Year, date.Month, 20, 23, 59, 59);
            DateTime distance5 = new DateTime(date.Year, date.Month, 21);
            DateTime distance6 = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month), 23, 59, 59);
            var      result    = await Task.WhenAll(dataObservationMongoService.GetDatayDeviceId(distance1, distance2, deviceId.Value)
                                                    , dataObservationMongoService.GetDatayDeviceId(distance3, distance4, deviceId.Value)
                                                    , dataObservationMongoService.GetDatayDeviceId(distance5, distance6, deviceId.Value));

            foreach (var item in result[0].ToList())
            {
                total1 = Total(item, type.Trim(), total1);
                count1++;
            }
            double tb1 = total1 / count1;

            foreach (var item in result[1].ToList())
            {
                total2 = Total(item, type.Trim(), total2);
                count2++;
            }
            double tb2 = total2 / count2;

            foreach (var item in result[2].ToList())
            {
                total3 = Total(item, type.Trim(), total3);
                count3++;
            }
            double             tb3        = total3 / count3;
            ReportType         reportType = reportTypeService.GetByCode(type).FirstOrDefault();
            Site               site       = sitesService.GetByDeviceId(deviceId).FirstOrDefault();
            ReportMonthlyModel model      = new ReportMonthlyModel();

            model.Distance1  = tb1;
            model.Distance2  = tb2;
            model.Distance3  = tb3;
            model.Title      = reportType == null ? "" : reportType.Title;
            model.Measure    = reportType == null ? "" : reportType.Measure;
            model.Name       = reportType == null ? "" : reportType.Description + " " + (site == null ? "" : site.Name);
            model.dayInMonth = DateTime.DaysInMonth(date.Year, date.Month);
            return(Json(new { model }, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// Báo cáo theo tháng
        /// </summary>
        /// <param name="areaId"></param>
        /// <param name="Date"></param>
        /// <param name="deviceId"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public async Task <ActionResult> MonthLy(int?areaId = null, string Date = "", int?deviceId = null, string type = "RP0", int?groupId = null)
        {
            ViewBag.Title         = "";
            ViewBag.MessageStatus = TempData["MessageStatus"];
            ViewBag.Message       = TempData["Message"];
            int    CurrentUserId = WebMatrix.WebData.WebSecurity.CurrentUserId;
            string userName      = User.Identity.Name;

            groupId = userProfileService.userProfileResponsitory.Single(CurrentUserId).Group_Id;
            ViewBag.listTypeReport = reportTypeService.reportTypeRepository.GetAll().ToList();
            if (!deviceId.HasValue)
            {
                deviceId = sitesService.GetByAreaId(areaId).FirstOrDefault().DeviceId;
            }
            if (userName == "administrator")
            {
                ViewBag.listSite   = sitesService.sitesResponsitory.GetAll().ToList();
                ViewBag.listArea   = areasService.areaResponsitory.GetAll().ToList();
                ViewBag.listGroups = groupService.groupResponsitory.GetAll().ToList();
            }
            else
            {
                ViewBag.listArea   = areasService.GetAreasByGroupId(groupId).ToList();
                ViewBag.listSite   = sitesService.GetBygroupId(groupId).ToList();
                ViewBag.listGroups = groupService.GetGroups(groupId).ToList();
            }
            ReportMonthlyModel model = new ReportMonthlyModel();

            model = await cacheBO.GetReportByMonth(deviceId.Value, type, Date);

            DateTime date = DateTime.Today;

            if (Date != "")
            {
                try
                {
                    date = Convert.ToDateTime(Date);
                }
                catch { }
            }
            ReportMonthlyViewModel viewModel = new ReportMonthlyViewModel
            {
                Date     = date,
                DeviceId = deviceId,
                data     = model,
                AreaId   = areaId,
            };

            return(View(viewModel));
        }
Example #3
0
    //lấy tên đơn vị theo user ID

    public async Task <ReportMonthlyModel> GetReportByMonth(int deviceId, string type, string Date = "")
    {
        var                QICache    = new Cache_Provider();
        string             strSession = "GetReportByMonth_" + deviceId + type + Date;
        ReportMonthlyModel model      = new ReportMonthlyModel();

        if (!QICache.IsSet(strSession))
        {
            double   total1 = 0, total2 = 0, total3 = 0;
            int      count1 = 0, count2 = 0, count3 = 0;
            DateTime date = DateTime.Today;
            if (Date != "")
            {
                try
                {
                    date = Convert.ToDateTime(Date);
                }
                catch { }
            }
            DateTime distance1 = new DateTime(date.Year, date.Month, 1);
            DateTime distance2 = new DateTime(date.Year, date.Month, 10, 23, 59, 59);
            DateTime distance3 = new DateTime(date.Year, date.Month, 11);
            DateTime distance4 = new DateTime(date.Year, date.Month, 20, 23, 59, 59);
            DateTime distance5 = new DateTime(date.Year, date.Month, 21);
            DateTime distance6 = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month), 23, 59, 59);
            var      result    = await Task.WhenAll(dataObservationMongoService.GetDatayDeviceId(distance1, distance2, deviceId)
                                                    , dataObservationMongoService.GetDatayDeviceId(distance3, distance4, deviceId)
                                                    , dataObservationMongoService.GetDatayDeviceId(distance5, distance6, deviceId));

            foreach (var item in result[0].ToList())
            {
                total1 = CMSHelper.Total(item, type.Trim(), total1);
                count1++;
            }
            double tb1 = total1 / count1;
            foreach (var item in result[1].ToList())
            {
                total2 = CMSHelper.Total(item, type.Trim(), total2);
                count2++;
            }
            double tb2 = total2 / count2;
            foreach (var item in result[2].ToList())
            {
                total3 = CMSHelper.Total(item, type.Trim(), total3);
                count3++;
            }
            double     tb3        = total3 / count3;
            ReportType reportType = reportTypeService.GetByCode(type).FirstOrDefault();
            Site       site       = sitesService.GetByDeviceId(deviceId).FirstOrDefault();
            model.Distance1  = tb1;
            model.Distance2  = tb2;
            model.Distance3  = tb3;
            model.Title      = reportType == null ? "" : reportType.Title;
            model.Measure    = reportType == null ? "" : reportType.Measure;
            model.Name       = reportType == null ? "" : reportType.Description + " " + (site == null ? "" : site.Name);
            model.dayInMonth = DateTime.DaysInMonth(date.Year, date.Month);
            QICache.Set(strSession, model, int.Parse(ConfigurationManager.AppSettings["timeout_cacheserver"]));
        }
        else
        {
            try
            {
                model = QICache.Get(strSession) as ReportMonthlyModel;
            }
            catch
            {
                QICache.Invalidate(strSession);
            }
        }
        return(model);
    }