Ejemplo n.º 1
0
        public async Task <Result> Create(NewChapterDto data)
        {
            var result = new Result();

            if (string.IsNullOrWhiteSpace(data.Title))
            {
                result.IsSuccess = false;
                result.Message   = "Chapter title is required";
            }
            else if (string.IsNullOrWhiteSpace(data.Contents))
            {
                result.IsSuccess = false;
                result.Message   = "Chapter content is required";
            }
            else if (data.ChapterNumber == 0)
            {
                result.IsSuccess = false;
                result.Message   = "Chapter number is required";
            }
            else if (data.NovelId == 0)
            {
                result.IsSuccess = false;
                result.Message   = "Novel ID is required";
            }
            else
            {
                int novelId       = data.NovelId;
                int chapterNumber = data.ChapterNumber;
                var novel         = await _dbContext.Novel.GetSingleFilteredByAsync(m => m.NovelId == novelId);

                var existingChapter = await _dbContext.NovelChapter.GetSingleFilteredByAsync(m => m.ChapterNumber == chapterNumber && m.NovelId == novelId);

                if (existingChapter != null)
                {
                    result.IsSuccess = false;
                    result.Message   = $"Chapter number {data.ChapterNumber} already exist in novel";
                }
                else if (novel == null)
                {
                    result.IsSuccess = false;
                    result.Message   = $"Novel with ID ${data.NovelId} does not exist";
                }
                else
                {
                    var chapter = _mapper.Map <NovelChapter>(data);
                    result = await _dbContext.NovelChapter.Insert(chapter);

                    if (result.IsSuccess)
                    {
                        result.Message = "Chapter added successfully!";
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        public async Task CreateNew_InvalidData_ShouldReturnFalse()
        {
            var chapter = new NewChapterDto
            {
                ChapterNumber = 6,
                Contents      = "",
                IsPublished   = false,
                NovelId       = 1,
                Title         = ""
            };

            var result = await _chapterService.Create(chapter);

            Assert.IsFalse(result.IsSuccess);
        }
Ejemplo n.º 3
0
        public async Task CreateNew_ValidData_ShouldReturnTrue()
        {
            var chapter = new NewChapterDto
            {
                ChapterNumber = 6,
                Contents      = "CreateNew_ValidData_ShouldReturnTrue",
                IsPublished   = false,
                NovelId       = 1,
                Title         = "CreateNew_ValidData_ShouldReturnTrue"
            };

            var result = await _chapterService.Create(chapter);

            var novelChapters = await _chapterService.ByNovelId(1);

            var chapterFromDb = novelChapters.FirstOrDefault(m => m.Title == "CreateNew_ValidData_ShouldReturnTrue");

            Assert.IsTrue(result.IsSuccess);
            Assert.IsNotNull(chapterFromDb);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Post([FromBody] NewChapterDto data)
        {
            var result = await _chapterService.Create(data);

            return(new JsonResult(result));
        }