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