private void StoreRoboConfig(RoboConfig config) { db.RoboConfig.RemoveRange(db.RoboConfig); db.SaveChanges(); db.RoboConfig.Add(config); db.SaveChanges(); }
public async Task <ActionResponseMessage> SetRoboConfigAsync(string robotName, string robotSerial, string email, string password, string ipOverride = null) { try { var roboConfig = new RoboConfig() { RobotName = robotName, RobotSerial = robotSerial, Email = email, Password = password, IpOverrideStr = string.IsNullOrWhiteSpace(ipOverride) ? ipOverride : null }; StoreRoboConfig(roboConfig); // store an early version with entered details // validations var validations = new List <string>(); if (!Authentication.SerialNumberIsValid(robotSerial)) { validations.Add("Serial number invalid."); } if (!Authentication.RobotNameIsValid(robotName)) { validations.Add("Robot name invalid."); } if (validations.Count > 0) { return(ActionResponseMessage.Failure(validations)); } IPAddress ipAddressOverride = null; if (!string.IsNullOrWhiteSpace(ipOverride)) { IPAddress.TryParse(ipOverride, out ipAddressOverride); } var loginResult = await Authentication.Login(robotSerial, robotName, email, password, ipAddressOverride); roboConfig.RobotName = loginResult.RobotName; roboConfig.RobotGuid = loginResult.Guid; roboConfig.RobotCert = loginResult.Certificate; roboConfig.IpOverrideStr = ipAddressOverride?.ToString(); StoreRoboConfig(roboConfig); // store final version with cert and guid // if all else has succeeded, now reconnect to the robot return(await ReconnectAsync()); } catch (VectorAuthenticationException ex) { return(ActionResponseMessage.Failure(ex)); } }