예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }