Beispiel #1
0
        private void OnPromotionCreated(PromotionCreated @event)
        {
            _startDate  = @event.StartDate;
            _endDate    = @event.EndDate;
            _daysOfWeek = @event.DaysOfWeek;
            _appliesToCurrentBooking = @event.AppliesToCurrentBooking;
            _appliesToFutureBooking  = @event.AppliesToFutureBooking;
            _maxUsagesPerUser        = @event.MaxUsagePerUser;
            _maxUsages       = @event.MaxUsage;
            _discountValue   = @event.DiscountValue;
            _discountType    = @event.DiscountType;
            _code            = @event.Code;
            _triggerSettings = @event.TriggerSettings;

            _active = true;

            SetInternalStartAndEndTimes(@event.StartTime, @event.EndTime);
        }
Beispiel #2
0
        public void Handle(PromotionCreated @event)
        {
            if (@event.TriggerSettings.Type == PromotionTriggerTypes.AccountCreated &&
                @event.TriggerSettings.ApplyToExisting)
            {
                // Get all accounts
                var existingAccounts = _accountDao.GetAll();

                // Get all account ids
                var accoundIds = existingAccounts.Select(accountDetail => accountDetail.Id).ToArray();

                _commandBus.Send(new AddUserToPromotionWhiteList
                {
                    AccountIds = accoundIds,
                    PromoId    = @event.SourceId
                });
            }
        }
        public given_a_new_account_trigger_promotion()
        {
            _orderCreatedCommand = new OrderCreated
            {
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.515065,
                    Longitude = -73.558064
                },
                PickupDate     = new DateTime(2014, 11, 10),
                DropOffAddress = new Address
                {
                    FriendlyName = "Velvet auberge st gabriel",
                    Latitude     = 45.50643,
                    Longitude    = -73.554052,
                },
                Settings = new BookingSettings
                {
                    ChargeTypeId  = 99,
                    VehicleTypeId = 98,
                    ProviderId    = 97,
                    NumberOfTaxi  = 96,
                    Passengers    = 95,
                    Phone         = "94",
                    Name          = "93",
                    LargeBags     = 92
                },
                CreatedDate        = new DateTime(2014, 11, 10),
                ClientLanguageCode = "fr",
                UserAgent          = "TestUserAgent",
                ClientVersion      = "1.0.0",
                UserNote           = "une note"
            };

            var promo = new PromotionCreated
            {
                Name                    = "promo2",
                Description             = "promodesc2",
                Code                    = "code",
                AppliesToCurrentBooking = true,
                AppliesToFutureBooking  = false,
                DiscountType            = PromoDiscountType.Percentage,
                DiscountValue           = 10,
                DaysOfWeek              =
                    new[]
                {
                    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday,
                    DayOfWeek.Saturday, DayOfWeek.Sunday
                },
                MaxUsage        = 2,
                MaxUsagePerUser = 1,
                StartDate       = new DateTime(2013, 11, 10),
                EndDate         = new DateTime(2020, 11, 10),
                StartTime       =
                    new DateTime(SqlDateTime.MinValue.Value.Year, SqlDateTime.MinValue.Value.Month,
                                 SqlDateTime.MinValue.Value.Day, 10, 0, 0),
                EndTime =
                    new DateTime(SqlDateTime.MinValue.Value.Year, SqlDateTime.MinValue.Value.Month,
                                 SqlDateTime.MinValue.Value.Day, 14, 0, 0),
                PublishedStartDate = new DateTime(2013, 11, 10),
                PublishedEndDate   = new DateTime(2020, 11, 10),
            };

            promo.SourceId        = _promoAccountTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.AccountCreated
            };
            PromoGenerator.Handle(promo);

            promo.SourceId        = _promoAmountSpentTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.AmountSpent, AmountSpent = 20
            };
            PromoGenerator.Handle(promo);

            promo.SourceId        = _promoRideCountTriggerId;
            promo.TriggerSettings = new PromotionTriggerSettings {
                Type = PromotionTriggerTypes.RideCount, RideCount = 2
            };
            PromoGenerator.Handle(promo);


            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoAccountTriggerId
            });
            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoAmountSpentTriggerId
            });
            PromoGenerator.Handle(new PromotionActivated {
                SourceId = _promoRideCountTriggerId
            });
        }