Пример #1
0
        /// <summary>
        /// Override a set of rates 
        /// </summary>
        /// <param name="productType">The rate plan to override rates for</param>
        public void OverrideRates(ProductType productType)
        {
            string notes = string.Empty;
            bool eventNeeded = false;
            string reference = productType.RatePlanId.ToString();
            
            BusinessEventTypesEnum eventType = BusinessEventTypesEnum.RatePlanOverrideAdded;

            var validRateList = productType.Rates.Where(x => x.Override && x.IsValid()).ToList();
            // if we have any that are overrides
            if (validRateList.Any())
            {
                using (var tx = new BusinessTransaction())
                {
                    // Override rates
                    foreach (var rate in validRateList)
                    {
                        int? dateRateId = rateCacheDao.GetDateRateId(rate);

                        notes += rate.Date.ToString(StandardDateTimeFormatProvider.GetShortDBFormat()) + ",";

                        if (!dateRateId.HasValue)
                        {
                            // Create date rate record
                            rateCacheDao.CreateDateRate(rate);
                        }
                        else
                        {
                            // Modify the existing date rate record
                            rateCacheDao.ModifyDateRate(dateRateId.Value, rate);

                            eventType = BusinessEventTypesEnum.RatePlanOverrideModified;
                        }
                    }

                    eventTrackingManager.CreateBusinessEvent(productType.BusinessId, eventType, reference, notes.TrimEnd(','));

                    tx.Commit();
                }
            }
        }
Пример #2
0
            public void OverrideRatesNotSetToOverrideDoesNotCallMethods()
            {
                // Arrange
                const long BUSINESS_ID = 1;
                const int ROOM_TYPE_ID = 1;
                const int RATE_PLAN_ID = 1;

                var rateCacheDaoMock = MockRepository.GenerateMock<IRateCacheDao>();
                var eventTrackingManagerMock = MockRepository.GenerateMock<IEventTrackingManager>();

                rateCacheManager.RateCacheDao = rateCacheDaoMock;
                rateCacheManager.EventTrackingManager = eventTrackingManagerMock;

                var rate = new RateCache
                {
                    RoomTypeId = ROOM_TYPE_ID,
                    RatePlanId = RATE_PLAN_ID,
                    Date = DateTime.UtcNow.Date,
                    Rate = new decimal(10),
                    MinStay = 1,
                    Override = false
                };

                var productType = new ProductType
                {
                    BusinessId = BUSINESS_ID,
                    Rates = new List<RateCache> { rate }
                };

                rateCacheDaoMock.Expect(dao => dao.GetDateRateId(rate)).Repeat.Never();
                rateCacheDaoMock.Expect(dao => dao.CreateDateRate(rate)).Repeat.Never();

                eventTrackingManagerMock.Expect(be => be.CreateBusinessEventAsync(Arg<long>.Is.Anything, Arg<BusinessEventTypesEnum>.Is.Anything, Arg<string>.Is.Anything, Arg<string>.Is.Anything)).Repeat.Never();

                // Act
                rateCacheManager.OverrideRates(productType);

                // Assert
                rateCacheDaoMock.VerifyAllExpectations();
                eventTrackingManagerMock.VerifyAllExpectations();
            }
Пример #3
0
            public void OverrideRatesWithInvalidRateAndMinStayThrowsException()
            {
                // Arrange
                var rateCacheDaoMock = MockRepository.GenerateMock<IRateCacheDao>();

                rateCacheManager.RateCacheDao = rateCacheDaoMock;

                var rate = new RateCache
                {
                    Rate = new decimal(0),
                    MinStay = 1,
                    Override = true
                };

                var productType = new ProductType
                {
                    Rates = new List<RateCache> { rate }
                };
                
                // Act
                rateCacheManager.OverrideRates(productType);

                Assert.Fail("No exception was thrown.");
            }
Пример #4
0
            public void OverrideExistingRatesCallsCorrectMethods()
            {
                // Arrange
                const long BUSINESS_ID = 1;
                const int ROOM_TYPE_ID = 1;
                const int RATE_PLAN_ID = 1;
                const int DATE_RATE_ID = 1;

                var rateCacheDaoMock = MockRepository.GenerateMock<IRateCacheDao>();
                var eventTrackingManagerMock = MockRepository.GenerateMock<IEventTrackingManager>();

                rateCacheManager.RateCacheDao = rateCacheDaoMock;
                rateCacheManager.EventTrackingManager = eventTrackingManagerMock;

                var rate = new RateCache
                {
                    RoomTypeId = ROOM_TYPE_ID,
                    RatePlanId = RATE_PLAN_ID,
                    Date = DateTime.UtcNow.Date,
                    Rate = new decimal(10),
                    MinStay = 1,
                    Override = true
                };

                var productType = new ProductType
                {
                    BusinessId = BUSINESS_ID,
                    Rates = new List<RateCache> { rate }
                };

                rateCacheDaoMock.Expect(dao => dao.GetDateRateId(rate)).Return(DATE_RATE_ID);
                rateCacheDaoMock.Expect(dao => dao.ModifyDateRate(DATE_RATE_ID, rate));

                eventTrackingManagerMock.Expect(be => be.CreateBusinessEvent(Arg<long>.Is.Anything, Arg<BusinessEventTypesEnum>.Matches(ev => ev == BusinessEventTypesEnum.RatePlanOverrideModified), Arg<string>.Is.Anything, Arg<string>.Is.Anything));

                // Act
                rateCacheManager.OverrideRates(productType);

                // Assert
                rateCacheDaoMock.VerifyAllExpectations();
                eventTrackingManagerMock.VerifyAllExpectations();
            }