public async Task UpdateAsync(UpdateEmployeeWorkOvertimeInput input) { var model = await _repository.GetAsync(input.Id); if (model != null) { model.ApplyDate = input.ApplyDate; model.Reason = input.Reason; model.PreHours = input.PreHours; model.Hours = input.Hours; model.Remark = input.Remark; var exit_members = _employeeWorkOvertimeMemberRepository.GetAll().Where(r => r.WorkOvertimeId == model.Id); var add_members = input.EmployeeWorkOvertimeMember.Where(r => !r.Id.HasValue); foreach (var add_member in add_members) { var addmemberModel = new EmployeeWorkOvertimeMember() { Id = Guid.NewGuid(), WorkOvertimeId = model.Id, TenantId = AbpSession.TenantId, UserId = add_member.UserId }; await _employeeWorkOvertimeMemberRepository.InsertAsync(addmemberModel); } var less_members = exit_members.Select(r => r.Id).ToList().Except(input.EmployeeWorkOvertimeMember.Where(r => r.Id.HasValue).Select(r => r.Id.Value).ToList()); foreach (var less_member in less_members) { await _employeeWorkOvertimeMemberRepository.DeleteAsync(exit_members.FirstOrDefault(r => r.Id == less_member)); } var update_members = exit_members.Select(r => r.Id).ToList().Except(less_members); foreach (var update_member in update_members) { var updatemodel = exit_members.FirstOrDefault(r => r.Id == update_member); var newModel = input.EmployeeWorkOvertimeMember.FirstOrDefault(r => r.Id == updatemodel.Id); updatemodel.UserId = newModel.UserId; await _employeeWorkOvertimeMemberRepository.UpdateAsync(updatemodel); } await _repository.UpdateAsync(model); } }
public async Task <CreateEmployeeWorkOvertimeOutput> CreateAsync(CreateEmployeeWorkOvertimeInput input) { var user = await UserManager.GetUserByIdAsync(AbpSession.UserId.Value); var model = input.MapTo <EmployeeWorkOvertime>(); model.Id = Guid.NewGuid(); model.TenantId = AbpSession.TenantId; model.UserId = AbpSession.UserId.Value; await _repository.InsertAsync(model); foreach (var member in input.EmployeeWorkOvertimeMember) { var memberDto = new EmployeeWorkOvertimeMember() { Id = Guid.NewGuid(), WorkOvertimeId = model.Id, TenantId = AbpSession.TenantId, UserId = member.UserId }; await _employeeWorkOvertimeMemberRepository.InsertAsync(memberDto); } var ret = new CreateEmployeeWorkOvertimeOutput(); ret.InStanceId = model.Id.ToString(); return(ret); }