public void SendHourOfWeekLimitTableToCSV(Stream returnStream, int channelID, string searchString, CompatibleCancellationToken cancellationToken, string sortField = "HourOfWeek", bool ascending = true)
        {
            MetersWithHourlyLimits     meter;
            ChannelsWithHourlyLimits   channel;
            List <HourOfWeekLimitView> hourlyLimits = new List <HourOfWeekLimitView>();

            using (var connection = new AdoDataConnection("systemSettings"))
            {
                TableOperations <MetersWithHourlyLimits>   meterTable   = new TableOperations <MetersWithHourlyLimits>(connection);
                TableOperations <ChannelsWithHourlyLimits> channelTable = new TableOperations <ChannelsWithHourlyLimits>(connection);
                TableOperations <HourOfWeekLimitView>      table        = new TableOperations <HourOfWeekLimitView>(connection);

                channel = channelTable.QueryRecordWhere("ID = {0}", channelID);
                meter   = meterTable.QueryRecordWhere("ID = {0}", channel.MeterID);

                RecordRestriction searchRestriction  = table.GetSearchRestriction(searchString);
                RecordRestriction channelRestriction = new RecordRestriction("ChannelID = {0}", channel.ID);
                RecordRestriction finalRestriction   = searchRestriction + channelRestriction;

                string sortExpression = sortField != null ? sortField + (ascending == true ? " ASC" : " DESC") : null;

                hourlyLimits = table.QueryRecords(sortExpression, finalRestriction).ToList();
            }

            string meterInfo   = meter.ToCSV();
            string channelInfo = channel.ToCSV();

            using (StreamWriter writer = new StreamWriter(returnStream))
                foreach (HourOfWeekLimitView limit in hourlyLimits)
                {
                    writer.WriteLine(meterInfo + "," + channelInfo + "," + limit.ToCSV());
                }
        }
示例#2
0
        public IEnumerable <ChannelsWithNormalLimits> QueryChannelsWithNormalLimits(int meterId, string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <ChannelsWithNormalLimits> table = DataContext.Table <ChannelsWithNormalLimits>();
            RecordRestriction restriction = table.GetSearchRestriction(filterText);

            return(table.QueryRecords(sortField, ascending, page, pageSize, new RecordRestriction("MeterID = {0}", meterId) + restriction));
        }
        public void SendChannelsWithHourlyLimitsToCSV(Stream returnStream, int meterID, string searchString, CompatibleCancellationToken cancellationToken, string sortField = "Name", bool ascending = true)
        {
            MetersWithHourlyLimits          meter;
            List <ChannelsWithHourlyLimits> channels;

            using (var connection = new AdoDataConnection("systemSettings"))
            {
                TableOperations <MetersWithHourlyLimits>   meterTable   = new TableOperations <MetersWithHourlyLimits>(connection);
                TableOperations <ChannelsWithHourlyLimits> channelTable = new TableOperations <ChannelsWithHourlyLimits>(connection);
                meter = meterTable.QueryRecordWhere("ID = {0}", meterID);

                string sortExpression = sortField != null ? sortField + (ascending == true ? " ASC" : " DESC") : null;

                RecordRestriction searchRestriction = channelTable.GetSearchRestriction(searchString);
                RecordRestriction meterRestriction  = new RecordRestriction("MeterID = {0}", meterID);
                RecordRestriction finalRestriction  = searchRestriction + meterRestriction;

                channels = channelTable.QueryRecords(sortExpression, finalRestriction).ToList();
            }

            foreach (var channel in channels)
            {
                if (cancellationToken.IsCancelled)
                {
                    return;
                }

                SendHourOfWeekLimitTableToCSV(returnStream, channel.ID, "", cancellationToken);
            }
        }
示例#4
0
        public int QueryChannelsWithNormalLimitsCount(int meterId, string filterText)
        {
            TableOperations <ChannelsWithNormalLimits> table = DataContext.Table <ChannelsWithNormalLimits>();
            RecordRestriction restriction = table.GetSearchRestriction(filterText);

            return(table.QueryRecordCount(new RecordRestriction("MeterID = {0}", meterId) + restriction));
        }
