public ActionResult Edit(SensorEditViewModel sensorEditViewModel)
        {
            if (ModelState.IsValid)
            {
                var editModel = this.Data.Sensors.All()
                .Where(s => s.Id == sensorEditViewModel.Id)
                .Select(s => new
                {
                    Sensor = s,
                    ReceiverIp = s.Room.Floor.House.ReceiverIp,
                }).SingleOrDefault();
                if (editModel == null)
                {
                    return HttpNotFound();
                }
                editModel.Sensor.AlarmCheck = sensorEditViewModel.AlarmCheck;
                editModel.Sensor.MaxTempAlert = sensorEditViewModel.MaxTempAlert;
                editModel.Sensor.MinTempAlert = sensorEditViewModel.MinTempAlert;
                editModel.Sensor.AttachedPin = sensorEditViewModel.AttachedPin;

                SensorRCModel sensorRCModel = new SensorRCModel
                {
                    ReceiverIp = editModel.ReceiverIp,
                    Id = editModel.Sensor.ArduinoArraySensorsId,
                    AttachedPin = sensorEditViewModel.AttachedPin,
                    AlarmCheck = sensorEditViewModel.AlarmCheck,
                    MinTempAlert = sensorEditViewModel.MinTempAlert,
                    MaxTempAlert = sensorEditViewModel.MaxTempAlert,
                };

                using (TransactionScope transaction = new TransactionScope())
                {
                    this.Data.Sensors.Update(editModel.Sensor);
                    this.Data.SaveChanges();

                    this.RemoteControl.SendSensorSettings(sensorRCModel);
                    transaction.Complete();
                }

                return RedirectToAction("RoomDetails", "Rooms", new { RoomId = sensorEditViewModel.RoomId });
            }
            int houseId = this.Data.Rooms.All()
               .Where(r => r.Id == sensorEditViewModel.RoomId)
               .Select(s => s.Floor.HouseId).SingleOrDefault();
            var allowedPin = HelperClass.GetAllowedPins(this.Data, houseId, null);
            sensorEditViewModel.AllowedPins = new SelectList(allowedPin);
            return View(sensorEditViewModel);
        }
 public ActionResult Edit(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     var sensor = this.Data.Sensors.All()
         .Where(s => s.Id == id.Value)
         .Select(s => new
        {
            Id = s.Id,
            AlarmCheck = s.AlarmCheck,
            AttachedPin = s.AttachedPin,
            MaxTempAlert = s.MaxTempAlert,
            MinTempAlert = s.MinTempAlert,
            RoomId = s.RoomId,
            HouseId = s.Room.Floor.HouseId
        }).SingleOrDefault();
     if (sensor == null)
     {
         return HttpNotFound();
     }
     var allowedPin = HelperClass.GetAllowedPins(this.Data, sensor.HouseId, sensor.AttachedPin);
     SensorEditViewModel sensorEditViewModel = new SensorEditViewModel
     {
         AlarmCheck = sensor.AlarmCheck,
         AttachedPin = sensor.AttachedPin,
         Id = sensor.Id,
         MaxTempAlert = sensor.MaxTempAlert,
         MinTempAlert = sensor.MinTempAlert,
         RoomId = sensor.RoomId,
         AllowedPins = new SelectList(allowedPin, sensor.AttachedPin)
     };
     return View(sensorEditViewModel);
 }