Esempio n. 1
0
        public async Task SaveObjectAsync(CameraObject @object, Guid deviceKey)
        {
            var objects    = new List <Object>();
            var deviceId   = (await _device.GetAsync(deviceKey)) !.DeviceId;
            var personKeys = @object.Data.Keys.Select(Guid.Parse).ToList();

            var persons = await _dbContext.Person
                          .Include(x => x.Group).ThenInclude(x => x.GroupShift)
                          .Where(x => personKeys.Contains(x.Key) && x.IsActive).ToListAsync();

            Log.Information("Group date {date}", @object.Date);

            foreach (var(key, model) in @object.Data)
            {
                Log.Information("Saving Object {objectId}, with count {count}", key, model.PersonCount);
                var dbObject = new Object
                {
                    CreateDate  = DateTime.Now,
                    DeviceId    = deviceId,
                    ChannelId   = @object.CameraId,
                    PersonKey   = Guid.Parse(key),
                    FrameDate   = DateTime.Parse(@object.Date),
                    Frame       = await SaveImageAsync(model),
                    PersonCount = model.PersonCount
                };

                //FillGroupEntry(persons, dbObject);

                objects.Add(dbObject);
            }

            await _dbContext.Object.AddRangeAsync(objects);

            await _dbContext.SaveChangesAsync();
        }
Esempio n. 2
0
 public RecordModel(Person person, Object @object, ImageSettings settings)
 {
     Id         = person.Id;
     FirstName  = person.FirstName;
     LastName   = person.LastName;
     GroupName  = person.Group.Name;
     CreateDate = @object.FrameDate;
     FramePath  = @object.Frame.GetWebPath(settings, ImageType.Object);
 }
Esempio n. 3
0
        private static void FillGroupEntry(IEnumerable <Person> persons, Object @object)
        {
            var person = persons.FirstOrDefault(x => x.Key == @object.PersonKey);

            var shift = person?.Group.GroupShift.OrderByDescending(x => x.WeekNumber).FirstOrDefault();

            if (shift is null || (DateTime.Now < shift.StartDate || DateTime.Now > shift.EndDate))
            {
                return;
            }

            shift.GroupEntry.Add(new GroupEntry
            {
                Direction  = (int)Direction.In,
                CreateDate = @object.FrameDate,
                PersonId   = person.Id,
                FrameId    = @object.Frame.Id
            });
        }