public SensorEvent AddOrUpdate(SensorEventPOST viewModel) { //try to get an existing meter, by looking in a local cache first var meteredSpace = _meteredSpacesService.Get(viewModel.MeteredSpace.MeterID); if (meteredSpace == null) { //record this meter in the db meteredSpace = _meteredSpacesService.AddOrUpdate(viewModel.MeteredSpace); } var posted = new SensorEvent() { ClientId = viewModel.ClientID, EventTime = DateTime.Parse(viewModel.EventTime), EventType = viewModel.EventType, MeteredSpace = meteredSpace, ReceivedTime = _clock.UtcNow, SessionId = long.Parse(viewModel.MeteredSpace.SessionID), TransmissionId = long.Parse(viewModel.TransmissionID), TransmissionTime = DateTime.Parse(viewModel.TransmissionDateTime) }; var existing = _sensorEventsRepo.Get(x => x.TransmissionId == posted.TransmissionId); if (existing == null) { _sensorEventsRepo.Create(posted); } else { posted.Id = existing.Id; _sensorEventsRepo.Update(posted); } return posted; }
public SensorEventGET GetViewModel(SensorEvent entity) { return new SensorEventGET() { EventId = entity.TransmissionId, EventTime = entity.EventTime, EventType = entity.EventType, MeterId = entity.MeteredSpace.MeterId, SessionId = entity.SessionId, Ordinal = entity.Id, }; }