public async Task <IActionResult> Delete(TutorialPostDto tutorialPostDto, int categoryId) { var response = await _tutorialPostService.DeleteAsync(tutorialPostDto.Id); if (response == null) { return(NotFound()); } if (response.Success) { return(RedirectToAction(nameof(Index), new { categoryId = categoryId })); } ModelState.AddModelError(response.ModelStateErrorKey, response.Message); return(View(tutorialPostDto)); }
public async Task <TutorialPostViewModel> GetEditPostViewModel(int id, TutorialPostDto editedPost = null) { var postToEdit = await _unitOfWork.TutorialPosts.FindByIdAsync(id); if (postToEdit == null) { return(null); } var category = await GetCategoryAsync(postToEdit.TutorialCategoryId); if (category == null) { return(null); } var tags = await _unitOfWork.Tags.GetAllAsync(); var courses = await _unitOfWork.Courses.GetAllAsync(); var post = _mapper.Map <TutorialPostDto>(postToEdit); if (editedPost != null) { post = editedPost; } var viewModel = new TutorialPostViewModel() { CategoryName = category.Name, Post = post, Tags = tags.ToList(), Courses = courses.Select(course => new CourseDto() { Id = course.Id, Name = course.Name }).ToList(), }; return(viewModel); }
public async Task <TutorialPostViewModel> GetNewPostViewModel(int categoryId, TutorialPostDto existingPost = null) { var category = await GetCategoryAsync(categoryId); if (category == null) { return(null); } var tags = await _unitOfWork.Tags.GetAllAsync(); var courses = await _unitOfWork.Courses.GetAllAsync(); var post = new TutorialPostDto() { Category = _mapper.Map <TutorialCategoryDto>(category) }; if (existingPost != null) { existingPost.Category = post.Category; post = existingPost; } var viewModel = new TutorialPostViewModel() { CategoryName = category.Name, Post = post, Tags = tags.ToList(), Courses = courses.Select(course => new CourseDto() { Id = course.Id, Name = course.Name }).ToList(), }; return(viewModel); }
private async Task <bool> IsUrlUniqueInCategory(TutorialPostDto post) { var existingPost = await _unitOfWork.TutorialPosts.FindFirstOrDefaultAsync(x => x.UrlTitle == post.UrlTitle); return(existingPost == null || existingPost?.Id == post.Id); }