/// <summary>
        /// Returns Jwt token when user logged successfully.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="notifyState">any push state, messages or notifications</param>
        /// <returns></returns>
        private IActionResult JwtAuth([NotNull] AspUser user, UserImpulseState notifyState)
        {
            var identity = _jwtFactory.GenerateClaimsIdentity(user.UserName, user.Id.ToString());

            return(Json(new {
                Result = FeedResult.Success,
                userId = user.Id,
                userName = user.UserName,
                auth_token = _jwtFactory.GenerateEncodedToken(identity),
                expires_in = (int)_jwtOptions.ValidFor.TotalSeconds,
                impulses = notifyState
            }));
        }
        public async Task <UserImpulseState> GetFullInteractionsState(int userId)
        {
            var state    = new UserImpulseState();
            var requests = await _comrades.CountActiveRequests(userId);

            var chatImpulses = await _messages.GetChatImpulses(userId);

            int messageCount = chatImpulses.Sum(m => m.Impulses);

            state.NotifyCount         = requests + messageCount;
            state.ComradeRequestCount = requests;
            state.MessageCount        = messageCount;
            state.ChatImpulses        = chatImpulses;
            return(state);
        }