示例#1
0
        private void CreateChildVacanciesIfNeeded(Vacancy domain, VacancyDTO dto)
        {
            List <Vacancy> childVacancies = new List <Vacancy>();

            if (dto.ChildVacanciesNumber.HasValue)
            {
                if (!domain.ChildVacancies.Any())
                {
                    if (dto.HasParent())
                    {
                        throw new Exception("This vacancy has parent vacancy, so you can't create child of it");
                    }
                    dto.ChildVacanciesNumber.Value.Times(() =>
                    {
                        Vacancy childVacancy = new Vacancy();
                        childVacancy.UpdateChildWithParent(domain, uow);
                        childVacancies.Add(childVacancy);
                    });
                }
                else if (dto.ChildVacanciesNumber.Value > domain.ChildVacancies.Count)
                {
                    var additionalVacancyChildsNumber = dto.ChildVacanciesNumber.Value - domain.ChildVacancies.Count;
                    additionalVacancyChildsNumber.Times(() =>
                    {
                        Vacancy childVacancy = new Vacancy();
                        childVacancy.UpdateChildWithParent(domain, uow);
                        childVacancies.Add(childVacancy);
                    });
                }
                childVacancies.ForEach(x => domain.ChildVacancies.Add(x));
            }
            if (domain.ChildVacanciesNumber < domain.ChildVacancies.Count)
            {
                domain.ChildVacanciesNumber = domain.ChildVacancies.Count;
            }
        }