예제 #1
0
        /// <summary>
        /// Gets the current callback channel and adds it to the collection of all channels.
        /// </summary>
        /// <returns></returns>
        public ChannelWrapper RegisterClient(Message message)
        {
            var manager = new NewsfeedManager();

            string username;
            if (manager.TryGetCurrentUsername(message, out username))
            {
                ChannelWrapper wrapper;

                //If the user is logged and resfresh the page, a new channel will be opened and the old should be removed
                if (this.clients.TryGetValue(username, out wrapper))
                {
                    this.clients.Remove(username);
                }

                var client = OperationContext.Current.GetCallbackChannel<INewsfeedServiceCallback>();

                wrapper = new ChannelWrapper(username, client);
                wrapper.Closed += Connection_Closed;
                wrapper.Faulted += Connection_Closed;

                var usersRepository = new Domain.UserRepository();
                wrapper.User = usersRepository.Get(username);

                this.clients.Add(username, wrapper);

                return wrapper;
            }

            return null;
        }
예제 #2
0
        internal void BlockUser(Domain.User user, Model.Message content)
        {
            var repo = new Domain.UserRepository();
            repo.Block(user.Id, new ObjectId(content.SenderId), content.Username);

            user.BlockedUsers.Add(new BsonDocument
            {
                {"_id", new ObjectId(content.SenderId)},
                {"Username", content.Username}
            });
        }
예제 #3
0
        public void SaveMessage(Model.Message message, Domain.User user)
        {
            var messagesRepo = new Domain.MessageRepository();
            var usersRepo = new Domain.UserRepository();

            //a new message has been sent to the server
            message.SentDate = DateTime.Now;

            message.Username = user.Username;
            message.SenderId = user.Id.ToString();
            message.AvatarId = user.Avatar.ToString();

            //Save the message to the db
            var messageDto = MapClientMessageToDomain(message);

            messagesRepo.InsertMessage(messageDto);

            message.Id = messageDto.Id.ToString();
        }
예제 #4
0
 public UserManager()
 {
     userRepository = new UserRepository();
 }