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 ); }
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) ); }