public async Task DeleteNoticeBoardThread_InvalidThreadID()
        {
            var requestDto = new DeleteNoticeBoardThreadRequest(
                0
                );

            var exception =
                await Assert.ThrowsAsync <InvalidNoticeBoardRequestException>(() =>
                                                                              _sut.DeleteNoticeBoardThread(requestDto));

            Assert.Equal("Invalid ThreadId", exception.Message);
        }
        public async Task DeleteNoticeBoardThread_SuccessfullyDeleteThread()
        {
            var requestDto = new DeleteNoticeBoardThreadRequest(
                1
                );

            var responseDto = new DeleteNoticeBoardThreadResponse(HttpStatusCode.Accepted);

            _noticeBoardRepoMock.Setup(nb => nb.DeleteNoticeBoardThread(requestDto)).ReturnsAsync(responseDto);

            var noticeBoard = await _sut.DeleteNoticeBoardThread(requestDto);

            Assert.Equal(HttpStatusCode.Accepted, noticeBoard.HttpStatusCode);
        }
        public async Task <DeleteNoticeBoardThreadResponse> DeleteNoticeBoardThread(
            DeleteNoticeBoardThreadRequest request)
        {
            if (request == null)
            {
                throw new InvalidNoticeBoardRequestException("Invalid DeleteNoticeBoardThreadRequest Object");
            }

            if (request.ThreadId == 0)
            {
                throw new InvalidNoticeBoardRequestException("Invalid ThreadId");
            }

            return(await _noticeBoardRepository.DeleteNoticeBoardThread(request));
        }
        public async Task <DeleteNoticeBoardThreadResponse> DeleteNoticeBoardThread(
            DeleteNoticeBoardThreadRequest request)
        {
            try
            {
                var threadToDelete = _noticeBoard.NoticeBoard.Find(request.ThreadId);
                if (threadToDelete != null)
                {
                    _noticeBoard.NoticeBoard.Remove(threadToDelete);
                }
                else
                {
                    throw new InvalidNoticeBoardRequestException("Thread Id not found in database");
                }

                await _noticeBoard.SaveChanges();

                return(new DeleteNoticeBoardThreadResponse(HttpStatusCode.Accepted));
            }
            catch (InvalidNoticeBoardRequestException e)
            {
                return(new DeleteNoticeBoardThreadResponse(HttpStatusCode.BadRequest));
            }
        }
 public async Task <DeleteNoticeBoardThreadResponse> DeleteNoticeBoardThread(
     [FromBody] DeleteNoticeBoardThreadRequest request)
 {
     return(await _service.DeleteNoticeBoardThread(request));
 }