Esempio n. 1
0
        /// <summary>
        /// セール期間を判別してセットする
        /// </summary>
        /// <param name="saleInformation"></param>
        /// <param name="count">現在何件目のセール情報</param>
        /// <param name="total">セール情報のトータル</param>
        void CheckSalePeriod(SaleInformation saleInformation, int count, int total)
        {
            if (saleInformation.Error == true)
            {
                return;
            }

            // タイトルから終了日を判別
            saleInformation.SetSalePeriod(DateTime.Now, null, ExtractEndDate(saleInformation.Name), count, total);
            if (saleInformation.EndDate != null)
            {
                if (saleInformation.EndDate < DateTime.Now)
                {
                    saleInformation.SaleFinished = true;
                }
                else
                {
                    saleInformation.SaleStarted = true;
                }
                return;
            }

            // セールページをスクレイピングしてセール期間を判別
            using (var stream = client.GetStreamAsync(GetAssociateLinkByBrowseNode(saleInformation.NodeId)).Result)
            {
                (var startDate, var endDate) = ExtractSalePeriod(saleInformation, stream);
                saleInformation.SetSalePeriod(DateTime.Now, startDate, endDate, count, total);
            }

            if (saleInformation.StartDate != null && saleInformation.EndDate != null)
            {
                if (saleInformation.EndDate < DateTime.Now)
                {
                    saleInformation.SaleFinished = true;
                }
                else if (saleInformation.StartDate < DateTime.Now)
                {
                    saleInformation.SaleStarted  = true;
                    saleInformation.SaleFinished = false;
                }
                return;
            }

            // ここまできたら、セールページは存在するが、タイトルからもセールページからもセール期間が判別できないので、
            // 何も処理しない
        }
Esempio n. 2
0
        public void SetSalePeriodTest(int nowYear, int nowMonth, int nowDay, string startDate, string endDate, int count, int total, string expectedStartDate, string expectedEndDate)
        {
            var saleInformation = new SaleInformation();

            DateTime now = new DateTime(nowYear, nowMonth, nowDay);

            saleInformation.SetSalePeriod(now, startDate, endDate, count, total);
            Assert.Equal(expectedStartDate, saleInformation.StartDate.ToString("yyyy/MM/dd"));
            Assert.Equal(expectedEndDate, saleInformation.EndDate.ToString("yyyy/MM/dd"));
        }