public async Task <UserViewModel> ResetField(UserResetFieldRequest request) { User user = await userRepository.GetByIdAsync(ObjectId.Parse(request.UserId)); if (user != null) { foreach (string item in request.FieldId) { FilterDefinitionBuilder <ObjectLevel> finder = Builders <ObjectLevel> .Filter; FilterDefinition <ObjectLevel> filter = finder.Eq("field_id", item) & finder.Eq("object_id", user.OId); ObjectLevel objectLevel = await objectLevelRepository.FindAsync(filter); if (objectLevel != null) { objectLevel.LevelId = Constants.LevelConstants.LEVEL_0_ID; objectLevel.Point = 0; objectLevel.ModifiedDate = DateTime.Now; await objectLevelRepository.UpdateAsync(objectLevel, objectLevel.Id); } } return(mapper.Map <UserViewModel>(user)); } else { throw new Exception("Không tìm thấy user. "); } }
public async Task UpdateUserPoint(string userId, string fieldId, int point) { var builder = Builders <ObjectLevel> .Filter; var filter = builder.Eq("object_id", userId) & builder.Eq("field_id", fieldId) & builder.Eq("is_active", true); var objectLevel = await objectLevelRepository.FindAsync(filter); if (objectLevel != null) { objectLevel.Point += point; if (objectLevel.Point <= 0) { objectLevel.Point = 0; } if (objectLevel.Point < LevelPoint.Level1) { objectLevel.LevelId = levelRepository.GetAll().FirstOrDefault(x => x.Order == 0)?.OId; } else if (objectLevel.Point < LevelPoint.Level2) { objectLevel.LevelId = levelRepository.GetAll().FirstOrDefault(x => x.Order == 1)?.OId; } else if (objectLevel.Point < LevelPoint.Level3) { objectLevel.LevelId = levelRepository.GetAll().FirstOrDefault(x => x.Order == 2)?.OId; } else if (objectLevel.Point < LevelPoint.Level4) { objectLevel.LevelId = levelRepository.GetAll().FirstOrDefault(x => x.Order == 3)?.OId; } else { objectLevel.LevelId = levelRepository.GetAll().FirstOrDefault(x => x.Order == 4)?.OId; } await objectLevelRepository.UpdateAsync(objectLevel, objectLevel.Id); } }