public int CountByDevice(string deviceId, DeviceAlarmFilter filter)
        {
            IEnumerable <BsonDocument> pipeline = filter.CountAlarmsPipeline();
            PipelineDefinition <Site, BsonDocument> pipelineDefinition = PipelineDefinition <Site, BsonDocument> .Create(pipeline);

            return(Iterate <int>(pipelineDefinition, (e, count) => JsonConvert.DeserializeObject <BsonAlarmRoot>(e).Count));
        }
        public int CountAll(IMongoFilter <Device, Alarm> filter)
        {
            DeviceAlarmFilter alarmFilter = new DeviceAlarmFilter
            {
                Context   = (filter as AlarmFilter).Context,
                AlarmType = (filter as AlarmFilter).AlarmType,
                Gravity   = (filter as AlarmFilter).Gravity,
                DeviceId  = string.Empty,
                IsRead    = (filter as AlarmFilter).IsRead,
                IsActive  = (filter as AlarmFilter).IsActive
            };

            return(alarmRepository.Count(alarmFilter));
        }
        public IEnumerable <Alarm> GetByDevice(string deviceId, DeviceAlarmFilter filter, int rowsPerPage, int pageNumber)
        {
            IEnumerable <BsonDocument> pipeline = filter.SkipedAlarmsPipeline(rowsPerPage, pageNumber);

            PipelineDefinition <Site, BsonDocument> pipelineDefinition = PipelineDefinition <Site, BsonDocument> .Create(pipeline);

            return(Iterate <IList <Alarm> >(pipelineDefinition, (e, alarms) =>
            {
                if (alarms == null)
                {
                    alarms = new List <Alarm>();
                }
                alarms.Add(JsonConvert.DeserializeObject <BsonAlarmRoot>(e).Alarms);
                return alarms;
            }));
        }
        public IEnumerable <Alarm> Get(DeviceAlarmFilter filter, int rowsPerPage, int pageNumber)
        {
            filter.DeviceId = string.Empty;
            IEnumerable <BsonDocument> pipeline = filter.SkipedAlarmsPipeline(rowsPerPage, pageNumber);

            PipelineDefinition <Site, BsonDocument> pipelineDefinition = PipelineDefinition <Site, BsonDocument> .Create(pipeline);

            return(BsonIterator.Iterate(collection, pipelineDefinition, (BsonDocument e, IList <Alarm> alarms) =>
            {
                if (alarms == null)
                {
                    alarms = new List <Alarm>();
                }
                alarms.Add(BsonSerializer.Deserialize <BsonAlarmRoot>(e).Alarms);
                return alarms;
            }));
        }
        public PaginatedItems <Alarm> GetByDevice(string deviceId, IMongoFilter <Device, Alarm> filter, int rowsPerPage, int pageNumber)
        {
            DeviceAlarmFilter alarmFilter = new DeviceAlarmFilter
            {
                Context   = (filter as AlarmFilter).Context,
                AlarmType = (filter as AlarmFilter).AlarmType,
                Gravity   = (filter as AlarmFilter).Gravity,
                DeviceId  = deviceId,
                IsRead    = (filter as AlarmFilter).IsRead,
                IsActive  = (filter as AlarmFilter).IsActive
            };

            var totalCount = alarmRepository.CountByDevice(deviceId, alarmFilter);
            var pageCount  = rowsPerPage == 0 ? 1 : (int)Math.Ceiling((double)totalCount / rowsPerPage);

            return(new PaginatedItems <Alarm>
            {
                PageCount = pageCount,
                TotalItemsCount = totalCount,
                Items = alarmRepository.GetByDevice(deviceId, alarmFilter, rowsPerPage, pageNumber)
            });
        }