Beispiel #1
0
 public async Task DeleteAsync(int id)
 {
     using (var db = new MbkCameraDb(ConnectionString))
     {
         var camera = db.Cameras.FirstOrDefault(x => x.Id == id);
         db.Cameras.Remove(camera);
         await db.SaveChangesAsync();
     }
 }
Beispiel #2
0
 public async Task InsertAsync(CameraModel model)
 {
     using (var db = new MbkCameraDb(ConnectionString))
     {
         var camera = Mapper.Map <Camera>(model);
         db.Cameras.Add(camera);
         await db.SaveChangesAsync();
     }
 }
Beispiel #3
0
 public async Task <CameraModel> GetAsync(int id)
 {
     return(await Task.Run(() =>
     {
         using (var db = new MbkCameraDb(ConnectionString))
         {
             var camera = db.Cameras.FirstOrDefault(x => x.Id == id);
             return Mapper.Map <CameraModel>(camera);
         }
     }));
 }
Beispiel #4
0
 public async Task <IList <CameraModel> > GetAsync()
 {
     return(await Task.Run(() =>
     {
         using (var db = new MbkCameraDb(ConnectionString))
         {
             var cameras = db.Cameras.ToList();
             return Mapper.Map <List <CameraModel> >(cameras);
         }
     }));
 }
Beispiel #5
0
 public async Task InsertAsync(IEnumerable <HeatMapModel> models)
 {
     using (var db = new MbkCameraDb(ConnectionString))
     {
         var heatMaps = Mapper.Map <IEnumerable <HeatMap> >(models);
         foreach (var obj in heatMaps)
         {
             if (!db.HeatMaps.Any(x => x.CameraId == obj.CameraId && x.Date == obj.Date && x.Time == obj.Time))
             {
                 db.HeatMaps.Add(obj);
             }
         }
         await db.SaveChangesAsync();
     }
 }
Beispiel #6
0
 public bool CheckConnection()
 {
     using (var db = new MbkCameraDb(ConnectionString))
     {
         DbConnection conn = db.Database.Connection;
         try
         {
             conn.Open();
             return(true);
         }
         catch
         {
             return(false);
         }
     }
 }
Beispiel #7
0
        public async Task UpdateAsync(CameraModel model)
        {
            using (var db = new MbkCameraDb(ConnectionString))
            {
                var camera = db.Cameras.FirstOrDefault(x => x.Id == model.Id);
                if (camera != null)
                {
                    camera.IpAddress = model.IpAddress;
                    camera.Floor     = model.Floor;
                    camera.Name      = model.Name;
                    camera.Height    = model.Height;
                    camera.Username  = model.Username;
                    camera.Password  = model.Password;

                    await db.SaveChangesAsync();
                }
            }
        }
Beispiel #8
0
        public async Task <IList <HeatMapCountingReportHeaderModel> > GetHeatMapCoutingReportAsync(DateTime reportDate, ReportPeriodType period)
        {
            return(await Task.Run(() =>
            {
                using (var db = new MbkCameraDb(ConnectionString))
                {
                    string queryDate = ToDateString(reportDate);
                    var dbData = from cam in db.Cameras
                                 join hm in db.HeatMaps on cam.Id equals hm.CameraId
                                 join ct in db.Countings on
                                 new { CameraId = cam.Id, Date = hm.Date, Time = hm.Time, Gmt = hm.Gmt } equals
                    new { CameraId = ct.CameraId, Date = ct.Date, ct.Time, ct.Gmt }
                    where ct.Date == queryDate
                    select new
                    {
                        Id = cam.Id,
                        CameraArea = cam.Height,
                        CameraFloor = cam.Floor,
                        CameraName = cam.Name,
                        Date = ct.Date,
                        Time = ct.Time,
                        HeatMapValue = hm.TotalValue,
                        HeatMapCount = hm.TotalCount,
                        Countings = ct.CountingDetails,
                        Gmt = ct.Gmt
                    };

                    int separateValue = 1;
                    switch (period)
                    {
                    case ReportPeriodType.M15: separateValue = 1; break;

                    case ReportPeriodType.M30: separateValue = 2; break;

                    case ReportPeriodType.H1: separateValue = 4; break;
                    }
                    var cameraData = dbData
                                     .GroupBy(x => new { x.Id, x.CameraArea, x.CameraFloor, x.CameraName, x.Date })
                                     .AsEnumerable()
                                     .Select((g) => new
                    {
                        Id = g.Key.Id,
                        CameraArea = g.Key.CameraArea,
                        CameraFloor = g.Key.CameraFloor,
                        CameraName = g.Key.CameraName,
                        Date = g.Key.Date,
                        Report = g
                                 .OrderBy(x => x.Time)
                                 .Select((x, i) => new
                        {
                            Period = i / separateValue,
                            Time = ConvertToTime(x.Time).Add(ConvertToTime(x.Gmt)),
                            Density = x.HeatMapCount > 0 ?
                                      Math.Round((decimal)x.HeatMapValue / (decimal)x.HeatMapCount, 2) : 0,
                            Countings = x.Countings.Select((a, index) => new CountingReportDetailModel
                            {
                                LineNo = index,
                                A = a.A,
                                B = a.B
                            }),
                        })
                                 .GroupBy(x => x.Period)
                                 .Select(g2 => new
                        {
                            StartTime = g2.Min(a => a.Time),
                            EndTime = g2.Max(a => a.Time),
                            Density = g2.Sum(a => a.Density),
                            Countings = g2.SelectMany(a => a.Countings)
                                        .GroupBy(b => b.LineNo)
                                        .Select(g3 => new CountingReportDetailModel
                            {
                                LineNo = g3.Key,
                                A = g3.Sum(b => b.A),
                                B = g3.Sum(b => b.B)
                            })
                        })
                    })
                                     .OrderBy(x => x.Id);

                    var query = cameraData
                                .Select((header, index) => new HeatMapCountingReportHeaderModel
                    {
                        CameraNo = index + 1,
                        CameraFloor = header.CameraFloor,
                        CameraName = header.CameraName,
                        Date = ConvertToDate(header.Date).ToString("d/MM/yyyy"),
                        Details = header.Report.Select(detail => new HeatMapCountingReportDetailModel
                        {
                            Time = string.Format("{0}-{1}",
                                                 detail.StartTime.Add(TimeSpan.FromMinutes(1)).ToString("hh\\:mm"),
                                                 detail.EndTime.Add(TimeSpan.FromMinutes(15)).ToString("hh\\:mm")),
                            Density = detail.Density,
                            Area = header.CameraArea,
                            DensityPerArea = Math.Round(detail.Density / header.CameraArea, 2),
                            Countings = detail.Countings.ToList(),
                        }).ToList()
                    });

                    return query.ToList();
                }
            }));
        }