public IActionResult UpdateForm(IFormCollection formCollection) { var sensorID = int.Parse(formCollection["SensorID"].FirstOrDefault()); var sensorType = formCollection["SensorType"].FirstOrDefault(); ISensor sensor = null; var type = SailbotContext.GetSensorType(sensorType); switch (sensorType) { case "Wind": sensor = new SensorManager <Wind>(context).GetSensor(sensorID); break; case "WinchMotor": sensor = new SensorManager <WinchMotor>(context).GetSensor(sensorID); break; case "RudderMotor": sensor = new SensorManager <RudderMotor>(context).GetSensor(sensorID); break; case "GPS": sensor = new SensorManager <GPS>(context).GetSensor(sensorID); break; case "BoomAngle": sensor = new SensorManager <BoomAngle>(context).GetSensor(sensorID); break; case "BMS": sensor = new SensorManager <BMS>(context).GetSensor(sensorID); break; case "Accelerometer": sensor = new SensorManager <Accelerometer>(context).GetSensor(sensorID); break; default: break; } var modifiableColumnManager = new ModifiableColumnManager(context); var columns = modifiableColumnManager.GetModifiableColumns(sensorType); foreach (var column in columns) { var newValue = formCollection[column].FirstOrDefault(); var property = type.GetProperty(column); property.SetValue(sensor, Convert.ChangeType(newValue, property.PropertyType), null); } context.SaveChanges(); return(RedirectToAction("Sensor", new { type = sensorType })); }
public IActionResult GetUpdateForm(string type, int sensorID) { var modifiableColumnManager = new ModifiableColumnManager(context); ISensor sensor = null; switch (type) { case "Wind": sensor = new SensorManager <Wind>(context).GetSensor(sensorID); break; case "WinchMotor": sensor = new SensorManager <WinchMotor>(context).GetSensor(sensorID); break; case "RudderMotor": sensor = new SensorManager <RudderMotor>(context).GetSensor(sensorID); break; case "GPS": sensor = new SensorManager <GPS>(context).GetSensor(sensorID); break; case "BoomAngle": sensor = new SensorManager <BoomAngle>(context).GetSensor(sensorID); break; case "BMS": sensor = new SensorManager <BMS>(context).GetSensor(sensorID); break; case "Accelerometer": sensor = new SensorManager <Accelerometer>(context).GetSensor(sensorID); break; default: break; } var model = new SensorFormViewModel { Sensor = sensor, Type = SailbotContext.GetSensorType(type), Columns = modifiableColumnManager.GetModifiableColumns(type) }; return(PartialView("../Boat/SensorDetail/SensorUpdate", model)); }