예제 #1
0
        public IActionResult Archive(long id, int pageNumber = 1)
        {
            HomePostViewModel homePostVM = new HomePostViewModel()
            {
                Posts      = _db.Posts.Include(p => p.Category).Where(p => p.CategoryId == id && p.ShowOnHome).ToList(),
                Categories = _db.Categories.Include(c => c.Posts).ToList()
            };
            StringBuilder param = new StringBuilder();

            param.Append("/Customer/Home/Archive/" + id + "?pageNumber=:");

            var count = homePostVM.Posts.Count;

            homePostVM.Posts = homePostVM.Posts.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();

            homePostVM.PagingInfo = new PagingInfo()
            {
                Curpage     = pageNumber,
                ItemPerPage = pageSize,
                TotalItems  = count,
                urlParam    = param.ToString()
            };

            return(View(homePostVM));
        }
예제 #2
0
        public ActionResult Register([FromBody] HomePostViewModel home)
        {
            try
            {
                var currentUserID = 0l;
                var re            = Request;
                var headers       = re.Headers;

                if (headers.ContainsKey("CurrentUserID"))
                {
                    currentUserID = long.Parse(headers.GetCommaSeparatedValues("CurrentUserID").FirstOrDefault());
                }

                var homeNameAlreadyExists = new BaseCRUDService(0).Any <HomePostViewModel>(x => x.Name == home.Name);

                if (homeNameAlreadyExists)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, "This home name is already taken."));
                }

                home = new BaseCRUDService(currentUserID).Save(home);
                return(Ok(home));
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
예제 #3
0
        public ActionResult Login([FromBody] HomePostViewModel home)
        {
            try
            {
                var currentUserID = 0l;
                var re            = Request;
                var headers       = re.Headers;

                if (headers.ContainsKey("CurrentUserID"))
                {
                    currentUserID = long.Parse(headers.GetCommaSeparatedValues("CurrentUserID").FirstOrDefault());
                }

                home = new BaseCRUDService(currentUserID).GetEntity <HomePostViewModel>(x => x.Name == home.Name && x.Password == home.Password);

                if (home != null)
                {
                    return(Ok(home));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
예제 #4
0
        public ActionResult Post(int postId)
        {
            Post currentPost = postService.GetPost(postId);

            if (currentPost == null)
            {
                string url = "test";
                if (Url != null) // при юнит-тестирование будет равняться null
                {
                    url = Url.Home();
                }

                return(Redirect(url));
            }

            PostPagingInfo pagingInfo = postService.GetPostPagingInfo(postId);

            HomePostViewModel model = new HomePostViewModel
            {
                PagingInfo = pagingInfo,
                Post       = currentPost
            };

            TempData["fullpost"] = 1;
            return(View(model));
        }
예제 #5
0
 public HomeController(ApplicationDbContext db)
 {
     _db = db;
     HomePostViewModel = new HomePostViewModel()
     {
         Categories = _db.Categories.Include(c => c.Posts).Where(c => c.ShowOnHome).ToList(),
         Posts      = _db.Posts.Include(p => p.Category).Where(p => p.ShowOnHome).ToList(),
         Slides     = _db.Slides.Where(s => s.ShowOnHome).ToList(),
         CommentVM  = new List <CommentViewModel>()
     };
 }
예제 #6
0
        public async Task <IActionResult> Login(HomePostViewModel home)
        {
            home.ConfirmPassword = home.Password;
            ModelState.Clear();

            if (string.IsNullOrEmpty(home.Name))
            {
                ModelState.AddModelError("Name", "Home name field is required.");
            }
            else if (string.IsNullOrEmpty(home.Password))
            {
                ModelState.AddModelError("Password", "Password field is required.");
            }
            else
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Login)}";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, home))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            home = JsonConvert.DeserializeObject <HomePostViewModel>(content);

                            if (home != null)
                            {
                                HttpContext.Session.SetString("HomeID", home.ID.ToString());
                                HttpContext.Session.SetString("HomeName", home.Name.ToString());

                                await SetUserToCurrentHome(home.ID);

                                return(RedirectToAction("Index", "Home"));
                            }
                            else
                            {
                                ModelState.AddModelError("", "Home name or password is wrong.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "Home name or password is wrong.");
                        }
                    }
                }
            }

            return(View());
        }
        public async Task <IViewComponentResult> InvokeAsync()
        {
            List <HomePostViewModel> posts = new List <HomePostViewModel>();

            List <PostModel> listaPosts = new List <PostModel>();

            listaPosts = await _context.Post.ToListAsync();

            foreach (var item in listaPosts)
            {
                HomePostViewModel post = new HomePostViewModel();
                post.Post    = item;
                post.Usuario = _context.Usuario.First(x => x.Id == item.IdUsuario);
                posts.Add(post);
            }

            //var posts = await _context.Post.ToListAsync();
            return(View(posts));
        }
