Exemplo n.º 1
0
        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));
        }