示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }