Пример #1
0
        /// <summary>
        /// Modify a promotion blackout date
        /// </summary>
        /// <param name="blackoutDate">The blackout date to modify</param>
        private void ModifyBlackoutDate(PromotionBlackoutDate blackoutDate)
        {
            const string sqlStatement = @"                    
                        UPDATE Pricing.PromotionBlackoutDates
                        SET    StartDate = @StartDate,
                               EndDate = @EndDate
                        WHERE  Id = @Id";

            var parameters = new List<SqlParameter>
            {
                DbHelper.CreateParameter(BlackoutDateParameters.Id, blackoutDate.Id),
                DbHelper.CreateParameter(BlackoutDateParameters.StartDate, blackoutDate.StartDate),
                DbHelper.CreateParameter(BlackoutDateParameters.EndDate, blackoutDate.EndDate)
            };

            DbHelper.ExecuteNonQueryCommand(sqlStatement, parameters: parameters);
        }
Пример #2
0
        public void GivenTheBlackoutDatesAreTheFollowing(Table blackouts)
        {
            foreach (TableRow row in blackouts.Rows)
            {
                PromotionBlackoutDate blackout = new PromotionBlackoutDate();
                string promotionName = string.Empty;
                bool promotionStartDateBased = false;
                int startNum = 0;
                int endNum = 0;

                foreach (string key in row.Keys)
                {
                    int numDays = 0;
                    var data = row[key];
                    switch (key)
                    {
                        case "startDay":
                            if (Int32.TryParse(data, out numDays))
                            {
                                blackout.StartDate = DateTime.UtcNow.Date.AddDays(numDays);
                            }
                            // promotion start date based
                            else if (
                                data.IndexOf(PROMOTION_START_DATE, 0, StringComparison.InvariantCultureIgnoreCase) >=
                                0)
                            {
                                promotionStartDateBased = true;
                                data = data.Replace(PROMOTION_START_DATE, "").Trim();
                                Int32.TryParse(data, out startNum);
                            }
                            else
                            {
                                DateTime? date = GetDateFromText(data);
                                if (date != null)
                                {
                                    blackout.StartDate = date.Value;
                                }
                            }
                            break;
                        case "endDay":
                            if (Int32.TryParse(data, out numDays))
                            {
                                blackout.EndDate = DateTime.UtcNow.Date.AddDays(numDays);
                            }
                            // promotion start date based
                            else if (data.IndexOf(PROMOTION_START_DATE, 0, StringComparison.InvariantCultureIgnoreCase) >= 0)
                            {
                                promotionStartDateBased = true;
                                data = data.Replace(PROMOTION_START_DATE, "").Trim();
                                Int32.TryParse(data, out endNum);
                            }
                            else
                            {
                                DateTime? date = GetDateFromText(data);
                                if (date != null)
                                {
                                    blackout.EndDate = date.Value;
                                }
                            }
                            break;
                        case "promotion":
                            promotionName = row[key];
                            break;
                    }
                }
                
                promotionsAvailable.ForEach(p =>
                {
                    if (string.IsNullOrWhiteSpace(promotionName) ||
                        p.Name.ToUpper() == promotionName.ToUpper())
                    {
                        if (promotionStartDateBased)
                        {
                            if (p.StayStartDate.HasValue)
                            {
                                blackout.StartDate = p.StayStartDate.Value.AddDays(startNum);
                                blackout.EndDate = p.StayStartDate.Value.AddDays(endNum);
                            }
                        }

                        if (p.BlackoutDates == null)
                        {
                            p.BlackoutDates = new List<PromotionBlackoutDate>();
                        }

                        p.BlackoutDates.Add(blackout);
                    }
                });
            }
        }