Ejemplo n.º 1
0
        void OnCommit()
        {
            DbConversation.UsingTransaction(() =>
            {
                if (EditMode == EditMode.Add)
                {
                    DbConversation.Insert(CurrentEdit);
                    EventAggregator.GetEvent <UserAddedEvent>().Publish(CurrentEdit);
                }
                else
                {
                    foreach (var user in _editedUsers)
                    {
                        if (CurrentEdit.Name != null)
                        {
                            user.Name = CurrentEdit.Name;
                        }
                        if (CurrentEdit.UserRole != null)
                        {
                            user.UserRole = CurrentEdit.UserRole;
                        }
                        EventAggregator.GetEvent <UserChangedEvent>().Publish(user);
                    }
                }
            });

            if (_navigationJournal != null)
            {
                _navigationJournal.GoBack();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Open new conversation for AccessRequest
        /// </summary>
        /// <param name="accessRequestId">Access request identifier</param>
        /// <param name="requesterId">Unique identifier of requester</param>
        /// <param name="receiverId">Unique identifier of requester conversation messages</param>
        /// <param name="subject">Subject of created conversation</param>
        /// <param name="message">Message of created conversation</param>
        /// <returns>New conversation</returns>
        public Conversation OpenConversationFor(long accessRequestId, string requesterId, string receiverId,
                                                string subject, string message)
        {
            var dbAccessRequest = _accessRequestRepository.Find(f => f.Id == accessRequestId);

            var dbRequester = _userRepository.Find(f => f.Id.ToString() == requesterId);
            var dbReceiver  = _userRepository.Find(f => f.Id.ToString() == receiverId);

            var newConversation = new DbConversation();

            newConversation.Request   = dbAccessRequest;
            newConversation.Requester = dbRequester;
            newConversation.Receiver  = dbReceiver;
            newConversation.Status    = DbAccessRequestStatus.Open;
            newConversation.HasRecieverUnreadMessages = true;
            _conversationRepository.Insert(newConversation);

            //create first initial message
            var newMessage = new DbMessage();

            newMessage.CreationDate = System.DateTime.Now;
            newMessage.Sender       = dbRequester;
            newMessage.Receiver     = dbReceiver;
            newMessage.Text         = message;
            newMessage.Conversation = newConversation;
            _messagesRepository.Insert(newMessage);

            var mappedConversation = Mapper.Map(newConversation, new Conversation());

            return(mappedConversation);
        }
Ejemplo n.º 3
0
 public void Save()
 {
     if (!SuccessfullySaved(() => DbConversation.Insert(Element.UserRole)))
     {
         return;
     }
     EventAggregator.Publish(new UserRoleChangedEvent(Element.UserRole));
     TryClose();
 }
        public void DeclineConversationTest()
        {
            //Arrange
            var accessRequest = new DbAccessRequest()
            {
                Id = 1
            };

            var userStore = new List <DbUser>();
            var user1Guid = Guid.NewGuid();
            var user2Guid = Guid.NewGuid();

            userStore.Add(new DbUser()
            {
                Id = user1Guid
            });
            userStore.Add(new DbUser()
            {
                Id = user2Guid
            });

            _usersRepositoryMock.Setup(s => s.Find(It.IsAny <Expression <Func <DbUser, bool> > >()))
            .Returns <Expression <Func <DbUser, bool> > >(expr =>
            {
                return(userStore.FirstOrDefault(expr.Compile()));
            });


            var conversation = new DbConversation()
            {
                HasRecieverUnreadMessages = true,
                Id        = 1,
                Receiver  = userStore[1],
                Requester = userStore[0],
                Request   = accessRequest,
                Status    = DbAccessRequestStatus.Open
            };

            _conversationRepositoryMock.Setup(s => s.Find(It.IsAny <Expression <Func <DbConversation, bool> > >()))
            .Returns <Expression <Func <DbConversation, bool> > >(expr =>
            {
                return(conversation);
            });
            _conversationRepositoryMock.Setup(s => s.Update(It.IsAny <DbConversation>())).Callback <DbConversation>(e =>
            {
            });

            var service = InitService();

            //Act
            service.DeclineConversation(conversation.Id, "some reason");

            //Assert
            Assert.IsNotNull(conversation);
            Assert.AreEqual(conversation.Status, DbAccessRequestStatus.Declined);
            Assert.AreEqual(conversation.StatusReason, "some reason");
        }
        public void GetConversationByIdTest()
        {
            //Arrange
            var accessRequest = new DbAccessRequest()
            {
                Id = 1
            };

            var userStore = new List <DbUser>();
            var user1Guid = Guid.NewGuid();
            var user2Guid = Guid.NewGuid();

            userStore.Add(new DbUser()
            {
                Id = user1Guid
            });
            userStore.Add(new DbUser()
            {
                Id = user2Guid
            });

            var conversationStore = new List <DbConversation>();
            var conversation      = new DbConversation()
            {
                HasRecieverUnreadMessages = true,
                Id        = 1,
                Receiver  = userStore[1],
                Requester = userStore[0],
                Request   = accessRequest,
                Status    = DbAccessRequestStatus.Open
            };

            conversationStore.Add(conversation);
            _conversationRepositoryMock.Setup(s => s.Find(It.IsAny <Expression <Func <DbConversation, bool> > >()))
            .Returns <Expression <Func <DbConversation, bool> > >(expr =>
            {
                return(conversationStore.FirstOrDefault(expr.Compile()));
            });

            var service = InitService();

            //Act
            var foundConversation = service.GetConversationById(1);


            //Assert
            Assert.IsNotNull(foundConversation);
            Assert.AreEqual(foundConversation.Id, 1);
        }
Ejemplo n.º 6
0
        public PmsTerminal ClaimTerminal(uint terminalId)
        {
            if (terminalId == 0)
            {
                throw new InvalidTerminalIdException();
            }

            var terminal = DbConversation.GetById <Terminal>(terminalId);

            if (terminal == null)
            {
                throw new TerminalNotFoundException();
            }

            return(new PmsTerminal(WorkbenchProvider)
            {
                Terminal = terminal
            });
        }
Ejemplo n.º 7
0
        public PmsWorkbench ClaimWorkbench(uint waiterId)
        {
            if (waiterId == 0)
            {
                throw new InvalidWaiterIdException();
            }

            var waiter = DbConversation.GetById <Waiter>(waiterId);

            if (waiter == null)
            {
                throw new WaiterNotFoundException();
            }

            return(new PmsWorkbench(TableProvider)
            {
                Waiter = waiter
            });
        }
Ejemplo n.º 8
0
        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            var userRoles = GetUserRoles(navigationContext).ToList();

            if (userRoles.Any())
            {
                DbConversation.UsingTransaction(() =>
                {
                    EditMode  = EditMode.Edit;
                    var first = true;
                    foreach (var userRoleId in userRoles)
                    {
                        var userRole = DbConversation.GetById <UserRole>(userRoleId);
                        Name         = EditItemsViewModel.GetTargetValue(first, CurrentEdit.Name, userRole.Name, null);
                        _editedUserRoles.Add(userRole);
                        first = false;
                    }
                });
            }
            _navigationJournal = navigationContext.NavigationService.Journal;
        }
Ejemplo n.º 9
0
 protected override BindableCollection <UserRoleRowViewModel> CreateElementList()
 {
     return(new BindableCollection <UserRoleRowViewModel>(DbConversation
                                                          .Query(new AllUserRolesQuery())
                                                          .Select(x => new UserRoleRowViewModel(x))));
 }
Ejemplo n.º 10
0
 public EditUserRoleViewModel(int userRoleId)
 {
     DbConversation.UsingTransaction(() =>
                                     Element = new UserRoleModel(DbConversation.GetById <UserRole>(userRoleId)));
     DisplayName = Strings.EditUserRole_EditUserRole;
 }
        public void AddNewMessageToConversationTest()
        {
            //Arrange
            var accessRequest = new DbAccessRequest()
            {
                Id = 1
            };

            var userStore = new List <DbUser>();
            var user1Guid = Guid.NewGuid();
            var user2Guid = Guid.NewGuid();

            userStore.Add(new DbUser()
            {
                Id = user1Guid
            });
            userStore.Add(new DbUser()
            {
                Id = user2Guid
            });

            _usersRepositoryMock.Setup(s => s.Find(It.IsAny <Expression <Func <DbUser, bool> > >()))
            .Returns <Expression <Func <DbUser, bool> > >(expr =>
            {
                return(userStore.FirstOrDefault(expr.Compile()));
            });


            var conversation = new DbConversation()
            {
                HasRecieverUnreadMessages = true,
                Id        = 1,
                Receiver  = userStore[1],
                Requester = userStore[0],
                Request   = accessRequest,
                Status    = DbAccessRequestStatus.Open
            };

            _conversationRepositoryMock.Setup(s => s.Find(It.IsAny <Expression <Func <DbConversation, bool> > >()))
            .Returns <Expression <Func <DbConversation, bool> > >(expr =>
            {
                return(conversation);
            });

            var messages = new List <DbMessage>();

            _messageRepositoryMock.Setup(s => s.Insert(It.IsAny <DbMessage>())).Callback <DbMessage>(e =>
            {
                e.Id = 1;
                messages.Add(e);
            });

            var service = InitService();

            //Act
            var message = service.AddNewMessageToConversation(conversation.Id, Mapper.Map <User>(userStore[0]),
                                                              Mapper.Map <User>(userStore[1]), "some text", true);


            //Assert
            Assert.IsNotNull(message);
            Assert.IsTrue(messages.Count > 0);
            Assert.AreEqual(messages[0].Id, message.Id);
        }
        public void GetMessagesTest()
        {
            //Arrange
            var accessRequest = new DbAccessRequest()
            {
                Id = 1
            };
            var user1 = new DbUser()
            {
                Id = Guid.NewGuid()
            };
            var user2 = new DbUser()
            {
                Id = Guid.NewGuid()
            };

            var subjectText = "Test request subject";
            var messageText = "Test request message";

            var conversation = new DbConversation()
            {
                HasRecieverUnreadMessages = true,
                Id        = 1,
                Receiver  = user2,
                Requester = user1,
                Request   = accessRequest,
                Status    = DbAccessRequestStatus.Open
            };

            _conversationRepositoryMock.Setup(a => a.Find(It.IsAny <Expression <Func <DbConversation, bool> > >()))
            .Returns <Expression <Func <DbConversation, bool> > >(expr =>
            {
                return(conversation);
            });


            var messagesStore = new List <DbMessage>();

            messagesStore.Add(new DbMessage()
            {
                Id           = 1,
                Conversation = conversation,
                CreationDate = DateTime.Now,
                Receiver     = user2,
                Sender       = user1,
                Text         = string.Concat(subjectText, "\n\r", messageText)
            });
            messagesStore.Add(new DbMessage()
            {
                Id           = 1,
                Conversation = conversation,
                CreationDate = DateTime.Now,
                Receiver     = user1,
                Sender       = user2,
                Text         = string.Concat("RE: ", subjectText, "\n\r", messageText)
            });

            _messageRepositoryMock.Setup(a => a.FindCollection(It.IsAny <Expression <Func <DbMessage, bool> > >()))
            .Returns <Expression <Func <DbMessage, bool> > >(expr =>
            {
                return(messagesStore.Where(expr.Compile()));
            });

            var service = InitService();

            //Act
            var messages = service.GetMessages(conversation.Id, user2.Id).ToList();

            //Assert
            Assert.IsNotNull(messages);
            Assert.IsTrue(messages.Count > 0);
            Assert.IsTrue(messages.All(a => a.Sender != null));
            Assert.IsTrue(messages.All(a => a.Receiver != null));
            Assert.IsTrue(messages.Any(a => a.Sender.Id == user1.Id.ToString()));
            Assert.IsTrue(messages.Any(a => a.Receiver.Id == user1.Id.ToString()));
            Assert.IsTrue(messages.Any(a => a.Sender.Id == user2.Id.ToString()));
            Assert.IsTrue(messages.Any(a => a.Receiver.Id == user2.Id.ToString()));
        }