Exemplo n.º 1
0
 public void RateItemConstructor_Null_ThrowException()
 {
     // Arrange
     // Act
     _ = new RateItem(null);
     // Assert
 }
Exemplo n.º 2
0
        public async Task <IActionResult> SetRate(string studentId, int subjectId, int value)
        {
            var rate    = dbContext.Rates.FirstOrDefault(r => r.StudentId == studentId && r.SubjectId == subjectId);
            var teacher = await userManager.GetUserAsync(HttpContext.User);

            var student = dbContext.Users.Include(u => u.Claims).Single(u => u.Id == studentId);
            var subject = dbContext.Subjects.Single(s => s.Id == subjectId);

            if (rate == null)
            {
                rate = new StudentRate()
                {
                    StudentId = studentId, SubjectId = subjectId, Value = value, Date = DateTime.Now
                };
                rate.TeacherId = teacher.Id;
                dbContext.Add(rate);
            }
            else
            {
                rate.Value = value; rate.TeacherId = teacher.Id;
            }
            var rateItem = new RateItem()
            {
                Type = LogItemType.Rate, DateTime = DateTime.Now, Teacher = teacher.Name, Student = student.Name, Rate = value, Subject = subject.Name
            };

            dbContext.LogItems.Add(rateItem);
            dbContext.SaveChanges();
            return(Ok());
        }
Exemplo n.º 3
0
        public void RateItemConstructor_EmptyString_InitedByZero()
        {
            // Arrange
            var expectedNumber    = 0;
            var expectedTextValue = "0 / 0";
            // Act
            RateItem item = new RateItem("");

            // Assert
            Assert.AreEqual(expectedNumber, item.AverageRate);
            Assert.AreEqual(expectedNumber, item.PeopleVoted);
            Assert.AreEqual(expectedTextValue, item.ToString());
        }
Exemplo n.º 4
0
 private async Task CacheRateAsync(RateItem itemToCache)
 {
     await Task.Run(() =>
     {
         XmlSerializer formatter = new XmlSerializer(typeof(RateItem));
         var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), $"{itemToCache.CurrencyFrom}_{itemToCache.CurrencyTo}.xml");
         using (var writer = new StreamWriter(path))
         {
             itemToCache.LastCached = DateTime.Now;
             formatter.Serialize(writer, itemToCache);
         }
     });
 }
Exemplo n.º 5
0
        public ActionResult Rate()
        {
            var xDoc = new XmlDocument();

            xDoc.Load("http://www.sjc.com.vn/xml/tygiavang.xml");
            // lấy ngày cập nhật
            var nodeDateTime = xDoc.GetElementsByTagName("ratelist");
            var model        = new ModelRateCityItem();

            foreach (XmlNode item in nodeDateTime)
            {
                if (item.Attributes == null)
                {
                    continue;
                }
                model.DateUpdated = item.Attributes["updated"].Value;
            }
            // lấy giá vàng của các tỉnh thành
            var listNodes   = xDoc.GetElementsByTagName("city");
            var lstRateCity = new List <RateCityItem>();

            foreach (XmlNode item in listNodes)
            {
                var lstRate      = new List <RateItem>();
                var rateCityItem = new RateCityItem();
                for (var i = 0; i < item.ChildNodes.Count; i++)
                {
                    var attributes = item.ChildNodes[i].Attributes;
                    if (attributes == null)
                    {
                        continue;
                    }
                    var rate = new RateItem
                    {
                        Buy  = attributes["buy"].Value,
                        Sell = attributes["sell"].Value,
                        Type = attributes["type"].Value
                    };
                    lstRate.Add(rate);
                }
                if (item.Attributes == null)
                {
                    continue;
                }
                rateCityItem.CityName     = item.Attributes["name"].Value;
                rateCityItem.ListRateItem = lstRate;
                lstRateCity.Add(rateCityItem);
            }
            model.ListRateCityItem = lstRateCity;
            return(View(model));
        }
Exemplo n.º 6
0
        public void RateItemConstructor_StringByTemplate_InitedRight()
        {
            // Arrange
            var expectedRate      = 4.26;
            var expectedCount     = 50;
            var expectedTextValue = $"{expectedRate} / {expectedCount}";
            // Act
            RateItem item = new RateItem("     средняя 4.26, голосов 50");

            // Assert
            Assert.AreEqual(expectedRate, item.AverageRate);
            Assert.AreEqual(expectedCount, item.PeopleVoted);
            Assert.AreEqual(expectedTextValue, item.ToString());
        }
