public async Task <IActionResult> SaveEvent([FromRoute] string id, [FromBody] RecyclingProcess data)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                using (DbWaterRecyclingContext db = new DbWaterRecyclingContext())
                {
                    var device = db.Devices.Where(i => i.Code == id).FirstOrDefault();
                    data.From = device ?? throw new ArgumentNullException("id", "Dispositivo no identificado");

                    data.CaptureDate = DateTime.Now;

                    data.Process = !string.IsNullOrEmpty(data.Process) ? data.Process : GetnewProcess(device);

                    var result = await db.AddAsync(data);

                    await db.SaveChangesAsync();

                    return(Ok(data.Process));
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError,
                                  ex));
            }
        }
        public IActionResult SimulateEvent([FromRoute] string id, [FromBody] RecyclingProcess data)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                using (DbWaterRecyclingContext db = new DbWaterRecyclingContext())
                {
                    var device  = db.Devices.Where(i => i.Code == id).FirstOrDefault();
                    var from    = device ?? throw new ArgumentNullException("id", "Dispositivo no identificado");
                    var process = !string.IsNullOrEmpty(data.Process) ? data.Process : GetnewProcess(device);


                    for (int i = 0; i < data.Distance; i++)
                    {
                        int milliseconds = 2000;
                        Thread.Sleep(milliseconds);

                        data.Distance = data.Distance - 1;
                        if (data.Distance <= 2)
                        {
                            break;
                        }
                        db.Add(new RecyclingProcess
                        {
                            From        = from,
                            CaptureDate = DateTime.Now,
                            Process     = process,
                            Distance    = data.Distance,
                            Turbidity   = data.Turbidity,
                        });
                        db.SaveChanges();
                    }

                    return(Ok(process));
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError,
                                  ex));
            }
        }
 private static void SaveEvent(RecyclingProcess data, Device from, string process)
 {
     using (DbWaterRecyclingContext db = new DbWaterRecyclingContext())
     {
     }
 }