public DriverSummary SaveDriverSummary(DriverSummary driverSummary) { try { using (var hosDbContext = new HosDBContext(_connectionString)) { var tempDriverSummary = hosDbContext.DriverSummaries.FirstOrDefault( ds => ds.DriverId == driverSummary.DriverId && ds.WorkStateId == driverSummary.WorkStateId); if (tempDriverSummary == null) { hosDbContext.DriverSummaries.Add(driverSummary); } else { tempDriverSummary.TotalSeconds = driverSummary.TotalSeconds; } hosDbContext.SaveChanges(); } return(driverSummary); } catch (Exception exception) { throw exception; } }
private void sbqReceiver_OnMessageRecevied(BrokeredMessage brokeredMessage) { try { // Process the message Trace.WriteLine("Processing Service Bus message: " + brokeredMessage.SequenceNumber); var driverWorkstate = JsonConvert.DeserializeObject <DriverWorkstate>(brokeredMessage.GetBody <string>()); var driverSummary = _hosRepository.FindDriverSummary(driverWorkstate.DriverId, driverWorkstate.WorkStateId); if (driverSummary == null) { driverSummary = new DriverSummary { DriverId = driverWorkstate.DriverId, WorkStateId = driverWorkstate.WorkStateId, TotalSeconds = 0 }; } else { var lastDriverWorkstate = _hosRepository.LastDriverWorkStateBefore(driverWorkstate.DriverId, driverWorkstate.WorkStateId, driverWorkstate.Timestamp); if (lastDriverWorkstate != null) { driverSummary.TotalSeconds += (long)(driverWorkstate.Timestamp - lastDriverWorkstate.Timestamp).TotalSeconds; } } _hosRepository.SaveDriverSummary(driverSummary); Thread.Sleep(int.Parse(CloudConfigurationManager.GetSetting("ProcessingDelay"))); brokeredMessage.Complete(); } catch (Exception exception) { brokeredMessage.DeadLetter(); } }