示例#1
0
        public async Task <Department> Update(int id, CreateUpdateDepartmentModel model)
        {
            Department department = GetQuery().FirstOrDefault(d => d.Id == id);

            if (null == department)
            {
                throw new NotFoundException("Department is not found");
            }

            Department newParent = GetQuery().FirstOrDefault(d => d.Id == model.ParentId);

            if (null == newParent)
            {
                throw new NotFoundException("Super department is not found");
            }

            string newHierachy = newParent.Hierachy + department.Id + ".";

            IQueryable <Department> children = GetQuery().Where(d => d.Id != department.Id && d.Hierachy.StartsWith(department.Hierachy));

            foreach (Department child in children)
            {
                child.Hierachy = newHierachy + child.Hierachy.Substring(department.Hierachy.Length);
            }

            department.Name     = model.Name.Trim();
            department.ParentId = model.ParentId;
            department.Hierachy = newHierachy;
            department.Enabled  = model.Enabled;

            await _uow.CommitAsync();

            return(department);
        }
示例#2
0
        public async Task <Department> Create(CreateUpdateDepartmentModel model)
        {
            if (GetQuery().Any(u => u.ParentId == model.ParentId && u.Name.Equals(model.Name.Trim())))
            {
                throw new BadRequestException("Same department is already in use.");
            }

            Department parent = GetQuery().FirstOrDefault(x => x.Id == model.ParentId);

            if (null == parent)
            {
                throw new BadRequestException("Super department does not exist.");
            }

            Department department = new Department
            {
                Name     = model.Name.Trim(),
                ParentId = model.ParentId,
                Hierachy = parent.Hierachy,
                Enabled  = parent.Enabled,
            };

            _uow.Add(department);
            await _uow.CommitAsync();

            department.Hierachy = parent.Hierachy + department.Id + ".";
            _uow.Update(department);
            await _uow.CommitAsync();

            return(department);
        }
        public async Task <DepartmentModel> Put(int id, [FromBody] CreateUpdateDepartmentModel requestModel)
        {
            Department item = await _query.Update(id, requestModel);

            DepartmentModel model = _mapper.Map <DepartmentModel>(item);

            return(model);
        }