示例#5
0
        public IEnumerable <HourOfWeekLimitView> QueryHourOfWeekLimit(int channelId, string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <HourOfWeekLimitView> table = DataContext.Table <HourOfWeekLimitView>();
            RecordRestriction restriction = table.GetSearchRestriction(filterText);

            return(table.QueryRecords(sortField, ascending, page, pageSize, new RecordRestriction("ChannelID = {0}", channelId) + restriction));
        }
示例#6
0
        public int QueryHourOfWeekLimitCount(int channelId, string filterText)
        {
            TableOperations <HourOfWeekLimit> table = DataContext.Table <HourOfWeekLimit>();
            RecordRestriction restriction           = table.GetSearchRestriction(filterText);

            return(table.QueryRecordCount(new RecordRestriction("ChannelID = {0}", channelId) + restriction));
        }
        public void SendChannelsWithNormalLimitsToCSV(Stream returnStream, int meterID, string searchString, CompatibleCancellationToken cancellationToken, string sortField = "Name", bool ascending = true)
        {
            MetersWithNormalLimits meter;
            IEnumerable <ChannelsWithNormalLimits> channels;

            using (var connection = new AdoDataConnection("systemSettings"))
            {
                TableOperations <MetersWithNormalLimits>   meterTable   = new TableOperations <MetersWithNormalLimits>(connection);
                TableOperations <ChannelsWithNormalLimits> channelTable = new TableOperations <ChannelsWithNormalLimits>(connection);

                meter = meterTable.QueryRecordWhere("ID = {0}", meterID);

                RecordRestriction searchRestriction = channelTable.GetSearchRestriction(searchString);
                string            sortExpression    = sortField != null ? sortField + (ascending == true ? " ASC" : " DESC") : null;

                channels = channelTable.QueryRecords(sortExpression, new RecordRestriction("MeterID = {0}", meterID) + searchRestriction).ToList();
            }

            string meterInfo = meter.ToCSV();

            using (StreamWriter writer = new StreamWriter(returnStream))
                foreach (ChannelsWithNormalLimits limit in channels)
                {
                    writer.WriteLine(meterInfo + "," + limit.ToCSV());
                }
        }
