public async Task <CreateEmployeeBusinessTripOutput> CreateAsync(CreateEmployeeBusinessTripInput input) { var user = await UserManager.GetUserByIdAsync(AbpSession.UserId.Value); var model = input.MapTo <EmployeeBusinessTrip>(); model.Id = Guid.NewGuid(); model.TenantId = AbpSession.TenantId; model.UserId = AbpSession.UserId.Value; await _repository.InsertAsync(model); foreach (var member in input.EmployeeBusinessTripMember) { var memberDto = new EmployeeBusinessTripMember() { Id = Guid.NewGuid(), BusinessTripId = model.Id, TenantId = AbpSession.TenantId, UserId = member.UserId, Remark = member.Remark }; await _employeeBusinessTripMemberRepository.InsertAsync(memberDto); } foreach (var task in input.EmployeeBusinessTripTask) { var taskDto = new EmployeeBusinessTripTask() { Id = Guid.NewGuid(), NotInPlan = false, BusinessTripId = model.Id, TaskName = task.TaskName, Remark = task.Remark, CompleteStatus = (int)EmployeeBusinessTripTaskCompleteStatus.未报告 }; await _employeeBusinessTripTaskRepository.InsertAsync(taskDto); } var ret = new CreateEmployeeBusinessTripOutput(); ret.InStanceId = model.Id.ToString(); return(ret); }
public async Task UpdateAsync(UpdateEmployeeBusinessTripInput input) { var model = await _repository.GetAsync(input.Id); if (model != null) { model.Destination = input.Destination; model.PreBeginDate = input.PreBeginDate; model.PreEndDate = input.PreEndDate; model.PreSchedule = input.PreSchedule; model.BeginDate = input.BeginDate; model.EndDate = input.EndDate; model.Schedule = input.Schedule; model.FeePlan = input.FeePlan; model.PreFeeTotal = input.PreFeeTotal; model.FeeTotal = input.FeeTotal; model.FeeAccommodation = input.FeeAccommodation; model.FeeOther = input.FeeOther; model.Remark = input.Remark; var exit_tasks = await _employeeBusinessTripTaskRepository.GetAll().Where(r => r.BusinessTripId == model.Id).ToListAsync(); var add_Tasks = input.EmployeeBusinessTripTask.Where(r => !r.Id.HasValue); foreach (var add_task in add_Tasks) { var taskDto = new EmployeeBusinessTripTask() { Id = Guid.NewGuid(), BusinessTripId = model.Id, TenantId = AbpSession.TenantId, TaskName = add_task.TaskName, Remark = add_task.Remark }; await _employeeBusinessTripTaskRepository.InsertAsync(taskDto); } var less_tasks = exit_tasks.Select(r => r.Id).ToList().Except(input.EmployeeBusinessTripTask.Where(r => r.Id.HasValue).Select(r => r.Id.Value).ToList()); foreach (var less_task in less_tasks) { await _employeeBusinessTripTaskRepository.DeleteAsync(exit_tasks.FirstOrDefault(r => r.Id == less_task)); } var update_tasks = exit_tasks.Select(r => r.Id).ToList().Except(less_tasks); foreach (var update_task in update_tasks) { var updatemodel = exit_tasks.FirstOrDefault(r => r.Id == update_task); var newModel = input.EmployeeBusinessTripTask.FirstOrDefault(r => r.Id == updatemodel.Id); updatemodel.TaskName = newModel.TaskName; updatemodel.Remark = newModel.Remark; await _employeeBusinessTripTaskRepository.UpdateAsync(updatemodel); } var exit_members = await _employeeBusinessTripMemberRepository.GetAll().Where(r => r.BusinessTripId == model.Id).ToListAsync(); var add_members = input.EmployeeBusinessTripMember.Where(r => !r.Id.HasValue); foreach (var add_member in add_members) { var addmemberModel = new EmployeeBusinessTripMember() { Id = Guid.NewGuid(), BusinessTripId = model.Id, TenantId = AbpSession.TenantId, UserId = add_member.UserId }; await _employeeBusinessTripMemberRepository.InsertAsync(addmemberModel); } var less_members = exit_members.Select(r => r.Id).ToList().Except(input.EmployeeBusinessTripMember.Where(r => r.Id.HasValue).Select(r => r.Id.Value).ToList()); foreach (var less_member in less_members) { await _employeeBusinessTripMemberRepository.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.EmployeeBusinessTripMember.FirstOrDefault(r => r.Id == updatemodel.Id); updatemodel.UserId = newModel.UserId; await _employeeBusinessTripMemberRepository.UpdateAsync(updatemodel); } await _repository.UpdateAsync(model); } }