Пример #1
0
        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. ");
            }
        }
Пример #2
0
        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);
            }
        }