/// <summary> /// Deserializes the <see cref="FeedingTimes"/> /// </summary> /// <param name="xmlData"></param> /// <returns></returns> public FeedingTimes DeSerializeFeedingTimes(string xmlData) { FeedingTimes feedingTimes = new FeedingTimes(); if (!string.IsNullOrEmpty(xmlData)) { XmlDocument document = new XmlDocument(); document.SecureLoadXml(xmlData); XmlNode rootNode = document.SelectSingleNode(FEEDING_TIME_START_ELM); XmlNode pinchNode = rootNode.SelectSingleNode(FEEDING_TIME_PINCH_START_ELM); int pinches = 1; int.TryParse(pinchNode.InnerXml, out pinches); feedingTimes.Pinches = pinches; for (int x = 1; x <= rootNode.ChildNodes.Count - 1; x++) { XmlNode test = rootNode.SelectSingleNode($"{FEEDING_TIME}{x}"); feedingTimes.Feedings.Add(GetDateTime(rootNode.SelectSingleNode($"{FEEDING_TIME}{x}").FirstChild?.Value)); } } return(feedingTimes); }
public IActionResult FeedingTimes(FeedingTimes feedingTimes) { if (ModelState.IsValid) { _formDataService.SetFeedingTimes(feedingTimes); _aquaPinController.UpdateFeedingTimes(feedingTimes.Feedings, feedingTimes.Pinches); return(RedirectToAction("Index", nameof(HomeController).RemoveControllerFromName())); } return(View(feedingTimes)); }
/// <summary> /// Sets the feeding times /// </summary> /// <returns></returns> public void SetFeedingTimes(FeedingTimes feedingTimes) { using (XmlTextWriter xmlWriter = new XmlTextWriter(FEEDING_TIMES_FILE, Encoding.UTF8)) { xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement(FEEDING_TIME_START_ELM); xmlWriter.WriteElementString(FEEDING_TIME_PINCH_START_ELM, feedingTimes.Pinches.ToString()); for (int x = 0; x < feedingTimes.Feedings.Count; x++) { xmlWriter.WriteElementString($"{FEEDING_TIME}{x + 1}", feedingTimes.Feedings[x].ToString()); } xmlWriter.WriteEndElement(); xmlWriter.WriteEndDocument(); xmlWriter.Close(); } }
public void FormDataService_DeSerializeFeedingTimes_Deserializes() { double expectedPinches = 3; List <DateTime> expectedTimes = new List <DateTime>(); expectedTimes.Add(new DateTime(2018, 10, 10, 1, 0, 0)); expectedTimes.Add(new DateTime(2018, 10, 10, 14, 1, 0)); expectedTimes.Add(new DateTime(2018, 10, 10, 17, 0, 0)); expectedTimes.Add(new DateTime(2018, 10, 10, 2, 0, 0)); expectedTimes.Add(new DateTime(2018, 10, 10, 11, 0, 0)); FormDataService formDataService = new FormDataService(); FeedingTimes feedingTimes = formDataService.DeSerializeFeedingTimes(feedingXML); Assert.AreEqual(expectedPinches, feedingTimes.Pinches); CollectionAssert.AreEqual(expectedTimes, feedingTimes.Feedings, $"feeding times are not the same"); }
/// <summary> /// Gets the feeding times /// </summary> /// <returns></returns> public FeedingTimes GetFeedingTimes() { FeedingTimes feedingTimes; try { string feedingTimesXml = FEEDING_TIMES_FILE; feedingTimesXml = GetXmlFromFile(feedingTimesXml); feedingTimes = DeSerializeFeedingTimes(feedingTimesXml); } catch (Exception exp) { Console.WriteLine(exp.Message); feedingTimes = new FeedingTimes(); } return(feedingTimes); }
/// <summary> /// Creates a new <see cref="Startup"/> object /// </summary> /// <param name="env"></param> public Startup(IHostingEnvironment env) { IConfigurationBuilder builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); _formDataService = new FormDataService(); FeedingTimes feedingTimes = _formDataService.GetFeedingTimes(); _pinController = new AquaPinController(feedingTimes.Feedings, feedingTimes.Pinches); TankSpecs tankSpecs = _formDataService.GetTankSpecs(); _i2CController = new AquaI2CController(tankSpecs.Width, tankSpecs.Height, tankSpecs.Depth); _pinMasterController = new PinMasterController(_i2CController, _pinController, tankSpecs.WaterChangeTime); }
// GET: /<controller>/ /// <summary> /// Gets the <see cref="FeedingTimes"/> model for the feeding view /// </summary> /// <returns></returns> public IActionResult FeedingTimes() { FeedingTimes feedingTimes = _formDataService.GetFeedingTimes(); return(View(feedingTimes)); }