示例#8
0
        public static Event GetEvent(this TableOperations <Event> eventTable, FileGroup fileGroup, DataGroup dataGroup)
        {
            int      fileGroupID = fileGroup.ID;
            int      lineID      = dataGroup.Line.ID;
            DateTime startTime   = dataGroup.StartTime;
            DateTime endTime     = dataGroup.EndTime;
            int      samples     = dataGroup.Samples;

            IDbDataParameter startTimeParameter = new SqlParameter()
            {
                ParameterName = nameof(dataGroup.StartTime),
                DbType        = DbType.DateTime2,
                Value         = startTime
            };

            IDbDataParameter endTimeParameter = new SqlParameter()
            {
                ParameterName = nameof(dataGroup.EndTime),
                DbType        = DbType.DateTime2,
                Value         = endTime
            };

            RecordRestriction recordRestriction =
                new RecordRestriction("FileGroupID = {0}", fileGroupID) &
                new RecordRestriction("LineID = {0}", lineID) &
                new RecordRestriction("StartTime = {0}", startTimeParameter) &
                new RecordRestriction("EndTime = {0}", endTimeParameter) &
                new RecordRestriction("Samples = {0}", samples);

            return(eventTable.QueryRecord(recordRestriction));
        }
        private void CreateOrUpdate(ImportedMeasurement measurement)
        {
            TransactionScopeOption transactionScopeOption = TransactionScopeOption.Required;

            TransactionOptions transactionOptions = new TransactionOptions()
            {
                IsolationLevel = IsolationLevel.ReadCommitted,
                Timeout        = TransactionManager.MaximumTimeout
            };

            measurement.NodeID = NodeID;
            measurement.Source = Source;

            using (TransactionScope transactionScope = new TransactionScope(transactionScopeOption, transactionOptions))
                using (AdoDataConnection connection = CreateDbConnection())
                {
                    TableOperations <ImportedMeasurement> importedMeasurementTable = new TableOperations <ImportedMeasurement>(connection);

                    RecordRestriction recordRestriction =
                        new RecordRestriction("NodeID = {0}", measurement.NodeID) &
                        new RecordRestriction("Source = {0}", measurement.Source) &
                        new RecordRestriction("PointID = {0}", measurement.PointID);

                    int measurementCount = importedMeasurementTable.UpdateRecord(measurement, recordRestriction);

                    if (measurementCount == 0)
                    {
                        importedMeasurementTable.AddNewRecord(measurement);
                    }

                    transactionScope.Complete();
                }
        }
            public void Initialize(AdoDataConnection connection, VICycleDataGroup viCycleDataGroup, double systemFrequency)
            {
                int samplesPerCycle = Transform.CalculateSamplesPerCycle(viCycleDataGroup.VA.RMS, systemFrequency);

                TableOperations <FaultSegment> faultSegmentTable = new TableOperations <FaultSegment>(connection);

                RecordRestriction recordRestriction =
                    new RecordRestriction("EventID = {0}", Fault.EventID) &
                    new RecordRestriction("StartTime = {0}", ToDateTime2(connection, Fault.Inception)) &
                    new RecordRestriction("(SELECT Name FROM SegmentType WHERE ID = SegmentTypeID) = 'Fault'");

                FaultSegment faultSegment = faultSegmentTable.QueryRecord(recordRestriction);

                if ((object)faultSegment == null)
                {
                    throw new InvalidOperationException($"Unable to find fault segment that matches fault summary for event {Fault.EventID}.");
                }

                StartSample    = faultSegment.StartSample;
                EndSample      = faultSegment.EndSample - samplesPerCycle + 1;
                CycleDataGroup = Rotate(viCycleDataGroup.ToSubSet(StartSample, EndSample));

                DistanceCurve.StartIndex = StartSample;
                AngleCurve.StartIndex    = StartSample;
            }
        /// <summary>
        /// Gets the users for a specific role filtered using primeui autocomplete
        /// </summary>
        /// <param name="role">Role that you want users from</param>
        /// <param name="searchText">primeui search text</param>
        /// <param name="limit">number of users to return, -1 is default and returns all</param>
        /// <returns>IENumerable of ID Labels used with primeui autocomplete</returns>

        public IEnumerable <IDLabel> SearchUsers(string role, string searchText, int limit = -1)
        {
            RecordRestriction restriction = new RecordRestriction("ID IN (SELECT UserAccountID FROM ApplicationRoleUserAccount WHERE ApplicationRoleUserAccount.ApplicationRoleID IN (SELECT ID FROM ApplicationRole WHERE Name = {0}))", role);

            if (limit < 1)
            {
                return(DataContext
                       .Table <UserAccount>()
                       .QueryRecords(restriction: restriction)
                       .Select(record =>
                {
                    record.Name = UserInfo.SIDToAccountName(record.Name ?? "");
                    return record;
                })
                       .Where(record => record.Name?.ToLower().Contains(searchText.ToLower()) ?? false)
                       .Select(record => IDLabel.Create(record.ID.ToString(), record.Name)));
            }

            return(DataContext
                   .Table <UserAccount>()
                   .QueryRecords(restriction: restriction)
                   .Select(record =>
            {
                record.Name = UserInfo.SIDToAccountName(record.Name ?? "");
                return record;
            })
                   .Where(record => record.Name?.ToLower().Contains(searchText.ToLower()) ?? false)
                   .Take(limit)
                   .Select(record => IDLabel.Create(record.ID.ToString(), record.Name)));
        }
示例#12
0
        public IEnumerable <UserAccount> QueryUserAccounts(string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <UserAccount> tableOperations = DataContext.Table <UserAccount>();
            RecordRestriction             restriction     = tableOperations.GetSearchRestriction(filterText);

            return(tableOperations.QueryRecords(sortField, ascending, page, pageSize, restriction));
        }