Exemplo n.º 7
0
        public IActionResult Create([FromBody] RateItem item)
        {
            if (item == null)
            {
                return(BadRequest());
            }
            if (ModelState.IsValid)
            {
                _context.AddRateItem(item);

                return(CreatedAtRoute("GetRate", new { id = item.Id }, item));
            }
            return(BadRequest(ModelState));
        }
Exemplo n.º 8
0
        public List <RateItem> getRate()
        {
            try
            {
                List <RateItem> RateList = new List <RateItem>();

                //指定來源網頁
                WebClient url = new WebClient();
                //將網頁來源資料暫存到記憶體內
                MemoryStream ms = new MemoryStream(url.DownloadData("http://www.cnyes.com/CentralBank/interest1.aspx?type=all"));
                //以台灣銀行為範例

                // 使用預設編碼讀入 HTML
                HtmlDocument doc = new HtmlDocument();
                doc.Load(ms, Encoding.UTF8);
                HtmlNode tempNode;
                string[] RateOrder = new string[] { "1", "2", "3", "6", "7", "13", "15", "16", "17", "18", "19", "23" };

                tempNode = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[6]/div[1]/div[1]/div[2]/div[2]/table[1]");

                // 取得匯率
                for (int num = 0; num < RateOrder.Count(); num++)
                {
                    RateItem Rate = new RateItem();

                    Rate.Country   = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[1]").InnerText;
                    Rate.RateName  = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[2]").InnerText;
                    Rate.Rate      = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[3]").InnerText;
                    Rate.LastRate  = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[6]").InnerText;
                    Rate.point     = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[4]").InnerText;
                    Rate.pubDate   = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[5]").InnerText;
                    Rate.Inflation = tempNode.SelectSingleNode(@"tr[" + RateOrder[num] + "]/td[7]").InnerText;

                    RateList.Add(Rate);
                }

                //清除資料
                doc = null;
                url = null;
                ms.Close();

                return(RateList);
            }
            catch (System.IO.IOException e)
            {
                logger.Error(LogUtility.GetExceptionDetails(e));
                return(null);
            }
        }
Exemplo n.º 9
0
        public static void Initialize(RatesContext context)
        {
            if (context.RateItems.Any())
            {
                //Data already populated
                return;
            }

            var rateItems = new RateItem[]
            {
                new RateItem
                {
                    Days  = "mon,tues,thurs",
                    Times = "0900-2100",
                    Price = 1500
                },
                new RateItem
                {
                    Days  = "fri,sat,sun",
                    Times = "0900-2100",
                    Price = 2000
                },
                new RateItem
                {
                    Days  = "wed",
                    Times = "0600-1800",
                    Price = 1750
                },
                new RateItem
                {
                    Days  = "mon,wed,sat",
                    Times = "0100-0500",
                    Price = 1000
                },
                new RateItem
                {
                    Days  = "sun,tues",
                    Times = "0100-0700",
                    Price = 925
                }
            };

            foreach (var rateItem in rateItems)
            {
                context.AddRateItem(rateItem);
            }
        }
Exemplo n.º 10
0
        private async Task <RateItem> GetCachedRateAsync(string convertFrom, string convertTo)
        {
            RateItem item = new RateItem()
            {
                CurrencyFrom = convertFrom, CurrencyTo = convertTo, LastCached = DateTime.MinValue
            };
            await Task.Run(() =>
            {
                XmlSerializer formatter = new XmlSerializer(typeof(RateItem));
                var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), $"{convertFrom}_{convertTo}.xml");
                if (File.Exists(path))
                {
                    using (var sr = new StreamReader(path))
                    {
                        item = (RateItem)formatter.Deserialize(sr);
                    }
                }
            });

            return(item);
        }
Exemplo n.º 11
0
        public IActionResult Update(long id, [FromBody] RateItem item)
        {
            if (item == null || item.Id != id)
            {
                return(BadRequest());
            }

            var rate = _context.RateItems.Find(id);

            if (rate == null)
            {
                return(NotFound());
            }

            rate.Days  = item.Days;
            rate.Times = item.Times;
            rate.Price = item.Price;

            _context.RateItems.Update(rate);
            _context.SaveChanges();
            return(NoContent());
        }