public async Task <DepartmentCreateResult> Create(DepartmentCreateParameters parameters) { var validationResult = await Validate(0, parameters); var manager = await _dbContext.Employees.FindAsync(parameters.ManagerId); if (validationResult != DepartmentValidationStatus.Success) { return(new DepartmentCreateResult { Status = validationResult }); } var result = await _dbContext.Departments.AddAsync(new Department() { Employees = new List <Employee>(), Manager = manager, Name = parameters.Name, }); await _dbContext.SaveChangesAsync(); var department = result.Entity; if (manager == null) { return(new DepartmentCreateResult { Data = new DepartmentViewResult { Id = department.Id, Name = department.Name, } }); } else { return(new DepartmentCreateResult { Data = new DepartmentViewResult { Id = department.Id, Name = department.Name, ManagerName = manager.Name } }); } }
public async Task <DepartmentUpdateResult> Update(int id, DepartmentCreateParameters parameters) { var validationResult = await Validate(id, parameters); if (validationResult != DepartmentValidationStatus.Success) { return(new DepartmentUpdateResult(validationResult)); } var department = await _dbContext.Departments .Include(d => d.Manager) .FirstOrDefaultAsync(d => d.Id == id); if (department == null) { return(null); } if (!string.IsNullOrWhiteSpace(parameters.Name)) { department.Name = parameters.Name; } if (parameters.ManagerId.HasValue) { var manager = await _dbContext.Employees.FirstOrDefaultAsync(e => e.Id == parameters.ManagerId.Value); if (manager != null) { department.Manager = manager; department.ManagerId = department.ManagerId; } } await _dbContext.SaveChangesAsync(); return(new DepartmentUpdateResult(DepartmentValidationStatus.Success) { Id = department.Id, Name = department.Name, ManagerName = department.Manager?.Name }); }
private async Task <DepartmentValidationStatus> Validate(int id, DepartmentCreateParameters parameters) { var findName = await _dbContext.Departments.AnyAsync(d => (id == 0 || d.Id != id) && d.Name.ToLower().Equals(parameters.Name.ToLower())); var findManager = await _dbContext.Departments.FirstOrDefaultAsync(d => d.ManagerId.Equals(parameters.ManagerId)); if (findName) { return(DepartmentValidationStatus.DepartmentNameAlreadyExists); } else if (findManager != null && findManager.ManagerId == parameters.ManagerId) { return(DepartmentValidationStatus.DepartmentManagerAlreadyExists); } else { return(DepartmentValidationStatus.Success); } }
public async Task <DepartmentUpdateResult> Put(int id, DepartmentCreateParameters parameters) { return(await _departmentService.Update(id, parameters)); }
public async Task <DepartmentCreateResult> Post(DepartmentCreateParameters parameters) { return(await _departmentService.Create(parameters)); }