示例#13
0
        public int QueryUserAccountCount(string filterText)
        {
            TableOperations <UserAccount> tableOperations = DataContext.Table <UserAccount>();
            RecordRestriction             restriction     = tableOperations.GetSearchRestriction(filterText);

            return(tableOperations.QueryRecordCount(restriction));
        }
示例#14
0
        private Meter LoadMeterFromDatabase(MeterDataSet meterDataSet)
        {
            using (AdoDataConnection connection = meterDataSet.CreateDbConnection())
            {
                Meter LoadCurrentMeter()
                {
                    TableOperations <Meter> meterTable = new TableOperations <Meter>(connection);
                    Meter parsedMeter = meterDataSet.Meter;
                    Meter dbMeter     = meterTable.QueryRecordWhere("AssetKey = {0}", parsedMeter.AssetKey);

                    dbMeter.ConnectionFactory = meterDataSet.CreateDbConnection;
                    return(dbMeter);
                }

                Meter LoadHistoricMeter()
                {
                    const string ConfigKey = "openXDA";

                    TableOperations <MeterConfiguration> meterConfigurationTable = new TableOperations <MeterConfiguration>(connection);

                    RecordRestriction recordRestriction =
                        new RecordRestriction("ConfigKey = {0}", ConfigKey) &
                        new RecordRestriction("{0} IN (SELECT FileGroupID FROM FileGroupMeterConfiguration WHERE MeterConfigurationID = MeterConfiguration.ID)", meterDataSet.FileGroup.ID);

                    MeterConfiguration meterConfiguration = meterConfigurationTable.QueryRecord("ID DESC", recordRestriction);

                    if (meterConfiguration == null)
                    {
                        // Need to find the oldest configuration record for this meter
                        Meter dbMeter = LoadCurrentMeter();
                        int?  meterID = dbMeter?.ID;

                        recordRestriction =
                            new RecordRestriction("MeterID = {0}", meterID) &
                            new RecordRestriction("ConfigKey = {0}", ConfigKey) &
                            new RecordRestriction("ID NOT IN (SELECT DiffID FROM MeterConfiguration WHERE DiffID IS NOT NULL)");

                        meterConfiguration = meterConfigurationTable.QueryRecord("ID", recordRestriction);
                    }

                    if (meterConfiguration == null)
                    {
                        return(null);
                    }

                    MeterSettingsSheet settingsSheet = new MeterSettingsSheet(meterConfigurationTable, meterConfiguration);

                    return(settingsSheet.Meter);
                }

                Log.Info("Locating meter in database...");

                if (meterDataSet.LoadHistoricConfiguration)
                {
                    return(LoadHistoricMeter());
                }

                return(LoadCurrentMeter());
            }
        }
