예제 #1
0
        public async Task <IActionResult> Delete([FromRoute] UserDialogAddDTO userDialogAddDTO)
        {
            ServiceResponse <bool> serviceResponse = await _dialogService.DeleteUserFromDialogAsync(userDialogAddDTO);

            if (serviceResponse.Success == false)
            {
                return(BadRequest(serviceResponse.Message));
            }
            return(Ok(serviceResponse));
        }
예제 #2
0
        public async Task <IActionResult> Post(UserDialogAddDTO userDialogAddDTO)
        {
            ServiceResponse <int> serviceResponse = await _dialogService.AddUserToDialogAsync(userDialogAddDTO);

            if (serviceResponse.Success == false)
            {
                return(BadRequest(serviceResponse.Message));
            }
            return(Ok(serviceResponse));
        }
예제 #3
0
        public async Task AddUserToDialogAsyncAddsChatEventCallsBotNotifier()
        {
            UserDialogAddDTO userDialogAddDTO = new UserDialogAddDTO();

            _dialogRepositoryMock.Setup(r => r.GetAsync(It.IsAny <int>())).Returns(Task.FromResult(new Dialog()));

            ServiceResponse <int> serviceResponse = await _service.AddUserToDialogAsync(userDialogAddDTO);

            _chatEventRepositoryMock.Verify(r => r.Add(It.IsAny <ChatEvent>()), Times.Once);
            _botNotifierMock.Verify(r => r.NotifyAsync(), Times.Once);
        }
예제 #4
0
        public async Task AddUserToDialogAsyncReturnsServiceResponseWithExMessage_IfErrorOccurs()
        {
            UserDialogAddDTO userDialogAddDTO = new UserDialogAddDTO();

            _dbContextMock.Setup(r => r.SaveChangesAsync(CancellationToken.None)).Callback(() => throw new Exception());

            ServiceResponse <int> serviceResponse = await _service.AddUserToDialogAsync(userDialogAddDTO);

            Assert.False(serviceResponse.Success);
            Assert.NotNull(serviceResponse.Message);
        }
예제 #5
0
        public async Task AddUserToDialogAsyncAddsUserCallsSaveChanges_and_ReturnsServiceResponseWithData()
        {
            UserDialogAddDTO userDialogAddDTO = new UserDialogAddDTO();

            _dialogRepositoryMock.Setup(r => r.GetAsync(It.IsAny <int>())).Returns(Task.FromResult(new Dialog()));

            ServiceResponse <int> serviceResponse = await _service.AddUserToDialogAsync(userDialogAddDTO);

            _dialogRepositoryMock.Verify(r => r.AddUserToDialog(It.IsAny <UserDialog>()), Times.Once);
            _dbContextMock.Verify(r => r.SaveChangesAsync(CancellationToken.None), Times.AtLeast(1));
            Assert.IsAssignableFrom <ServiceResponse <int> >(serviceResponse);
            Assert.True(serviceResponse.Success);
        }
예제 #6
0
        public async Task AddUserToDialogAsyncReturnsServiceResponseWithExMessage_IfDialogIsPrivate()
        {
            UserDialogAddDTO userDialogAddDTO = new UserDialogAddDTO();

            _dialogRepositoryMock.Setup(r => r.GetAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(It.Is <Dialog>(m => m.IsTeteATete == true)));

            ServiceResponse <int> serviceResponse = await _service.AddUserToDialogAsync(userDialogAddDTO);

            _dialogRepositoryMock.Verify(r => r.AddUserToDialog(It.IsAny <UserDialog>()), Times.Never);
            _chatEventRepositoryMock.Verify(r => r.Add(It.IsAny <ChatEvent>()), Times.Never);
            _botNotifierMock.Verify(r => r.NotifyAsync(), Times.Never);
            Assert.False(serviceResponse.Success);
            Assert.NotNull(serviceResponse.Message);
        }
예제 #7
0
        public async Task <ServiceResponse <bool> > DeleteUserFromDialogAsync(UserDialogAddDTO userDialogDTO)
        {
            ServiceResponse <bool> serviceResponse = new ServiceResponse <bool>();

            try
            {
                UserDialog userDialog = await _dialogRepository.GetUserDialogByFKIdAsync(userDialogDTO.UserId, userDialogDTO.DialogId);

                if (userDialog == null)
                {
                    serviceResponse.Success = false;
                    serviceResponse.Message = "Нет такого пользователя";
                    return(serviceResponse);
                }
                var dialog = await _dialogRepository.GetAsync(userDialogDTO.DialogId);

                if (dialog.IsTeteATete)
                {
                    serviceResponse.Success = false;
                    serviceResponse.Message = "Только два пользователя. Нельзя удалить из приватной беседы";
                    return(serviceResponse);
                }
                _dialogRepository.DeleteUserFromDialog(userDialog);
                await _context.SaveChangesAsync();

                _chatEventRepository.Add(new ChatEvent()
                {
                    UserId         = userDialogDTO.UserId,
                    DialogId       = userDialogDTO.DialogId,
                    TypeOfActionId = (int)ActionTypes.UserDeleted
                });
                await _context.SaveChangesAsync();

                _botNotifier.NotifyAsync();

                serviceResponse.Data = true;
            }
            catch (Exception ex)
            {
                serviceResponse.Success = false;
                serviceResponse.Message = ex.Message;
                return(serviceResponse);
            }

            return(serviceResponse);
        }
예제 #8
0
        public async Task <ServiceResponse <int> > AddUserToDialogAsync(UserDialogAddDTO userDialogDTO)
        {
            ServiceResponse <int> serviceResponse = new ServiceResponse <int>();

            try
            {
                var dialog = await _dialogRepository.GetAsync(userDialogDTO.DialogId);

                if (dialog.IsTeteATete)
                {
                    serviceResponse.Success = false;
                    serviceResponse.Message = "Только два пользователя";
                    return(serviceResponse);
                }
                UserDialog userDialog = new UserDialog()
                {
                    DialogId = userDialogDTO.DialogId,
                    UserId   = userDialogDTO.UserId
                };
                _dialogRepository.AddUserToDialog(userDialog);
                await _context.SaveChangesAsync();

                _chatEventRepository.Add(new ChatEvent()
                {
                    UserId         = userDialogDTO.UserId,
                    DialogId       = userDialogDTO.DialogId,
                    TypeOfActionId = (int)ActionTypes.UserAdded
                });
                await _context.SaveChangesAsync();

                _botNotifier.NotifyAsync();

                serviceResponse.Data = userDialog.UserId;
            }
            catch (Exception ex)
            {
                serviceResponse.Success = false;
                serviceResponse.Message = ex.Message + ex.InnerException;
                return(serviceResponse);
            }

            return(serviceResponse);
        }