/// <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); }
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); } }); } }