示例#15
0
        /// <summary>
        /// Generates template based select field based on reflected modeled table field attributes with values derived from ValueList table.
        /// </summary>
        /// <typeparam name="T">Modeled table for select field.</typeparam>
        /// <param name="groupName">Value list group name as defined in ValueListGroup table.</param>
        /// <param name="fieldName">Field name for value of select field.</param>
        /// <param name="optionLabelFieldName">Field name for label of option data, defaults to "Text"</param>
        /// <param name="optionValueFieldName">Field name for ID of option data, defaults to "Key".</param>
        /// <param name="optionSortFieldName">Field name for sort order of option data, defaults to "SortOrder"</param>
        /// <param name="fieldLabel">Label name for select field, pulls from <see cref="LabelAttribute"/> if defined, otherwise defaults to <paramref name="fieldName"/>.</param>
        /// <param name="fieldID">ID to use for select field; defaults to select + <paramref name="fieldName"/>.</param>
        /// <param name="groupDataBinding">Data-bind operations to apply to outer form-group div, if any.</param>
        /// <param name="labelDataBinding">Data-bind operations to apply to label, if any.</param>
        /// <param name="customDataBinding">Extra custom data-binding operations to apply to field, if any.</param>
        /// <param name="dependencyFieldName">Defines default "enabled" subordinate data-bindings based a single boolean field, e.g., a check-box.</param>
        /// <param name="optionDataBinding">Data-bind operations to apply to each option value, if any.</param>
        /// <param name="toolTip">Tool tip text to apply to field, if any.</param>
        /// <param name="initialFocus">Use field for initial focus.</param>
        /// <returns>Generated HTML for new text field based on modeled table field attributes.</returns>
        public string AddValueListSelectField <T>(string fieldName, string groupName, string optionLabelFieldName = "Text", string optionValueFieldName = "Key", string optionSortFieldName = "SortOrder", string fieldLabel = null, string fieldID = null, string groupDataBinding = null, string labelDataBinding = null, string customDataBinding = null, string dependencyFieldName = null, string optionDataBinding = null, string toolTip = null, bool initialFocus = false) where T : class, new()
        {
            int key = DataContext.Connection.ExecuteScalar <int?>("SELECT ID FROM ValueListGroup WHERE Name={0} AND Enabled <> 0", groupName) ?? 0;

            RecordRestriction restriction = new RecordRestriction("GroupID = {0} AND Enabled <> 0 AND Hidden = 0", key);

            return(DataContext.AddSelectField <T, ValueList>(fieldName, optionValueFieldName, optionLabelFieldName, optionSortFieldName, fieldLabel, fieldID, groupDataBinding, labelDataBinding, null, customDataBinding, dependencyFieldName, optionDataBinding, toolTip, initialFocus, restriction));
        }
示例#16
0
        public int QueryIncidentEventCycleDataViewCount(string date, string name, string levels, string limits, string timeContext, string filterString)
        {
            TableOperations <IncidentEventCycleDataView> table = DataContext.Table <IncidentEventCycleDataView>();
            RecordRestriction filterRestriction = table.GetSearchRestriction(filterString);
            DateTime          startDate         = DateTime.ParseExact(date, "yyyyMMddHH", CultureInfo.InvariantCulture);
            DateTime          endDate           = (DateTime)typeof(DateTime).GetMethod("Add" + timeContext).Invoke(startDate, new object[] { 1 });

            return(table.QueryRecordCount(filterRestriction + new RecordRestriction("StartTime BETWEEN {0} AND {1}", startDate, endDate) + new RecordRestriction(levels + " = {0}", name)));
        }
示例#17
0
        public Task <DataTable> GetDataFiles([FromBody] GetDataFilesPostData postData, CancellationToken cancellationToken)
        {
            return(Task.Run(() =>
            {
                using (AdoDataConnection connection = new AdoDataConnection("systemSettings"))
                {
                    const string QueryFormat =
                        "WITH cte AS " +
                        "( " +
                        "    SELECT * " +
                        "    FROM DataFile " +
                        "    WHERE {0} " +
                        ") " +
                        "SELECT DataFile.* " +
                        "FROM " +
                        "( " +
                        "    SELECT " +
                        "        ROW_NUMBER() OVER(ORDER BY {2}) AS RowNumber, " +
                        "        DataFile.* " +
                        "    FROM (SELECT DISTINCT FileGroupID ID FROM cte) FileGroup CROSS APPLY " +
                        "    ( " +
                        "        SELECT TOP 1 * " +
                        "        FROM cte DataFile " +
                        "        WHERE DataFile.FileGroupID = FileGroup.ID " +
                        "        ORDER BY FileSize DESC, FilePath " +
                        "    ) DataFile " +
                        ") DataFile " +
                        "WHERE {1} " +
                        "ORDER BY RowNumber";

                    TableOperations <DataFile> dataFileTable = new TableOperations <DataFile>(connection);

                    RecordRestriction searchRestriction = dataFileTable.GetSearchRestriction(postData.filterString)
                                                          ?? new RecordRestriction("1=1");

                    string searchClause = searchRestriction.FilterExpression;

                    int paramIndex = searchRestriction.Parameters.Length;
                    string pageClause = $"RowNumber BETWEEN {{{paramIndex}}} AND {{{paramIndex + 1}}}";

                    string sortOrder = postData.ascending ? "ASC" : "DESC";
                    string orderByClause = $"{postData.sortField} {sortOrder}";
                    string query = string.Format(QueryFormat, searchClause, pageClause, orderByClause);

                    int pageStart = (postData.page - 1) * postData.pageSize + 1;
                    int pageEnd = pageStart + postData.pageSize - 1;

                    object[] parameters = searchRestriction.Parameters
                                          .Concat(new object[] { pageStart, pageEnd })
                                          .ToArray();

                    return connection
                    .RetrieveData(query, parameters);
                }
            }, cancellationToken));
        }
