public async Task <IActionResult> Post([FromForm] IFormCollection form) { if (form == null) { return(BadRequest("Parâmetro nulo")); } int postagemId = 0; int.TryParse(form["id"], out postagemId); string titulo = form["titulo"]; string texto = form["texto"]; string urlImagem = form["urlImagem"]; string categoria = form["categoria"]; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var postagem = new Postagem(); postagem.Id = postagemId; postagem.Titulo = titulo; postagem.Texto = texto; postagem.UrlImagem = urlImagem; if (!String.IsNullOrEmpty(categoria)) { Object cat = null; Enum.TryParse(typeof(CategoriaPostagem), categoria, true, out cat); if (cat != null) { postagem.Categoria = (CategoriaPostagem)cat; } } var usuario = this.ObterUsuario(); postagem.Autor.Id = usuario.Id; postagem.Autor.Email = usuario.Email; postagem.UrlImagem = await SalvarImagemAsync(form); if (String.IsNullOrEmpty(postagem.UrlImagem) && form.Files.Count > 0) { return(BadRequest("Falha ao realizar o upload da imagem.")); } var response = await _repository.SalvarAsync(postagem); if (response.HasError) { return(BadRequest(response.ErrorMessages)); } return(CreatedAtAction(actionName: nameof(Get), routeValues: new { categoria = postagem.Categoria }, value: response.Return)); }
public async Task <IActionResult> Delete(int id, [FromBody] PostagemViewModel postagemVm) { if (postagemVm == null) { return(BadRequest("Parâmetro nulo")); } if (postagemVm.Id <= 0) { return(BadRequest("Identificador inválido")); } var postagem = new Postagem(); postagem.Id = postagemVm.Id; postagem.UrlImagem = postagemVm.UrlImagem; var usuario = ObterUsuario(); if (!String.IsNullOrEmpty(postagem.UrlImagem)) { Uri uri; if (!Uri.TryCreate(postagem.UrlImagem, UriKind.Absolute, out uri)) { uri = new Uri(postagem.UrlImagem); } string fileName = Path.GetFileName(uri.LocalPath); await _uploadFile.DeleteFileAsync(usuario, fileName); } var response = await _repository.ExcluirAsync(postagem); if (response.HasError) { return(BadRequest(response.ErrorMessages)); } return(Ok(response.Return)); }
public async Task <Response <Postagem> > ExcluirAsync(Postagem postagem) { var resp = new Response <Postagem>(); using (var client = this._context.GetClientInstance()) { DeleteItemRequest request = new DeleteItemRequest { TableName = _context.TableName, Key = new Dictionary <string, AttributeValue> { { "id", new AttributeValue { N = postagem.Id.ToString() } }, { "tipo", new AttributeValue { S = "postagem" } } } }; try { DeleteItemResponse response = await client.DeleteItemAsync(request); if (response.HttpStatusCode != HttpStatusCode.OK) { resp.ErrorMessages.Add("Falha ao deletar postagem."); _logger.LogError("Falha ao deletar postagem."); } } catch (Exception e) { resp.ErrorMessages.Add(e.Message); _logger.LogError(e.Message); } return(resp); } }
public async Task <Response <Postagem> > SalvarAsync(Postagem postagem) { var response = new Response <Postagem>(); if (postagem == null) { response.ErrorMessages.Add("Arquivo obrigatório."); return(response); } using (var client = this._context.GetClientInstance()) { try { StringBuilder updateExpr = new StringBuilder("SET "); var exprAttrValues = new Dictionary <string, AttributeValue>(); var exprAttrNames = new Dictionary <string, string>(); if (postagem.Id < 1) { postagem.Id = (Int32)DateTimeOffset.UtcNow.ToUnixTimeSeconds(); } postagem.DataAtualizacao = DateTime.Now; exprAttrValues.Add(":dtAtualizacao", new AttributeValue { S = postagem.DataAtualizacao.ToString("dd/MM/yyyy hh:mm:ss") }); updateExpr.Append(" #dtAtualizacao = :dtAtualizacao,"); exprAttrNames.Add("#dtAtualizacao", "dt-atualizacao"); if (postagem.Autor != null) { exprAttrValues.Add(":autorId", new AttributeValue { N = postagem.Autor.Id.ToString() }); updateExpr.Append(" #autorId = :autorId,"); exprAttrNames.Add("#autorId", "autor-id"); exprAttrValues.Add(":autorEmail", new AttributeValue { S = postagem.Autor.Email }); updateExpr.Append(" #autorEmail = :autorEmail,"); exprAttrNames.Add("#autorEmail", "autor-email"); } if (!String.IsNullOrEmpty(postagem.Titulo)) { exprAttrValues.Add(":titulo", new AttributeValue { S = postagem.Titulo }); updateExpr.Append(" #titulo = :titulo,"); exprAttrNames.Add("#titulo", "titulo"); } if (!String.IsNullOrEmpty(postagem.Texto)) { exprAttrValues.Add(":texto", new AttributeValue { S = postagem.Texto }); updateExpr.Append(" #texto = :texto,"); exprAttrNames.Add("#texto", "texto"); } if (!String.IsNullOrEmpty(postagem.UrlImagem)) { exprAttrValues.Add(":url", new AttributeValue { S = postagem.UrlImagem }); updateExpr.Append(" #url = :url,"); exprAttrNames.Add("#url", "url-imagem"); } exprAttrValues.Add(":cat", new AttributeValue { S = postagem.Categoria.ToString() }); updateExpr.Append(" #cat = :cat,"); exprAttrNames.Add("#cat", "categoria"); var request = new UpdateItemRequest { TableName = _context.TableName, Key = new Dictionary <string, AttributeValue> { { "tipo", new AttributeValue { S = $"postagem" } }, { "id", new AttributeValue { N = postagem.Id.ToString() } } }, ExpressionAttributeNames = exprAttrNames, ExpressionAttributeValues = exprAttrValues, UpdateExpression = updateExpr.ToString().Substring(0, updateExpr.ToString().Length - 1) }; var updResp = await client.UpdateItemAsync(request); } catch (Exception e) { response.Return = postagem; response.ErrorMessages.Add("Falha ao salvar postagem."); response.ErrorMessages.Add(e.Message); _logger.LogError(e.Message); } return(response); } }
private List <Postagem> ExtractFileFrom(List <Dictionary <string, AttributeValue> > dictionary) { List <Postagem> list = new List <Postagem>(); Postagem postagem = null; foreach (var item in dictionary) { postagem = new Postagem(); foreach (KeyValuePair <string, AttributeValue> kvp in item) { string attributeName = kvp.Key; AttributeValue value = kvp.Value; if (attributeName == "id") { int id = 0; int.TryParse(value.N, out id); postagem.Id = id; } else if (attributeName == "autor-id") { int autorId = 0; int.TryParse(value.N, out autorId); postagem.Autor.Id = autorId; } else if (attributeName == "autor-email") { postagem.Autor.Email = value.S; } else if (attributeName == "titulo") { postagem.Titulo = value.S; } else if (attributeName == "texto") { postagem.Texto = value.S; } else if (attributeName == "url-imagem") { postagem.UrlImagem = value.S; } else if (attributeName == "categoria") { Object categoria = null; Enum.TryParse(typeof(CategoriaPostagem), value.S, true, out categoria); if (categoria != null) { postagem.Categoria = (CategoriaPostagem)categoria; } } else if (attributeName == "dt-atualizacao") { DateTime dataAtualizacao; DateTime.TryParseExact(value.S, "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dataAtualizacao); postagem.DataAtualizacao = dataAtualizacao; } } list.Add(postagem); } return(list); }