예제 #8
0
        /* public async Task<IViewComponentResult> InvokeAsync(int IdPost)
         * {
         *   var comentarios = await _context.Comment.Where(x => x.IdPost == IdPost).ToListAsync();
         *   return View(comentarios);
         * }*/

        public async Task <IViewComponentResult> InvokeAsync(int IdPost)
        {
            List <HomePostViewModel> posts = new List <HomePostViewModel>();

            List <Comment> comentarios = new List <Comment>();

            comentarios = await _context.Comment.Where(x => x.IdPost == IdPost).ToListAsync();

            foreach (var item in comentarios)
            {
                HomePostViewModel post = new HomePostViewModel();
                post.Comentario = item;
                post.Usuario    = _context.Usuario.First(x => x.Id == item.IdUsuario);
                posts.Add(post);
            }

            //var posts = await _context.Post.ToListAsync();
            return(View(posts));
        }
예제 #9
0
        public ActionResult AddPost(HomePostViewModel post, HttpPostedFileBase[] file)
        {
            var ctx    = new OruBloggenDbContext();
            var userID = User.Identity.GetUserId();

            if (!string.IsNullOrEmpty(post.AddPostViewModel.PostTitle) && !string.IsNullOrEmpty(post.AddPostViewModel.PostText))
            {
                ctx.Posts.Add(new PostModel
                {
                    PostTitle      = post.AddPostViewModel.PostTitle,
                    PostText       = post.AddPostViewModel.PostText,
                    PostDate       = DateTime.Now,
                    PostFormal     = post.AddPostViewModel.PostFormal,
                    PostUserID     = userID,
                    PostCategoryID = int.Parse(post.AddPostViewModel.PostCategory)
                });

                ctx.SaveChanges();

                if (file != null)
                {
                    foreach (var oneFile in file)
                    {
                        SaveFile(oneFile);
                    }
                }
            }
            NotificationController notificationController = new NotificationController();

            notificationController.SendPostPm(userID, post.AddPostViewModel.PostTitle, post.AddPostViewModel.PostText, DateTime.Now, post.AddPostViewModel.PostFormal, int.Parse(post.AddPostViewModel.PostCategory));

            if (post.AddPostViewModel.PostFormal)
            {
                return(RedirectToAction("FormalPost"));
            }

            else
            {
                return(RedirectToAction("InformalPost"));
            }
        }
예제 #10
0
        public async Task <IActionResult> Register(HomePostViewModel home)
        {
            if (ModelState.IsValid)
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Register)}";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, home))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            home = JsonConvert.DeserializeObject <HomePostViewModel>(content);
                        }
                        else
                        {
                            ModelState.AddModelError("Name", "This home name is already taken.");
                            return(View(home));
                        }
                    }
                }

                ModelState.Clear();

                HttpContext.Session.SetString("HomeID", home.ID.ToString());
                HttpContext.Session.SetString("HomeName", home.Name.ToString());

                await SetUserToCurrentHome(home.ID);

                return(RedirectToAction("Index", "Home"));
            }

            return(View());
        }
예제 #11
0
        public IActionResult Post(int Id)
        {
            if (Id == 0)
            {
                return(NotFound());
            }

            var post = _postRepository.GetPost(Id);

            if (post == null)
            {
                return(NotFound());
            }

            var viewModel = new HomePostViewModel();

            viewModel.Author   = post.ApplicationUser.FirstName + " " + post.ApplicationUser.LastName;
            viewModel.Body     = post.Body;
            viewModel.Title    = post.Title;
            viewModel.Category = post.Category.CategoryName;
            viewModel.ImageURL = post.ImageUrl;

            return(View(viewModel));
        }