示例#18
0
        public IEnumerable <PhasorDetail> QueryPhasors(int deviceID, string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <PhasorDetail> phasorDetailTable = DataContext.Table <PhasorDetail>();

            RecordRestriction restriction = (deviceID > 0 ?
                                             new RecordRestriction("DeviceID = {0}", deviceID) : null) +
                                            phasorDetailTable.GetSearchRestriction(filterText);

            return(DataContext.Table <PhasorDetail>().QueryRecords(sortField, ascending, page, pageSize, restriction));
        }
示例#19
0
        public int QueryPhasorCount(int deviceID, string filterText)
        {
            TableOperations <PhasorDetail> phasorDetailTable = DataContext.Table <PhasorDetail>();

            RecordRestriction restriction = (deviceID > 0 ?
                                             new RecordRestriction("DeviceID = {0}", deviceID) : null) +
                                            phasorDetailTable.GetSearchRestriction(filterText);

            return(phasorDetailTable.QueryRecordCount(restriction));
        }
示例#20
0
        public IEnumerable <DeviceGroup> QueryDeviceGroups(Guid nodeID, string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <DeviceGroup> deviceGroupTable = DataContext.Table <DeviceGroup>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0} AND ProtocolID = {1} AND AccessID = {2}", nodeID, VirtualProtocolID, DeviceGroup.DefaultAccessID) +
                deviceGroupTable.GetSearchRestriction(filterText);

            return(deviceGroupTable.QueryRecords(sortField, ascending, page, pageSize, restriction));
        }
示例#21
0
        public int QueryDeviceGroupCount(Guid nodeID, string filterText)
        {
            TableOperations <DeviceGroup> deviceGroupTable = DataContext.Table <DeviceGroup>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0} AND ProtocolID = {1} AND AccessID = {2}", nodeID, VirtualProtocolID, DeviceGroup.DefaultAccessID) +
                deviceGroupTable.GetSearchRestriction(filterText);

            return(deviceGroupTable.QueryRecordCount(restriction));
        }
示例#22
0
        public IEnumerable <Device> QueryDevices(Guid nodeID, string sortField, bool ascending, int page, int pageSize, string filterText)
        {
            TableOperations <Device> deviceTable = DataContext.Table <Device>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0}", nodeID) +
                deviceTable.GetSearchRestriction(filterText);

            return(deviceTable.QueryRecords(sortField, ascending, page, pageSize, restriction));
        }
        private string GetHeaders(DataContext dataContext, IEnumerable <int> pointIDs)
        {
            object[]          parameters = pointIDs.Cast <object>().ToArray();
            string            parameterizedQueryString = $"PointID IN ({string.Join(",", parameters.Select((parameter, index) => $"{{{index}}}"))})";
            RecordRestriction pointIDRestriction       = new RecordRestriction(parameterizedQueryString, parameters);

            return("\"Timestamp\"," + string.Join(",", dataContext.Table <Measurement>().
                                                  QueryRecords(restriction: pointIDRestriction).
                                                  Select(measurement => $"\"[{measurement.PointID}] {measurement.PointTag}\"")));
        }
示例#24
0
        public int QueryDeviceCount(Guid nodeID, string filterText)
        {
            TableOperations <Device> deviceTable = DataContext.Table <Device>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0}", nodeID) +
                deviceTable.GetSearchRestriction(filterText);

            return(deviceTable.QueryRecordCount(restriction));
        }
