Пример #1
0
        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());
        }
Пример #2
0
        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 返回具体内容
        }