Пример #1
0
        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;
            }
        }
Пример #2
0
        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();
            }
        }