public IActionResult CreateWebtoon() { var viewModel = new CreateWebtoonInputModel(); viewModel.Genres = this.genresService.GetAllAsKeyValuePairs(); return(this.View(viewModel)); }
public async Task <IActionResult> CreateWebtoon(CreateWebtoonInputModel input) { if (!this.ModelState.IsValid) { input.Genres = this.genresService.GetAllAsKeyValuePairs(); return(this.View(input)); } var webRootPath = this.webHostEnvironment.WebRootPath; input.AuthorId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); await this.webtoonsService.CreateWebtoonAsync(input, webRootPath); return(this.Redirect("/")); }
public async Task CreateWebtoonAsyncWorksCorrectly() { var webtoons = new List <Webtoon>(); var mockWebtoonsRepo = new Mock <IWebtoonsRepository>(); mockWebtoonsRepo.Setup(x => x.WebtoonExists(It.IsAny <string>())).Returns(false); mockWebtoonsRepo.Setup(x => x.GetWebtoonsCount()).Returns(0); mockWebtoonsRepo.Setup(x => x.AddAsync(It.IsAny <Webtoon>())).Callback((Webtoon webtoon) => webtoons.Add(webtoon)); var mockIFormFile = new Mock <IFormFile>(); var content = "Fake content"; var fileName = "test.pdf"; var contentType = ".exe"; var ms = new MemoryStream(); var writer = new StreamWriter(ms); writer.Write(content); writer.Flush(); ms.Position = 0; mockIFormFile.Setup(x => x.OpenReadStream()).Returns(ms); mockIFormFile.Setup(x => x.ContentType).Returns(contentType); mockIFormFile.Setup(x => x.FileName).Returns(fileName); mockIFormFile.Setup(x => x.Length).Returns(ms.Length); var input = new CreateWebtoonInputModel() { AuthorId = "pesho", Cover = mockIFormFile.Object, GenreId = "action", Synopsis = "this should work", Title = "Darkness", UploadDay = MyWebtoonWebProject.Data.Models.Enums.DayOfWeek.Friday, }; var webRootPath = $@"C:\MyWebtoonWebProject\MyWebtoonWebProject\TestResults"; var service = new WebtoonsService(mockWebtoonsRepo.Object, null, null, null, null, null, null, null, null, null); await service.CreateWebtoonAsync(input, webRootPath); Assert.Single(webtoons); Assert.Equal("pesho", webtoons.First().AuthorId); Assert.Equal("action", webtoons.First().GenreId); Assert.Equal("this should work", webtoons.First().Synopsis); Assert.Equal("Darkness", webtoons.First().Title); Assert.Equal("Friday", webtoons.First().UploadDay.ToString()); Assert.Equal("Darkness/cover.pdf", webtoons.First().CoverPhoto); }
public async Task CreateWebtoonAsync(CreateWebtoonInputModel input, string webRootPath) { if (this.webtoonsRepository.WebtoonExists(input.Title)) { throw new ArgumentException("Webtoon already exists!"); } string topFolder = $@"{webRootPath}\Webtoons"; string webtoonFolder = Path.Combine(topFolder, input.Title); Directory.CreateDirectory(webtoonFolder); var extention = Path.GetExtension(input.Cover.FileName).TrimStart('.'); string coverPhotoPath = webtoonFolder + $"/cover.{extention}"; using (FileStream fs = new FileStream(coverPhotoPath, FileMode.Create)) { await input.Cover.CopyToAsync(fs); } var webtoon = new Webtoon { Title = input.Title, Synopsis = input.Synopsis, CoverPhoto = input.Title + $"/cover.{extention}", GenreId = input.GenreId, UploadDay = input.UploadDay, AuthorId = input.AuthorId, CreatedOn = DateTime.UtcNow, Completed = false, TitleNumber = (this.webtoonsRepository.GetWebtoonsCount() + 1).ToString(), }; await this.webtoonsRepository.AddAsync(webtoon); await this.webtoonsRepository.SaveChangesAsync(); }