コード例 #1
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
        public static bool HasBeenOfflineMoreThanDays(this UserExtended user, int days)
        {
            var lastVisitDate   = user.LastActivityDate;
            var daysWithoutVist = Math.Abs((DateTime.Now - lastVisitDate).Days);

            return(daysWithoutVist > days);
        }
コード例 #2
0
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            IEnumerable <string> headers;
            var tenantExists = actionContext.Request.Headers.TryGetValues("tenant_type", out headers);

            if (tenantExists)
            {
                var tenant = headers.FirstOrDefault();
                UserExtended = new UserExtended {
                    TenantTypes = tenant == "CAL" ? TenantTypes.Cal : TenantTypes.Nslcsp
                };
            }


            if (actionContext.Request.Headers.Authorization == null)
            {
                actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
            }
            else
            {
                var authToken    = actionContext.Request.Headers.Authorization.Scheme;
                var decodedToken = Encoding.UTF8.GetString(Convert.FromBase64String(authToken));
                if (FindUser(decodedToken))
                {
                    SetUpPrincipal();
                }
            }

            Thread.CurrentPrincipal = UserExtended;
            if (HttpContext.Current != null)
            {
                HttpContext.Current.User = UserExtended;
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: andrew-v-2019/VkApi
        private static bool LikeProfilePhotos(List <Photo> profilePhotos, VkApi api, UserExtended user)
        {
            var result = false;

            var likedPhotosCounter = 0;

            foreach (var profilePhoto in profilePhotos)
            {
                if (profilePhoto.Likes.UserLikes)
                {
                    continue;
                }

                if (profilePhoto.Id.HasValue)
                {
                    result = _likesService.AddLike(user.Id, profilePhoto.Id.Value, LikeObjectType.Photo,
                                                   api);
                    likedPhotosCounter++;
                }

                if (likedPhotosCounter >= _profilePhotosToLike)
                {
                    break;
                }
            }

            return(result);
        }
コード例 #4
0
        public void Embedded_object_with_object_arrays_can_be_converted()
        {
            var userEx = new UserExtended
            {
                Name      = "John Doe",
                Age       = 30,
                Addresses = new []
                {
                    new PhysicalAddress
                    {
                        City   = "Tel-Aviv",
                        Street = "Sesame Str."
                    },
                    new PhysicalAddress
                    {
                        City   = "Haifa",
                        Street = "White Str."
                    }
                }
            };

            var doc = userEx.ToDocument();

            Assert.Equal(6, doc.Fields.Count);
            Assert.Equal("John Doe", doc.GetField(nameof(User.Name)).GetStringValue());
            Assert.Equal(30, doc.GetField(nameof(User.Age)).GetInt32Value());

            Assert.Equal(userEx.Addresses.Select(a => a.City).ToArray(),
                         doc.GetValues($"{nameof(UserExtended.Addresses)}.{nameof(Address.PhysicalAddress.City)}"));

            Assert.Equal(userEx.Addresses.Select(a => a.Street).ToArray(),
                         doc.GetValues($"{nameof(UserExtended.Addresses)}.{nameof(Address.PhysicalAddress.Street)}"));
        }
コード例 #5
0
ファイル: UserController.cs プロジェクト: JingoC/CrossTech
 private UserModel ConvertUserExtendedToUserModel(UserExtended ue)
 {
     return(new UserModel()
     {
         AccessToken = ue.User.AccessToken,
         Login = ue.User.Login,
         Claims = ue.Claims.Select(ConvertClaimToClaimModel).ToList()
     });
 }
コード例 #6
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
 public static bool AgeVisible(this UserExtended user)
 {
     if (user.BirthdayVisibility == BirthdayVisibility.Invisible ||
         user.BirthdayVisibility == BirthdayVisibility.OnlyDayAndMonth)
     {
         return(false);
     }
     return(!string.IsNullOrWhiteSpace(user.BirthDate));
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: andrew-v-2019/VkApi
        private static bool BlackListUser(UserExtended u, VkApi api)
        {
            api.Account.SetOffline();
            var result = _userService.BanUser(u, api);

            if (result)
            {
                _cacheService.Append(u.Id, CacheKeys.BannedUserIds.ToString());
            }

            return(result);
        }
コード例 #8
0
        private void SetUpPrincipal()
        {
            if (UserExtended != null)
            {
                UserExtended.Identity = new IdentityExtended("", "", true);
                return;
            }

            UserExtended = new UserExtended {
                Identity = new IdentityExtended("", "", true)
            };
        }
コード例 #9
0
 /// <summary>
 /// Добавить пользователя
 /// </summary>
 /// <param name="user">Пользователь</param>
 /// <param name="token">Токен пользоват</param>
 /// <returns></returns>
 public async Task AddUser(UserPrincipal user, string token)
 {
     UserExtended userToAdd = new UserExtended()
     {
         UserExtendedId = user.Guid.Value,
         FirstName      = user.GivenName,
         LastName       = user.Surname,
         Login          = user.SamAccountName,
         Token          = token,
         RoleId         = DefaultRole()
     };
     await _context.AddAsync <UserExtended>(userToAdd);
 }
コード例 #10
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
        public static bool FromCity(this UserExtended user, long[] cities)
        {
            if (user.City == null)
            {
                return(false);
            }

            if (!user.City.Id.HasValue)
            {
                return(false);
            }

            return(cities.Any(c => c == user.City.Id.Value));
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: andrew-v-2019/VkApi
        private static bool SatisfyBySecondAlgorithm(UserExtended user)
        {
            if (user.IsFriend.HasValue && user.IsFriend.Value)
            {
                return(false);
            }

            //if (user.Sex == Sex.Female && user.AgeVisible() && user.IsAgeBetween(MinAge, MaxAge))
            //{
            //    return true;
            //}

            var ageBetween = user.AgeVisible() && user.IsAgeBetween(37, 90);

            return(user.Sex == Sex.Male || ageBetween);
        }
コード例 #12
0
ファイル: UserTest.cs プロジェクト: ertyki80/TradeCompany
        public void GetAllTest()
        {
            var user = new UserExtended()
            {
                DateOfBirth    = Convert.ToDateTime("11/03/2001"),
                Email          = "*****@*****.**",
                FirstName      = "Oleh",
                LastName       = "Kolima",
                Login          = "******",
                Password       = "******",
                TimeOfCreating = DateTime.Now
            };
            DataContext dataContext = new DataContext();
            var         result      = dataContext.Users.Add(user);
            var         users       = dataContext.Users;

            Assert.AreEqual(1, users.Count(x => x.FirstName == "Oleh"));
        }
コード例 #13
0
        private static bool ShouldLike(UserExtended user, AgeRange ageRange, List <CityExtended> cities)
        {
            if (!user.IsAgeBetween(ageRange.Min, ageRange.Max))
            {
                return(false);
            }

            if (user.HasBeenOfflineMoreThanDays(2))
            {
                return(false);
            }

            //  var cityIds = cities.Select(x => x.Id.Value).Distinct().ToArray();
            if (!user.FromCity(cities))
            {
                return(false);
            }
            if (user.Sex != Sex.Female)
            {
                return(false);
            }

            if (user.BlackListed())
            {
                return(false);
            }

            if (user.IsFriend.HasValue && user.IsFriend == true)
            {
                return(false);
            }

            if (!user.IsSingle())
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(user.PhotoId))
            {
                return(false);
            }

            return(user.CommonCount == 0 || !user.CommonCount.HasValue);
        }
コード例 #14
0
ファイル: UserTest.cs プロジェクト: ertyki80/TradeCompany
        public void TestMethod1()
        {
            //Arrange
            var users = new UserExtended()
            {
                DateOfBirth = Convert.ToDateTime("11/03/2001"), Email = "*****@*****.**", FirstName = "Oleh",
                LastName    = "Kolima",
                Login       = "******", Password = "******", TimeOfCreating = DateTime.Now
            };
            //Act
            DataContext dataContext = new DataContext();

            dataContext.Users.Add(users);
            var user = dataContext.Users.Where(c => c.Login == "ueuued").FirstOrDefault();

            //Assert

            Assert.IsTrue(user.Id != 0, "Returned ID should be more than zero");
        }
コード例 #15
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
        public static bool FromCity(this UserExtended user, List <CityExtended> cities)
        {
            if (user?.City?.Id != null)
            {
                var cityIds = cities.Select(x => x.Id).ToList();
                var res     = cityIds.Contains(user.City.Id.Value);

                return(res);
            }

            if (!string.IsNullOrWhiteSpace(user?.HomeTown))
            {
                var cityNames = cities.SelectMany(x => x.Names.Select(x1 => x1.Trim().ToLower())).ToList();
                var res       = cityNames.Contains(user.HomeTown.Trim().ToLower());

                return(res);
            }

            return(false);
        }
コード例 #16
0
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            IEnumerable <string> headers;
            var tenantExists = actionContext.Request.Headers.TryGetValues("tenant_type", out headers);

            if (tenantExists)
            {
                var tenant = headers.FirstOrDefault();

                var principal = new UserExtended {
                    TenantTypes = tenant == "CAL" ? TenantTypes.Cal : TenantTypes.Nslcsp
                };
                Thread.CurrentPrincipal = principal;
                if (HttpContext.Current != null)
                {
                    HttpContext.Current.User = principal;
                }
            }

            base.OnActionExecuting(actionContext);
        }
コード例 #17
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
        public static bool IsAgeBetween(this UserExtended user, int min, int max)
        {
            if (!AgeVisible(user))
            {
                return(true);
            }

            try
            {
                var years = GetAge(user);
                if (years.HasValue)
                {
                    return(years >= min && years <= max);
                }
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
コード例 #18
0
        public void Can_convert_to_from_simple_object()
        {
            var userEx = new UserExtended
            {
                Name      = "John Doe",
                Age       = 30,
                Addresses = new []
                {
                    new PhysicalAddress
                    {
                        City   = "Tel-Aviv",
                        Street = "Sesame Str."
                    },
                    new PhysicalAddress
                    {
                        City   = "Haifa",
                        Street = "White Str."
                    }
                }
            };

            var doc           = userEx.ToDocument();
            var convertedUser = doc.ToObject <UserExtended>();
        }
コード例 #19
0
ファイル: UserExtensions.cs プロジェクト: andrew-v-2019/VkApi
        public static int?GetAge(this UserExtended user)
        {
            if (!AgeVisible(user))
            {
                return(null);
            }
            var birthDateString = user.BirthDate.Split('.');
            var d = Convert.ToInt32(birthDateString[0]);
            var m = Convert.ToInt32(birthDateString[1]);
            var y = Convert.ToInt32(birthDateString[2]);

            try
            {
                var birthDate     = new DateTime(y, m, d);
                var birthDateYear = birthDate.Year;
                var now           = DateTime.Now.Year;
                var years         = now - birthDateYear;
                return(years);
            }
            catch (Exception)
            {
                return(null);
            }
        }
コード例 #20
0
ファイル: UserService.cs プロジェクト: andrew-v-2019/VkApi
        public bool BanUser(UserExtended userToBan, VkApi api)
        {
            var r = api.Account.BanUser(userToBan.Id);

            return(r);
        }