Пример #1
0
        /// <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);
        }
Пример #2
0
 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));
 }
Пример #3
0
        /// <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");
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        // 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));
        }