public ActionResult Post(DetalhesPostViewModel viewModel) { var conexaoBanco = new ConexaoBanco(); if (ModelState.IsValid) { var comentario = new Comentario(); comentario.AdmPost = HttpContext.User.Identity.IsAuthenticated; comentario.Descricao = viewModel.ComentarioDescricao; comentario.DataHora = DateTime.Now; comentario.Email = viewModel.ComentarioEmail; comentario.IdPost = viewModel.Id; comentario.Nome = viewModel.ComentarioNome; comentario.PaginaWeb = viewModel.ComentarioPaginaWeb; conexaoBanco.Comentarios.Add(comentario); try { conexaoBanco.SaveChanges(); return Redirect(Url.Action("Post", new { ano = viewModel.DataPublicacao.Year, mes = viewModel.DataPublicacao.Month, dia = viewModel.DataPublicacao.Day, titulo = viewModel.Titulo, id = viewModel.Id })+"#comentarios"); } catch (Exception exp) { ModelState.AddModelError("", exp.Message); } } preparaDetalhesPostViewModel(viewModel.Id, viewModel.PaginaAtual, viewModel, conexaoBanco); return View(viewModel); }
public ActionResult Post(int id, int? pagina) { var conexaoBanco = new ConexaoBanco(); var viewModel = new DetalhesPostViewModel(); viewModel = preparaDetalhesPostViewModel(id, pagina, viewModel, conexaoBanco); return View(viewModel); }
private static DetalhesPostViewModel preparaDetalhesPostViewModel(int id, int? pagina, DetalhesPostViewModel viewModel, ConexaoBanco conexaoBanco) { var post = (from p in conexaoBanco.Post where p.Id == id select p).FirstOrDefault(); if (post == null) { throw new Exception(string.Format("Post código {0} não encontrado.", id)); } viewModel.Id = post.Id; viewModel.Autor = post.Autor; viewModel.DataPublicacao = post.DataPublicacao; viewModel.Titulo = post.Titulo; viewModel.Resumo = post.Resumo; viewModel.Visivel = post.Visivel; viewModel.QtdeComentarios = post.Comentarios.Count; viewModel.Descricao = post.Descricao; viewModel.Tags = post.PostTag.Select(x => x.TagClass).ToList(); var paginaCorreta = pagina.GetValueOrDefault(1); var indicePagina = paginaCorreta - 1; var itensPorPagina = 10; var comentarios = from p in conexaoBanco.Comentarios where p.IdPost == id orderby p.DataHora descending select p; viewModel.PaginaAtual = paginaCorreta; viewModel.Comentarios = (from p in comentarios.Skip(indicePagina*itensPorPagina).Take(itensPorPagina) select p).ToList(); viewModel.TotalPaginas = (int) Math.Ceiling((double) comentarios.Count()/itensPorPagina); return viewModel; }