public async Task <UserViewModel> AddOrUpdateUserFields(UserAddFieldRequest request) { User user = await userRepository.GetByIdAsync(ObjectId.Parse(request.UserId)); if (user != null) { FilterDefinition <ObjectLevel> buidler = Builders <ObjectLevel> .Filter.Eq("object_id", request.UserId); List <ObjectLevel> existObjectLevels = (await objectLevelRepository.FindListAsync(buidler)).ToList(); foreach (string item in request.FieldId) { var existObjectLevel = existObjectLevels.FirstOrDefault(x => x.FieldId == item); if (existObjectLevel != null) { if (existObjectLevel.IsActive == false) { existObjectLevel.IsActive = true; } existObjectLevel.ModifiedDate = DateTime.Now; await objectLevelRepository.UpdateAsync(existObjectLevel, existObjectLevel.Id); } else { ObjectLevel objectLevel = new ObjectLevel() { LevelId = Constants.LevelConstants.LEVEL_0_ID, FieldId = item, ObjectId = user.OId, Point = 0 }; await objectLevelRepository.AddAsync(objectLevel); } } foreach (var ex in existObjectLevels) { if (request.FieldId.FirstOrDefault(x => x == ex.FieldId) == null) { ex.IsActive = false; ex.ModifiedDate = DateTime.Now; await objectLevelRepository.UpdateAsync(ex, ex.Id); } } return(mapper.Map <UserViewModel>(user)); } else { throw new Exception("Không tìm thấy user"); } }
public async Task <IActionResult> AddFieldsForUser(UserAddFieldRequest request) { var data = await levelService.AddOrUpdateUserFields(request); return(Ok(new ApiOkResponse(data))); }