示例#25
0
        public IEnumerable <Device> QueryEnabledDevices(Guid nodeID, int limit, string filterText)
        {
            TableOperations <Device> deviceTable = DataContext.Table <Device>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0} AND NOT (ProtocolID = {1} AND AccessID = {2})", nodeID, VirtualProtocolID, DeviceGroup.DefaultAccessID) +
                new RecordRestriction("Enabled <> 0") +
                deviceTable.GetSearchRestriction(filterText);

            return(deviceTable.QueryRecords("Acronym", restriction, limit));
        }
示例#26
0
        public IEnumerable <Device> QueryEnabledDevices(Guid nodeID, int limit, string filterText)
        {
            TableOperations <Device> deviceTable = DataContext.Table <Device>();

            RecordRestriction restriction =
                new RecordRestriction("NodeID = {0}", nodeID) +
                new RecordRestriction("Enabled <> 0") +
                deviceTable.GetSearchRestriction(filterText);

            return(deviceTable.QueryRecords("Acronym", restriction, limit));
        }
        public void DeleteMeasurement(long id)
        {
            long pointID = id;

            using (AdoDataConnection connection = CreateDbConnection())
            {
                TableOperations <ImportedMeasurement> importedMeasurementTable = new TableOperations <ImportedMeasurement>(connection);

                RecordRestriction recordRestriction =
                    new RecordRestriction("NodeID = {0}", NodeID) &
                    new RecordRestriction("Source = {0}", Source) &
                    new RecordRestriction("PointID = {0}", pointID);

                importedMeasurementTable.DeleteRecord(recordRestriction);
            }
        }
        private RecordRestriction GetRecordRestriction(int meterID, int phaseID, string type)
        {
            RecordRestriction recordRestriction  = new RecordRestriction("MeasurementTypeID = (SELECT ID FROM MeasurementType WHERE Name = 'Voltage') AND MeterID = {0} AND PhaseID = {1}", meterID, phaseID);
            RecordRestriction recordRestriction2 = null;

            switch (type)
            {
            case "Interharmonic": recordRestriction2 = new RecordRestriction("Name LIKE '%Interharmonic%'"); break;

            case "HighResolution": recordRestriction2 = new RecordRestriction("Name LIKE '%khz'"); break;

            case "LowResolution": recordRestriction2 = new RecordRestriction("Name LIKE '%Bin%'"); break;

            default: recordRestriction2 = new RecordRestriction("Name LIKE '% Harmonic%' AND HarmonicGroup != 1"); break;
            }

            return(recordRestriction + recordRestriction2);
        }
        private IEnumerable <ImportedMeasurement> QueryImportedMeasurements(RecordRestriction recordRestriction = null)
        {
            using (AdoDataConnection connection = CreateDbConnection())
            {
                TableOperations <ImportedMeasurement> importedMeasurementTable = new TableOperations <ImportedMeasurement>(connection);

                RecordRestriction queryRestriction =
                    new RecordRestriction("NodeID = {0}", NodeID) &
                    new RecordRestriction("Source = {0}", Source);

                if ((object)recordRestriction != null)
                {
                    queryRestriction &= recordRestriction;
                }

                return(importedMeasurementTable.QueryRecords(queryRestriction));
            }
        }
示例#30
0
        private static void GenerateEmail(LineEvent lineEvent)
        {
            using (AdoDataConnection connection = s_connectionFactory())
            {
                TableOperations <Event> eventTable = new TableOperations <Event>(connection);

                object startTime2 = ToDateTime2(connection, lineEvent.TimeRange.Start);
                object endTime2   = ToDateTime2(connection, lineEvent.TimeRange.End);

                RecordRestriction recordRestriction =
                    new RecordRestriction("LineID = {0}", lineEvent.LineID) &
                    new RecordRestriction("StartTime >= {0}", startTime2) &
                    new RecordRestriction("EndTime <= {0}", endTime2);

                Event evt = eventTable.QueryRecord(recordRestriction);

                GenerateEmail(connection, evt.ID);
            }
        }