예제 #1
0
        private void ActualizeWageParameter(IUnitOfWork uow, int currentRouteListId, Employee employee, bool ourCar)
        {
            //Проверка на то, что сотрудник имеет только один стартовый расчет зарплаты
            if (employee.WageParameters.Count != 1)
            {
                return;
            }
            var startedWageParameter = employee.WageParameters.FirstOrDefault();

            if (startedWageParameter == null || !startedWageParameter.IsStartedWageParameter)
            {
                return;
            }

            IEnumerable <DateTime> workedDays = wageCalculationRepository.GetDaysWorkedWithRouteLists(uow, employee).OrderBy(x => x);
            int daysWorkedNeeded = wageParametersProvider.GetDaysWorkedForMinRatesLevel();

            if (workedDays.Count() < daysWorkedNeeded || daysWorkedNeeded < 1)
            {
                return;
            }
            DateTime wageChangeDate = workedDays.ToArray()[daysWorkedNeeded - 1].AddDays(1);

            var ratesLevelWageParameter = new EmployeeWageParameter {
                WageParameterItem = new RatesLevelWageParameterItem {
                    WageDistrictLevelRates = wageCalculationRepository.DefaultLevelForNewEmployees(uow, ourCar)
                }
            };

            employee.ChangeWageParameter(
                ratesLevelWageParameter,
                wageChangeDate
                );
        }
예제 #2
0
        public void CreateDefaultWageParameter_IfInstanceOfEmployeeIsNewAndCategoryOfEmployeeIsOffice_ThenCreateManualWageParameter()
        {
            //arrange
            IWageParametersProvider    wageParametersProvider    = Substitute.For <IWageParametersProvider>();
            IWageCalculationRepository wageCalculationRepository = Substitute.For <IWageCalculationRepository>();
            var employee = new Employee {
                WageCalculationRepository = wageCalculationRepository,
                Category = EmployeeCategory.office
            };
            WageDistrictLevelRates levelRates = Substitute.For <WageDistrictLevelRates>();

            wageCalculationRepository.DefaultLevelForNewEmployees(null).ReturnsForAnyArgs(levelRates);
            IInteractiveService interactiveService = Substitute.For <IInteractiveService>();

            //act
            employee.CreateDefaultWageParameter(wageCalculationRepository, wageParametersProvider, interactiveService);

            //assert
            Assert.That(employee.ObservableWageParameters.Count(), Is.EqualTo(1));
            Assert.That(
                employee.ObservableWageParameters
                .FirstOrDefault()
                .WageParameterItem
                .WageParameterItemType,
                Is.EqualTo(WageParameterItemTypes.Manual)
                );
        }