public ActionResult Index()
 {
     int CurrentUserId = WebMatrix.WebData.WebSecurity.CurrentUserId;
     string userName = WebMatrix.WebData.WebSecurity.CurrentUserName;
     int? groupId = userProfileService.userProfileResponsitory.Single(CurrentUserId).Group_Id;
     if (userName == "administrator")
     {
         ViewBag.listSite = sitesService.sitesResponsitory.GetAll().ToList();
     }
     else
     {
         ViewBag.listSite = sitesService.GetBygroupId(groupId).ToList();
     }
     ViewBag.lstBieuDo = observationService.observationResponsitory.GetAll().ToList();
     HomeModel model = new HomeModel();
     List<Site> sitesInGroup = sitesService.GetBygroupId(groupId).ToList();
     model.ThietBiHoatDong = sitesInGroup.Where(i => i.IsActive == true).Count();
     model.ThietBiKhongHoatDong = sitesInGroup.Where(i => i.IsActive == false).Count();
     ViewBag.listArea = areasService.GetAreasByGroupId(groupId).ToList();
     return View(model);
 }
        public ActionResult Update(int id = 0)
        {
            CMSHelper help = new CMSHelper();

            @ViewBag.Title         = "";
            @ViewBag.MessageStatus = TempData["MessageStatus"];
            @ViewBag.Message       = TempData["Message"];
            int          CurrentUserId = WebMatrix.WebData.WebSecurity.CurrentUserId;
            string       userName      = User.Identity.Name;
            List <Site>  sites         = new List <Site>();
            List <Group> groups        = new List <Group>();

            if (userName == "administrator")
            {
                groups = groupService.groupResponsitory.GetAll().ToList();
                sites  = sitesService.sitesResponsitory.GetAll().ToList();
            }
            else
            {
                int   groupId = userProfileService.userProfileResponsitory.Single(CurrentUserId).Group_Id.Value;
                Group group   = groupService.groupResponsitory.Single(groupId);
                sites = sitesService.GetBygroupId(groupId).ToList();
                groups.Add(group);
            }
            RegisterSMS pts = registerSMSService.registerResponsitory.Single(id);

            if (pts == null)
            {
                return(RedirectToAction("index"));
            }
            ViewBag.listGroup       = groups;
            ViewBag.listObservation = observationService.observationResponsitory.GetAll();
            ViewBag.listSite        = sites;
            ViewBag.listSmsServer   = sMSServerService.smsServerResponsitory.GetAll();
            RegisterSMSModel model = pts.ToModel();

            return(View(model));
        }
        /// <summary>
        /// Báo cáo thường ngày
        /// </summary>
        /// <param name="day"></param>
        /// <param name="areaId"></param>
        /// <param name="deviceId"></param>
        /// <returns></returns>
        public ActionResult Daily(string Date = "", int?areaId = null, int?deviceId = null, 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;
            if (userName == "administrator")
            {
                ViewBag.listSite   = sitesService.sitesResponsitory.GetAll().ToList();
                ViewBag.listGroups = groupService.groupResponsitory.GetAll().ToList();
                ViewBag.listArea   = areasService.areaResponsitory.GetAll().ToList();
            }
            else
            {
                ViewBag.listGroups = groupService.GetGroups(groupId).ToList();
                ViewBag.listArea   = areasService.GetAreasByGroupId(groupId).ToList();
                ViewBag.listSite   = sitesService.GetBygroupId(groupId).ToList();
            }
            DateTime date = DateTime.Today;

            if (Date != "")
            {
                try
                {
                    date = Convert.ToDateTime(Date);
                }
                catch { }
            }
            ReportType rp0 = reportTypeService.GetByCode("RP0").FirstOrDefault();
            ReportType rp1 = reportTypeService.GetByCode("RP1").FirstOrDefault();
            ReportType rp2 = reportTypeService.GetByCode("RP2").FirstOrDefault();
            ReportType rp3 = reportTypeService.GetByCode("RP3").FirstOrDefault();
            ReportType rp4 = reportTypeService.GetByCode("RP4").FirstOrDefault();
            ReportType rp5 = reportTypeService.GetByCode("RP5").FirstOrDefault();
            ReportType rp6 = reportTypeService.GetByCode("RP6").FirstOrDefault();
            Report_NhietDo_DoAm_ApSuat_DailyModel nhietDo = reportDailyNhietDoService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_NhietDo_DoAm_ApSuat_DailyModel
            {
                Distance1      = s.Distance1,
                Distance2      = s.Distance2,
                Distance3      = s.Distance3,
                Distance4      = s.Distance4,
                Distance5      = s.Distance5,
                Distance6      = s.Distance6,
                Distance7      = s.Distance7,
                Distance8      = s.Distance8,
                Distance9      = s.Distance9,
                Distance10     = s.Distance10,
                Distance11     = s.Distance11,
                Distance12     = s.Distance12,
                Distance13     = s.Distance13,
                Distance14     = s.Distance14,
                Distance15     = s.Distance15,
                Distance16     = s.Distance16,
                Distance17     = s.Distance17,
                Distance18     = s.Distance18,
                Distance19     = s.Distance19,
                Distance20     = s.Distance20,
                Distance21     = s.Distance21,
                Distance22     = s.Distance22,
                Distance23     = s.Distance23,
                Distance24     = s.Distance24,
                MinValue       = s.MaxValue,
                MaxValue       = s.MinValue,
                TimeMaxValue   = s.TimeMaxValue,
                TimeMinValue   = s.TimeMinValue,
                Measure        = rp0.Measure,
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp0.Description,
                Title          = rp0.Title
            }).FirstOrDefault();
            Report_NhietDo_DoAm_ApSuat_DailyModel doAm = reportDailyDoAmService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_NhietDo_DoAm_ApSuat_DailyModel
            {
                Distance1      = s.Distance1,
                Distance2      = s.Distance2,
                Distance3      = s.Distance3,
                Distance4      = s.Distance4,
                Distance5      = s.Distance5,
                Distance6      = s.Distance6,
                Distance7      = s.Distance7,
                Distance8      = s.Distance8,
                Distance9      = s.Distance9,
                Distance10     = s.Distance10,
                Distance11     = s.Distance11,
                Distance12     = s.Distance12,
                Distance13     = s.Distance13,
                Distance14     = s.Distance14,
                Distance15     = s.Distance15,
                Distance16     = s.Distance16,
                Distance17     = s.Distance17,
                Distance18     = s.Distance18,
                Distance19     = s.Distance19,
                Distance20     = s.Distance20,
                Distance21     = s.Distance21,
                Distance22     = s.Distance22,
                Distance23     = s.Distance23,
                Distance24     = s.Distance24,
                MinValue       = s.MaxValue,
                MaxValue       = s.MinValue,
                TimeMaxValue   = s.TimeMaxValue,
                TimeMinValue   = s.TimeMinValue,
                Measure        = rp1.Measure,
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp1.Description,
                Title          = rp1.Title
            }).FirstOrDefault();
            Report_NhietDo_DoAm_ApSuat_DailyModel apSuat = reportDailyApSuatService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_NhietDo_DoAm_ApSuat_DailyModel
            {
                Distance1      = s.Distance1,
                Distance2      = s.Distance2,
                Distance3      = s.Distance3,
                Distance4      = s.Distance4,
                Distance5      = s.Distance5,
                Distance6      = s.Distance6,
                Distance7      = s.Distance7,
                Distance8      = s.Distance8,
                Distance9      = s.Distance9,
                Distance10     = s.Distance10,
                Distance11     = s.Distance11,
                Distance12     = s.Distance12,
                Distance13     = s.Distance13,
                Distance14     = s.Distance14,
                Distance15     = s.Distance15,
                Distance16     = s.Distance16,
                Distance17     = s.Distance17,
                Distance18     = s.Distance18,
                Distance19     = s.Distance19,
                Distance20     = s.Distance20,
                Distance21     = s.Distance21,
                Distance22     = s.Distance22,
                Distance23     = s.Distance23,
                Distance24     = s.Distance24,
                MinValue       = s.MaxValue,
                MaxValue       = s.MinValue,
                Measure        = rp2.Measure,
                TimeMaxValue   = s.TimeMaxValue,
                TimeMinValue   = s.TimeMinValue,
                Title          = rp2.Title,
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp2.Description,
            }).FirstOrDefault();
            Report_MucNuoc_DailyModel mucNuoc = reportDailyMucNuocService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_MucNuoc_DailyModel
            {
                Distance1      = s.Distance1,
                Distance2      = s.Distance2,
                Distance3      = s.Distance3,
                Distance4      = s.Distance4,
                Distance5      = s.Distance5,
                Distance6      = s.Distance6,
                Distance7      = s.Distance7,
                Distance8      = s.Distance8,
                Distance9      = s.Distance9,
                Distance10     = s.Distance10,
                Distance11     = s.Distance11,
                Distance12     = s.Distance12,
                Distance13     = s.Distance13,
                Distance14     = s.Distance14,
                Distance15     = s.Distance15,
                Distance16     = s.Distance16,
                Distance17     = s.Distance17,
                Distance18     = s.Distance18,
                Distance19     = s.Distance19,
                Distance20     = s.Distance20,
                Distance21     = s.Distance21,
                Distance22     = s.Distance22,
                Distance23     = s.Distance23,
                Distance24     = s.Distance24,
                TimeMaxValue   = s.TimeMaxValue,
                TimeMinValue   = s.TimeMinValue,
                Measure        = rp5.Measure,
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp5.Description,
                Title          = rp5.Title
            }).FirstOrDefault();
            Report_LuongMuc_DailyModel luongMua = reportDailyLuongMuaService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_LuongMuc_DailyModel
            {
                Distance1      = s.Distance1,
                Distance2      = s.Distance2,
                Distance3      = s.Distance3,
                Distance4      = s.Distance4,
                Distance5      = s.Distance5,
                Distance6      = s.Distance6,
                Distance7      = s.Distance7,
                Distance8      = s.Distance8,
                Distance9      = s.Distance9,
                Distance10     = s.Distance10,
                Distance11     = s.Distance11,
                Distance12     = s.Distance12,
                Distance13     = s.Distance13,
                Distance14     = s.Distance14,
                Distance15     = s.Distance15,
                Distance16     = s.Distance16,
                Distance17     = s.Distance17,
                Distance18     = s.Distance18,
                Distance19     = s.Distance19,
                Distance20     = s.Distance20,
                Distance21     = s.Distance21,
                Distance22     = s.Distance22,
                Distance23     = s.Distance23,
                Distance24     = s.Distance24,
                TimeMaxValue   = s.TimeMaxValue,
                TimeMinValue   = s.TimeMinValue,
                Measure        = rp3.Measure,
                TongLuongMua   = CheckValueReport(s.TongLuongMua, s.ReportTypeCode),
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp3.Description,
                Title          = rp3.Title
            }).FirstOrDefault();
            Report_TocDoGio_DailyModel tocDoGio = reportDailyTocDoGioService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_TocDoGio_DailyModel
            {
                Distance1                = s.Distance1,
                Distance2                = s.Distance2,
                Distance3                = s.Distance3,
                Distance4                = s.Distance4,
                Distance5                = s.Distance5,
                Distance6                = s.Distance6,
                Distance7                = s.Distance7,
                Distance8                = s.Distance8,
                Distance9                = s.Distance9,
                Distance10               = s.Distance10,
                Distance11               = s.Distance11,
                Distance12               = s.Distance12,
                Distance13               = s.Distance13,
                Distance14               = s.Distance14,
                Distance15               = s.Distance15,
                Distance16               = s.Distance16,
                Distance17               = s.Distance17,
                Distance18               = s.Distance18,
                Distance19               = s.Distance19,
                Distance20               = s.Distance20,
                Distance21               = s.Distance21,
                Distance22               = s.Distance22,
                Distance23               = s.Distance23,
                Distance24               = s.Distance24,
                TimeMaxValue             = s.TimeMaxValue,
                TimeMinValue             = s.TimeMinValue,
                Measure                  = rp6.Measure,
                HuongGioCuaTocDoLonNhat  = s.HuongGioCuaTocDoLonNhat,
                HuongGioCuarTocDoNhoNhat = s.HuongGioCuarTocDoNhoNhat,
                TocDoGioLonNhat          = s.TocDoGioLonNhat,
                TocDoGioNhoNhat          = s.TocDoGioNhoNhat,
                ReportTypeCode           = s.ReportTypeCode.Trim(),
                ReportTypeName           = rp6.Description,
                Title = rp6.Title
            }).FirstOrDefault();
            Report_HuongGio_DailyModel huongGio = reportDailyHuongGioService.GetByDeviceIdAndDate(date, deviceId).AsEnumerable().Select(s => new Report_HuongGio_DailyModel
            {
                Distance1    = s.Distance1,
                Distance2    = s.Distance2,
                Distance3    = s.Distance3,
                Distance4    = s.Distance4,
                Distance5    = s.Distance5,
                Distance6    = s.Distance6,
                Distance7    = s.Distance7,
                Distance8    = s.Distance8,
                Distance9    = s.Distance9,
                Distance10   = s.Distance10,
                Distance11   = s.Distance11,
                Distance12   = s.Distance12,
                Distance13   = s.Distance13,
                Distance14   = s.Distance14,
                Distance15   = s.Distance15,
                Distance16   = s.Distance16,
                Distance17   = s.Distance17,
                Distance18   = s.Distance18,
                Distance19   = s.Distance19,
                Distance20   = s.Distance20,
                Distance21   = s.Distance21,
                Distance22   = s.Distance22,
                Distance23   = s.Distance23,
                Distance24   = s.Distance24,
                TimeMaxValue = s.TimeMaxValue,
                TimeMinValue = s.TimeMinValue,
                Measure      = rp4.Measure,
                HuongGioDacTrungNhieuNhat   = GetTenHuongGio(s.HuongGioDacTrungNhieuNhat),
                HuongGioDacTrungNhieuThuHai = GetTenHuongGio(s.HuongGioDacTrungNhieuThuHai),
                ReportTypeCode = s.ReportTypeCode.Trim(),
                ReportTypeName = rp4.Description,
                Title          = rp4.Title
            }).FirstOrDefault();
            ReportDailyViewModel viewModel = new ReportDailyViewModel
            {
                Date     = date,
                NhietDo  = nhietDo,
                DoAm     = doAm,
                ApSuat   = apSuat,
                MucNuoc  = mucNuoc,
                LuongMua = luongMua,
                DeviceId = deviceId,
                TocDoGio = tocDoGio,
                HuongGio = huongGio,
                AreaId   = areaId,
                GroupId  = groupId
            };

            return(View(viewModel));
        }
        public ActionResult Management(int page = 1, int pageSize = 50, string title = "", int?areaId = null, string fromDate = "", string toDate = "", int?siteID = null)
        {
            ViewBag.Title         = "";
            ViewBag.MessageStatus = TempData["MessageStatus"];
            ViewBag.Message       = TempData["Message"];
            if (pageSize == 1)
            {
                pageSize = CMSHelper.pageSizes[0];
            }
            @ViewBag.PageSizes = CMSHelper.pageSizes;

            int CurrentUserId = WebMatrix.WebData.WebSecurity.CurrentUserId;
            int?groupId       = userProfileService.userProfileResponsitory.Single(CurrentUserId).Group_Id;

            ViewBag.lstTram = sitesService.GetBygroupId(groupId).ToList();
            string   userName = User.Identity.Name;
            int      skip     = (page - 1) * pageSize;
            DateTime from     = DateTime.Today;
            DateTime to       = from.AddDays(1);

            if (fromDate != "")
            {
                try
                {
                    from = Convert.ToDateTime(fromDate);
                    to   = Convert.ToDateTime(toDate);
                }
                catch { }
            }
            List <DataObservationModel> list = new List <DataObservationModel>();
            int totalRows = 0;

            if (siteID.HasValue)
            {
                int deviceId = sitesService.sitesResponsitory.Single(siteID).DeviceId.Value;
                list = dataObservationMongoService.GetDataPagingByDeviceId(from, to, deviceId, skip, pageSize, out int total).OrderByDescending(i => i.DateCreate).Select(x => new DataObservationModel
                {
                    BTI        = x.BTI,
                    BTO        = x.BTO,
                    BHU        = x.BHU,
                    BWS        = x.BWS,
                    BAP        = x.BAP,
                    BAV        = x.BAV,
                    BAC        = x.BAC,
                    BAF        = x.BAF,
                    NameSite   = sitesService.sitesResponsitory.GetAll().Where(i => i.DeviceId == x.Device_Id).FirstOrDefault().Name,
                    DateCreate = x.DateCreate
                }).ToList();
                totalRows = total;
            }
            else
            {
                list = dataObservationMongoService.GetDataPaging(from, to, skip, pageSize, out int total).OrderByDescending(i => i.DateCreate).Select(x => new DataObservationModel
                {
                    BTI        = x.BTI,
                    BTO        = x.BTO,
                    BHU        = x.BHU,
                    BWS        = x.BWS,
                    BAP        = x.BAP,
                    BAV        = x.BAV,
                    BAC        = x.BAC,
                    BAF        = x.BAF,
                    NameSite   = sitesService.sitesResponsitory.GetAll().Where(i => i.DeviceId == x.Device_Id).FirstOrDefault().Name,
                    DateCreate = x.DateCreate
                }).ToList();
                totalRows = total;
            }



            #region Hiển thị dữ liệu và phân trang
            DataObservationViewModel viewModel = new DataObservationViewModel
            {
                DataO      = new StaticPagedList <DataObservationModel>(list, page, pageSize, totalRows),
                PagingInfo = new PagingInfo
                {
                    CurrentPage  = page,
                    ItemsPerPage = pageSize,
                    TotalItems   = totalRows
                },
                From = from,
                To   = to,
            };
            #endregion
            return(View(viewModel));
        }