Example #1
0
        /// <summary>
        /// Create a new charge category
        /// </summary>
        /// <param name="chargeCategory">The charge category to create</param>
        public void Create(ChargeCategory chargeCategory)
        {
            const string SQL_STATEMENT = @"
                INSERT INTO Pricing.ChargeCategory
                (
                        BusinessId,
                        Name,
                        IsActive,
                        UpdatedByUserId
                )
                VALUES
                (
                        @BusinessId,
                        @Name,
                        1,
                        @UpdatedByUserId
                )
                SELECT @Id = SCOPE_IDENTITY()";

            var parameters = new List<SqlParameter>
            {
                DbHelper.CreateParameter(ChargeCategoryMapper.Parameters.BusinessId, chargeCategory.BusinessId),
                DbHelper.CreateParameter(ChargeCategoryMapper.Parameters.Name, chargeCategory.Name)
            };

            SqlParameter outputKey;
            parameters.Add(outputKey = DbHelper.CreateParameterOut<int>(ChargeCategoryMapper.Parameters.Id, SqlDbType.Int));

            // Add auditing parameters
            AuditFieldsHelper.PopulateAuditFields(parameters);

            DbHelper.ExecuteNonQueryCommand(SQL_STATEMENT, parameters: parameters);
            chargeCategory.Id = DbHelper.ParameterValue<int>(outputKey);
        }
Example #2
0
        /// <summary>
        ///Modify an existing charge category
        /// </summary>
        /// <param name="chargeCategory">The charge category to modify</param>
        public void Modify(ChargeCategory chargeCategory)
        {
            var SQL_STATEMENT = @"
                UPDATE  Pricing.ChargeCategory
                SET   Name = @Name,
                      UpdatedByUserId = @UpdatedByUserId
                WHERE   Id = @Id";
            
            var parameters = new List<SqlParameter>
            {
                DbHelper.CreateParameter(ChargeCategoryMapper.Parameters.Name, chargeCategory.Name),
                DbHelper.CreateParameter(ChargeCategoryMapper.Parameters.Id, chargeCategory.Id)
            };

          
            // Add auditing parameters
            AuditFieldsHelper.PopulateAuditFields(parameters);

            DbHelper.ExecuteNonQueryCommand(SQL_STATEMENT, parameters: parameters);
        }
Example #3
0
            public void CreateExistingChargeCategoryThrowsException()
            {
                // Arrange
                const long BUSINESS_ID = 501;

                using (new TestDataHelper(GetTestQuery(TestQuery.PopulateChargeTestData), GetTestQuery(TestQuery.CleanupUnitTestData)))
                {
                    var chargeCategory = new ChargeCategory
                    {
                        BusinessId = BUSINESS_ID,
                        Name = "Bar"
                    };

                    // Act
                    chargeCategoryDao.Create(chargeCategory);
                }
            }
Example #4
0
            public void CreateInvalidChargeCategoryThrowsException()
            {
                // Arrange
                const int INVALID_BUSINESS_ID = 0;

                var chargeCategory = new ChargeCategory
                {
                    BusinessId = INVALID_BUSINESS_ID,
                    Name = "Rum"
                };

                // Act
                chargeCategoryDao.Create(chargeCategory);
            }
Example #5
0
            public void CreateIsSuccessful()
            {
                // Arrange
                const long BUSINESS_ID = 501;

                using (new TestDataHelper(GetTestQuery(TestQuery.PopulateChargeTestData), GetTestQuery(TestQuery.CleanupUnitTestData)))
                {
                    var chargeCategory = new ChargeCategory
                    {
                        BusinessId = BUSINESS_ID,
                        Name = "Room Service"
                    };

                    // Act
                    chargeCategoryDao.Create(chargeCategory);

                    // Assert
                    ChargeCategory addedChargeCategory = chargeCategoryDao.GetChargeCategoriesByBusinessId(BUSINESS_ID).FirstOrDefault(x => x.Id == chargeCategory.Id);

                    Assert.IsNotNull(addedChargeCategory, "Charge category was not added");
                    Assert.AreEqual(chargeCategory.BusinessId, addedChargeCategory.BusinessId, "Business id was not added correctly.");
                    Assert.AreEqual(chargeCategory.Name, addedChargeCategory.Name, "Name was not added correctly.");
                }
            }
