public async Task <IActionResult> HandleMonitorRecord([FromBody] MonitorRecord monitorRecord) { HotelKey hotelKey = ParseHotelKeyFromClaims(User); MonitorKey monitorKey = new MonitorKey { HotelChain = hotelKey.HotelChain, CountryCode = hotelKey.CountryCode, Town = hotelKey.Town, Suburb = hotelKey.Suburb, MACAddress = monitorRecord.MACAddress }; monitorRecord.Logs.ForEach(async log => { try { await _monitorStore.AddMonitorLogAsync( hotelKey, monitorRecord.MACAddress, log); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } Console.WriteLine(errorMessages.ToString()); } }); MonitorRoom monitorRoom = await _monitorStore.FindMonitorRoomDetailsAsync(monitorKey); if (monitorRoom != null) { monitorRecord.Readings.ForEach(async reading => { try { await _monitorStore.AddMonitorReadingAsync( monitorRoom, reading); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } Console.WriteLine(errorMessages.ToString()); } }); } return(StatusCode(StatusCodes.Status201Created)); }