public ActionResult Post(int id, int? pagina) { var conexao = new ConexaoBanco(); var viewModel = new DetalhesPostViewModel(); var post = (from p in conexao.Posts where p.Id == id select p).FirstOrDefault(); if (post == null) { throw new Exception(string.Format("Post Código {0} não encontrado")); } preencherViewModel(viewModel, post, pagina); viewModel.Tags = (from p in post.PostTags select p.sIdTag).ToList(); return View(viewModel); }
public ActionResult Post(DetalhesPostViewModel viewModel) { var conexao = new ConexaoBanco(); var post = (from p in conexao.Posts where p.Id == viewModel.id select p).FirstOrDefault(); if (ModelState.IsValid) { if (post == null) { throw new Exception(string.Format("Post código {0} não encontrado.", viewModel.id)); } var comentario = new Comentario(); comentario.bAdmPost = HttpContext.User.Identity.IsAuthenticated; comentario.lDescricao = viewModel.ComentarioDescricao; comentario.sEmail = viewModel.ComentarioEmail; comentario.idPost = viewModel.id; comentario.sNome = viewModel.ComentarioNome; comentario.sPaginaWeb = viewModel.ComentarioPaginaWeb; comentario.dDataHora = DateTime.Now; try { conexao.Comentarios.Add(comentario); conexao.SaveChanges(); return Redirect(Url.Action("Post", new { ano = post.dDataPublicacao.Year, mes = post.dDataPublicacao.Month, dia = post.dDataPublicacao.Day, titulo = post.sTitulo, id = post.Id }) + "#comentarios"); } catch (Exception e) { ModelState.AddModelError("", e.Message); } } preencherViewModel(viewModel, post, null); return View(viewModel); }
private static void preencherViewModel(DetalhesPostViewModel viewModel, Post post, int? pagina) { viewModel.id = post.Id; viewModel.Titulo = post.sTitulo; viewModel.Autor = post.sAutor; viewModel.DataPublicacao = post.dDataPublicacao; viewModel.HoraPublicacao = post.dDataPublicacao; viewModel.Visivel = post.bVisivel; viewModel.Descricao = post.sDescricao; viewModel.Resumo = post.sResumo; viewModel.QtdComentarios = post.Comentarios.Count(); viewModel.Descricao = post.sDescricao; //Adicionar tags viewModel.Tags = post.PostTags.Select(x => x.sIdTag).ToList(); var paginaCorreta = pagina.GetValueOrDefault(1); var registroPorPagina = 10; var qtdeRegistros = post.Comentarios.Count(); var indiceDaPagina = paginaCorreta - 1; var qtdeRegistrosPular = (indiceDaPagina * registroPorPagina); // Arendonta para cima var qtdePaginas = Math.Ceiling((decimal)qtdeRegistros / (decimal)registroPorPagina); viewModel.iLComentarios = (from p in post.Comentarios orderby p.dDataHora descending select p) .Skip(qtdeRegistrosPular).Take(registroPorPagina).ToList(); viewModel.iPaginaAtual = paginaCorreta; viewModel.iTotalPaginas = (int)qtdePaginas; }