public Widget CreateNewSurprisePaymentMonitorWidget(string bucketCode, DateTime paymentDate,
WeeklyOrFortnightly frequency)
{
if (string.IsNullOrWhiteSpace(bucketCode))
{
throw new ArgumentNullException(nameof(bucketCode));
}
if (paymentDate == DateTime.MinValue)
{
throw new ArgumentException("Payment date is not set.", nameof(paymentDate));
}
var bucket = this.bucketRepository.GetByCode(bucketCode);
if (bucket == null)
{
throw new ArgumentException(
string.Format(CultureInfo.CurrentCulture, "No Bucket with code {0} exists", bucketCode),
nameof(bucketCode));
}
var widget = this.widgetService.Create(typeof(SurprisePaymentWidget).FullName, bucket.Code);
var paymentWidget = (SurprisePaymentWidget) widget;
paymentWidget.StartPaymentDate = paymentDate;
paymentWidget.Frequency = frequency;
return UpdateWidgetCollectionWithNewAddition((Widget) widget);
}