public async Task Put_should_return_NotFound_when_no_employee() { var request = new EmployeePutDto { LastName = "Smith" }; var result = await _client.PutAsync("api/employees/98765", request.ToStringContent()); result.StatusCode.Should().Be(HttpStatusCode.NotFound); }
public async Task Put_should_return_Ok_with_result_when_successfully_updated() { var request = new EmployeePutDto { LastName = "Smith" }; var result = await _client.PutAsync("api/employees/2", request.ToStringContent()); result.EnsureSuccessStatusCode(); var emp = await result.Content.ReadAsJsonAsync <EmployeeDto>(); emp.LastName.Should().Be("Smith"); }
public async Task <IActionResult> Put( [FromRoute] int id, [FromBody] EmployeePutDto employeePutDto, CancellationToken cancellationToken = default) { var result = await _employeeRepository.UpdateAsync(id, employeePutDto, cancellationToken); if (result is null) { return(NotFound()); } return(Ok(result)); }
public async Task <IActionResult> UpdateEmployeeForCompany([FromRoute] Guid employeeId, JsonPatchDocument <EmployeePutDto> patchDocument) { var employeeEntity = await _employeeRepository.GetEmployeesAsync(employeeId); //如果没有这个employee不能更新就插入新的employee if (employeeEntity == null) { var employeeDto = new EmployeePutDto(); patchDocument.ApplyTo(employeeDto, ModelState); if (!TryValidateModel(employeeDto)) { return(ValidationProblem(ModelState)); } var employeeToAdd = _mapper.Map <Employee>(employeeDto); employeeToAdd.Id = employeeId; //这里因为外键约束不能为空或不存在,所以这里插了一个存在的companyId //Guid companyId = Guid.Empty; Guid companyId = Guid.Parse("a3a461ea-e692-6f54-2f3e-f076a08dda14"); _employeeRepository.AddEmployee(companyId, employeeToAdd); await _employeeRepository.SaveAsync(); var dtoToReturn = _mapper.Map <EmployeeDto>(employeeToAdd); return(CreatedAtRoute(nameof(GetEmployeesForCompany), routeValues: new { companyId = companyId, employeeId = dtoToReturn.Id }, value: dtoToReturn)); } //根据字段查出来的数据格式是employee类型,但是我们要修改的时候是employeePutDto类型,所以要去做一下employee到employeePutDto类型的映射,类型映射 var dtoToPatch = _mapper.Map <EmployeePutDto>(employeeEntity); //patchDocument是客户端传过来的数据,这时要用上json操作数组来对dtoToPatch操作, ModelState会返回严重false如果验证有错误 patchDocument.ApplyTo(dtoToPatch, ModelState); //处理验证错误 if (!TryValidateModel(dtoToPatch)) { return(ValidationProblem(ModelState)); } ; //两个对象的映射 _mapper.Map(dtoToPatch, employeeEntity); _employeeRepository.UpdateEmployee(employeeEntity); await _employeeRepository.SaveAsync(); return(NoContent()); }
public async Task <EmployeeDto> UpdateAsync(int id, EmployeePutDto employeePutDto, CancellationToken cancellationToken) { var emp = await DbContext.Employees .SingleOrDefaultAsync(x => x.EmpNo == id, cancellationToken); if (emp is null) { return(null); } emp.LastName = employeePutDto.LastName; await DbContext.SaveChangesAsync(cancellationToken); return(emp.MapToDto()); }
public async Task <IActionResult> UpdateEmployeeForCompany(Guid employeeId, EmployeePutDto employee) { if (!await _employeeRepository.EmployeeExistAsync(employeeId)) { return(NotFound()); } var employeeEntity = await _employeeRepository.GetEmployeesAsync(employeeId); if (employeeEntity == null) { return(NotFound()); } //entity转化成PutDto //传进来的employee更新到PutDto,把PutDto映射回entity去Profiles设置 _mapper.Map(employee, employeeEntity); _employeeRepository.UpdateEmployee(employeeEntity); await _employeeRepository.SaveAsync(); return(NoContent()); }
public Task <EmployeeDto> UpdateAsync(int id, EmployeePutDto employeePutDto, CancellationToken cancellationToken) { throw new System.NotImplementedException(); }