public async Task <IActionResult> PartiallyUpdateEmployeeForCompany(Guid companyId, Guid employeeId, JsonPatchDocument <EmployeeUpdateResource> patchDocument) // 修改header application/json-patch+json { if (!await companyRepository.CompanyExistsAsync(companyId)) { return(NotFound()); } var employeeEntity = await employeeRepository.GetEmployeeAsync(companyId, employeeId); if (employeeEntity == null) { var employeeUpdateResource = new EmployeeUpdateResource(); patchDocument.ApplyTo(employeeUpdateResource, ModelState); if (!TryValidateModel(employeeUpdateResource)) { return(ValidationProblem(ModelState)); } var employeeAdd = mapper.Map <Employee>(employeeUpdateResource); employeeAdd.Id = employeeId; employeeRepository.AddEmployee(employeeId, employeeAdd); await unitOfWork.SaveAsync(); var resourceReturn = mapper.Map <EmployeeResource>(employeeAdd); return(CreatedAtRoute(nameof(GetEmployeeForCompany), new { companyId = companyId, employeeId = resourceReturn.Id }, resourceReturn)); } var entityToPatch = mapper.Map <EmployeeUpdateResource>(employeeEntity); //需要处理验证错误 patchDocument.ApplyTo(entityToPatch, ModelState); if (!TryValidateModel(entityToPatch)) // 将patchDocument类型 验证 { return(ValidationProblem(ModelState)); } mapper.Map(entityToPatch, employeeEntity); employeeRepository.UpdateEmployee(employeeEntity); await unitOfWork.SaveAsync(); return(NoContent()); }
public async Task <ActionResult <EmployeeResource> > UpdateEmployeeForCompany(Guid companyId, Guid employeeId, EmployeeUpdateResource employee) { if (!await companyRepository.CompanyExistsAsync(companyId)) { return(NotFound()); } var employeeEntity = await employeeRepository.GetEmployeeAsync(companyId, employeeId); if (employeeEntity == null) { //return NotFound(); // put 新增 var addResourceToEmployee = mapper.Map <Employee>(employee); addResourceToEmployee.Id = employeeId; employeeRepository.AddEmployee(companyId, addResourceToEmployee); await unitOfWork.SaveAsync(); var retrunSource = mapper.Map <EmployeeResource>(addResourceToEmployee); return(CreatedAtRoute(nameof(GetEmployeeForCompany), new { companyId = companyId, employeeId = retrunSource.Id }, retrunSource)); } // 数据库entity 转化 updateresource // 把传进来的employee 更新 updateresource // updateresource 转化 数据库entity mapper.Map(employee, employeeEntity); employeeRepository.UpdateEmployee(employeeEntity); // put 更新 await unitOfWork.SaveAsync(); return(NoContent()); // 204 没有具体内容 200 OK 返回具体内容 }