Example #1
0
      private void _processActivityRecords(SqlConnection conn, string activityId) {
         string queryString =
            " SELECT V.ActivityId, V.VehicleKey, V.DriverId, V.BatteryKey, V.Odometer, V.Bat_Energy," +
            "        V.Seg_Curvature, V.Seg_Length, V.Seg_Slope, V.DrivingSegmentIndex, V.DrvEst_Eea, V.TimeStamp," +
            "        (SELECT TOP(1) ISNULL(CAST(S.Eta AS VARCHAR(50)),'') + ';' + ISNULL(CAST(S.Eea AS VARCHAR(32)),'') + ';' + ISNULL(CAST(S.Dta AS VARCHAR(32)),'')" +
            "        FROM dbo.T_TELEMETRY_DRIVING_STEPS AS S" +
            "        WHERE V.TelemetryId = S.TelemetryId" +
            "        ORDER BY S.Eta) AS EndEstimations" +       
            " FROM dbo.T_TELEMETRY_VEHICLE AS V" +
            " WHERE V.ActivityId = '" + activityId + "'" +
            " AND V.IsManaged = 1 AND (V.RecordType = " + (int)TelemetryRecordType.DrivingPlanChanged +
            " OR V.RecordType = " + (int)TelemetryRecordType.DrivingRoadSegmentPassed + ")" +
            " ORDER BY V.RecordNo;";

         var command = new SqlCommand(queryString, conn);
         var reader = command.ExecuteReader();
         var counter = 0;
         var lastIndex = -1;
         TrackInfo trackInfo = null;
         DbRecord lastRecord = null;

         try {
            var record = new DbRecord(reader);
            while (reader.Read()) {
               record.Fetch(reader);
               var currIndex = record.GetInt("DrivingSegmentIndex");

               if (currIndex == lastIndex) continue;
               if (currIndex < lastIndex) {
                  _finalizeTrackInfo(trackInfo,lastRecord,counter);
                  _trackList.Add(trackInfo);
                  trackInfo = _initializeTrackInfo(record);
                  counter = 1;
               } else {
                  if (lastIndex == -1) trackInfo = _initializeTrackInfo(record);
                  lastRecord = record.Clone();
                  counter++;
               }

               lastIndex = currIndex;
               _aggregateTrackInfo(trackInfo, record);
            }
         } finally {
            // Always call Close when done reading.
            reader.Close();
         }
      }