public async Task <IActionResult> PartiallyUpdateEmployeeForCompany(Guid companyId, Guid employeeId, JsonPatchDocument <EmployUpdateDto> patchDocument) { if (!await companyRepository.CompanyExistsAsync(companyId)) { return(NotFound()); } var employeeEntity = await companyRepository.GetEmployeeAsync(companyId, employeeId); if (employeeEntity == null) { var employeeDto = new EmployUpdateDto(); patchDocument.ApplyTo(employeeDto, ModelState); if (TryValidateModel(employeeDto)) { return(ValidationProblem(ModelState)); } var employeeToAdd = mapper.Map <Employee>(employeeDto); employeeToAdd.Id = employeeId; companyRepository.AddEmployee(companyId, employeeToAdd); await companyRepository.SaveAsync(); var dtoToReturn = mapper.Map <Employee>(employeeToAdd); return(CreatedAtRoute(nameof(GetemployesFromCompany), new { CompanyId = companyId, employeeId = dtoToReturn.Id }, dtoToReturn)); } var dotToPatch = mapper.Map <EmployUpdateDto>(employeeEntity); //需要处理验证错误 //这个是检测JsonPatchDocument //不到对应映射的属性会ModelState出错 patchDocument.ApplyTo(dotToPatch, ModelState); //假如为不空的字段更新""就不行 if (TryValidateModel(dotToPatch)) { return(ValidationProblem(ModelState)); } mapper.Map(dotToPatch, employeeEntity); companyRepository.UpdateEmployee(employeeEntity); await companyRepository.SaveAsync(); return(NoContent()); }
public async Task <IActionResult> UpdateEmployeeForCompany(Guid companyId, Guid employeeId, EmployUpdateDto employ) { if (!await companyRepository.CompanyExistsAsync(companyId)) { return(NotFound()); } var employeeEntity = await companyRepository.GetEmployeeAsync(companyId, employeeId); if (employeeEntity == null) { var employeeToAddEntity = mapper.Map <Employee>(employ); employeeToAddEntity.Id = employeeId; companyRepository.AddEmployee(companyId, employeeToAddEntity); await companyRepository.SaveAsync(); var dtoToReturn = mapper.Map <EmployeeDto>(employeeToAddEntity); return(CreatedAtRoute(nameof(GetemployesFromCompany), new { CompanyId = companyId, employeeId = dtoToReturn.Id }, dtoToReturn)); } //entity转化成updatedto //把转化进来的employ的值更新到updateDto //把updatedto映射回entity mapper.Map(employ, employeeEntity); companyRepository.UpdateEmployee(employeeEntity); await companyRepository.SaveAsync(); return(NoContent()); }