Example #6
0
            public void ModifyChargeAndCreateCategoryCallsCorrectMethods()
            {
                // Arrange
                const long BUSINESS_ID = 501;

                var chargeDaoMock = MockRepository.GenerateMock<IChargeDao>();
                var chargeCategoryDaoMock = MockRepository.GenerateMock<IChargeCategoryDao>();
                var eventTrackingManagerMock = MockRepository.GenerateMock<IEventTrackingManager>();

                settingsManager.ChargeDao = chargeDaoMock;
                settingsManager.ChargeCategoryDao = chargeCategoryDaoMock;
                settingsManager.EventTrackingManager = eventTrackingManagerMock;

                var chargeCategory = new ChargeCategory
                    {
                        BusinessId = BUSINESS_ID,
                        Name = "Room Stuff"
                    };

                var charge = new Charge
                    {
                        Id = 1,
                        ChargeCategory = chargeCategory,
                        ChargeType = new ChargeType {Type = ChargeTypeEnum.Charge},
                        ChargeCostType = new ChargeCostType {Type = ChargeCostTypeEnum.Variable},
                        Name = "TV"
                    };

                chargeDaoMock.Expect(c => c.Modify(charge));
                chargeDaoMock.Expect(c => c.GetChargesByBusinessId(Arg<long>.Is.Anything, Arg<string>.Is.Anything)).Return(new List<Charge>());
                chargeCategoryDaoMock.Expect(c => c.Create(chargeCategory)).WhenCalled(delegate { chargeCategory.Id = 1; });


                eventTrackingManagerMock.Expect(be => be.CreateBusinessEventAsync(Arg<long>.Is.Anything, Arg<BusinessEventTypesEnum>.Matches(ev => ev == BusinessEventTypesEnum.ChargeModified), Arg<string>.Is.Anything, Arg<string>.Is.Anything));
                eventTrackingManagerMock.Expect(be => be.CreateBusinessEventAsync(Arg<long>.Is.Anything, Arg<BusinessEventTypesEnum>.Matches(ev => ev == BusinessEventTypesEnum.ChargeCategoryAdded), Arg<string>.Is.Anything, Arg<string>.Is.Anything));

                // Act
                settingsManager.ModifyCharge(charge);

                // Assert
                chargeDaoMock.VerifyAllExpectations();
                chargeCategoryDaoMock.VerifyAllExpectations();
                eventTrackingManagerMock.VerifyAllExpectations();
            }
Example #7
0
            public void CreateChargeWithInvalidChargeCostTypeThrowsException()
            {
                // Arrange
                const long BUSINESS_ID = 501;

                var chargeDaoMock = MockRepository.GenerateMock<IChargeDao>();

                settingsManager.ChargeDao = chargeDaoMock;

                var chargeCategory = new ChargeCategory
                {
                    Id = 1,
                    BusinessId = BUSINESS_ID
                };

                var charge = new Charge
                {
                    ChargeCategory = chargeCategory,
                    ChargeType = new ChargeType { Type = ChargeTypeEnum.Charge },
                    Name = "TV"
                };

                // Act
                settingsManager.CreateCharge(charge);
            }
Example #8
0
        /// <summary>
        /// Create a new charge category
        /// </summary>
        /// <param name="chargeCategory">The charge category to create</param>
        private void CreateChargeCategory(ChargeCategory chargeCategory)
        {
            chargeCategoryDao.Create(chargeCategory);

            // Record business event
            eventTrackingManager.CreateBusinessEventAsync(chargeCategory.BusinessId, BusinessEventTypesEnum.ChargeCategoryAdded, chargeCategory.Id.ToString(CultureInfo.InvariantCulture));
        }