Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #5
0
        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());
        }
Example #7
0
 public Task <EmployeeDto> UpdateAsync(int id, EmployeePutDto employeePutDto, CancellationToken cancellationToken)
 {
     throw new System.NotImplementedException();
 }