From f8eeaddaf3ffd23565677530e0c40ae26e3503a3 Mon Sep 17 00:00:00 2001
From: Rodrigo souza <124813706+rodrigosouza974@users.noreply.github.com>
Date: Fri, 18 Oct 2024 23:47:01 -0300
Subject: [PATCH] Projeto Finalizado
---
Controllers/TarefaController.cs | 36 +++++++++----
...019011109_CriacaoTabelaTarefas.Designer.cs | 54 +++++++++++++++++++
.../20241019011109_CriacaoTabelaTarefas.cs | 35 ++++++++++++
Migrations/OrganizadorContextModelSnapshot.cs | 52 ++++++++++++++++++
appsettings.Development.json | 2 +-
5 files changed, 169 insertions(+), 10 deletions(-)
create mode 100644 Migrations/20241019011109_CriacaoTabelaTarefas.Designer.cs
create mode 100644 Migrations/20241019011109_CriacaoTabelaTarefas.cs
create mode 100644 Migrations/OrganizadorContextModelSnapshot.cs
diff --git a/Controllers/TarefaController.cs b/Controllers/TarefaController.cs
index ba96b30f..c088f0db 100644
--- a/Controllers/TarefaController.cs
+++ b/Controllers/TarefaController.cs
@@ -5,7 +5,7 @@
namespace TrilhaApiDesafio.Controllers
{
[ApiController]
- [Route("[controller]")]
+ [Route("api/[controller]")]
public class TarefaController : ControllerBase
{
private readonly OrganizadorContext _context;
@@ -19,16 +19,20 @@ public TarefaController(OrganizadorContext context)
public IActionResult ObterPorId(int id)
{
// TODO: Buscar o Id no banco utilizando o EF
- // TODO: Validar o tipo de retorno. Se não encontrar a tarefa, retornar NotFound,
+ var tarefa = _context.Tarefas.Find(id);
+ // TODO: Validar o tipo de retorno. Se não encontrar a tarefa, retornar NotFound,
+ if (tarefa == null)
+ return NotFound();
// caso contrário retornar OK com a tarefa encontrada
- return Ok();
+ return Ok(tarefa);
}
[HttpGet("ObterTodos")]
public IActionResult ObterTodos()
{
// TODO: Buscar todas as tarefas no banco utilizando o EF
- return Ok();
+ var tarefas = _context.Tarefas.ToList();
+ return Ok(tarefas);
}
[HttpGet("ObterPorTitulo")]
@@ -36,10 +40,13 @@ public IActionResult ObterPorTitulo(string titulo)
{
// TODO: Buscar as tarefas no banco utilizando o EF, que contenha o titulo recebido por parâmetro
// Dica: Usar como exemplo o endpoint ObterPorData
- return Ok();
+ var tarefas = _context.Tarefas
+ .Where(t => t.Titulo.Contains(titulo))
+ .ToList();
+ return Ok(tarefas);
}
- [HttpGet("ObterPorData")]
+ [HttpGet("ObterPorData/yyyy-MM-dd")]
public IActionResult ObterPorData(DateTime data)
{
var tarefa = _context.Tarefas.Where(x => x.Data.Date == data.Date);
@@ -62,6 +69,8 @@ public IActionResult Criar(Tarefa tarefa)
return BadRequest(new { Erro = "A data da tarefa não pode ser vazia" });
// TODO: Adicionar a tarefa recebida no EF e salvar as mudanças (save changes)
+ _context.Tarefas.Add(tarefa);
+ _context.SaveChanges();
return CreatedAtAction(nameof(ObterPorId), new { id = tarefa.Id }, tarefa);
}
@@ -78,7 +87,15 @@ public IActionResult Atualizar(int id, Tarefa tarefa)
// TODO: Atualizar as informações da variável tarefaBanco com a tarefa recebida via parâmetro
// TODO: Atualizar a variável tarefaBanco no EF e salvar as mudanças (save changes)
- return Ok();
+ tarefaBanco.Titulo =tarefa.Titulo;
+ tarefaBanco.Descricao =tarefa.Descricao;
+ tarefaBanco.Data =tarefa.Data;
+ tarefaBanco.Status =tarefa.Status;
+
+ _context.Tarefas.Update(tarefaBanco);
+ _context.SaveChanges();
+
+ return Ok(tarefaBanco);
}
[HttpDelete("{id}")]
@@ -88,9 +105,10 @@ public IActionResult Deletar(int id)
if (tarefaBanco == null)
return NotFound();
-
// TODO: Remover a tarefa encontrada através do EF e salvar as mudanças (save changes)
- return NoContent();
+ _context.Tarefas.Remove(tarefaBanco);
+ //return NoContent();
+ return Ok(tarefaBanco);//aqui ele retorna as informções do que foi deletado
}
}
}
diff --git a/Migrations/20241019011109_CriacaoTabelaTarefas.Designer.cs b/Migrations/20241019011109_CriacaoTabelaTarefas.Designer.cs
new file mode 100644
index 00000000..e94934f7
--- /dev/null
+++ b/Migrations/20241019011109_CriacaoTabelaTarefas.Designer.cs
@@ -0,0 +1,54 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using TrilhaApiDesafio.Context;
+
+#nullable disable
+
+namespace TrilhaApiDesafio.Migrations
+{
+ [DbContext(typeof(OrganizadorContext))]
+ [Migration("20241019011109_CriacaoTabelaTarefas")]
+ partial class CriacaoTabelaTarefas
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("TrilhaApiDesafio.Models.Tarefa", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Data")
+ .HasColumnType("datetime2");
+
+ b.Property("Descricao")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.Property("Titulo")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Tarefas");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Migrations/20241019011109_CriacaoTabelaTarefas.cs b/Migrations/20241019011109_CriacaoTabelaTarefas.cs
new file mode 100644
index 00000000..5af09bbb
--- /dev/null
+++ b/Migrations/20241019011109_CriacaoTabelaTarefas.cs
@@ -0,0 +1,35 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace TrilhaApiDesafio.Migrations
+{
+ public partial class CriacaoTabelaTarefas : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Tarefas",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Titulo = table.Column(type: "nvarchar(max)", nullable: true),
+ Descricao = table.Column(type: "nvarchar(max)", nullable: true),
+ Data = table.Column(type: "datetime2", nullable: false),
+ Status = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Tarefas", x => x.Id);
+ });
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Tarefas");
+ }
+ }
+}
diff --git a/Migrations/OrganizadorContextModelSnapshot.cs b/Migrations/OrganizadorContextModelSnapshot.cs
new file mode 100644
index 00000000..a03c0a7e
--- /dev/null
+++ b/Migrations/OrganizadorContextModelSnapshot.cs
@@ -0,0 +1,52 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using TrilhaApiDesafio.Context;
+
+#nullable disable
+
+namespace TrilhaApiDesafio.Migrations
+{
+ [DbContext(typeof(OrganizadorContext))]
+ partial class OrganizadorContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("TrilhaApiDesafio.Models.Tarefa", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1);
+
+ b.Property("Data")
+ .HasColumnType("datetime2");
+
+ b.Property("Descricao")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.Property("Titulo")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Tarefas");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/appsettings.Development.json b/appsettings.Development.json
index 9978cbfd..0991548a 100644
--- a/appsettings.Development.json
+++ b/appsettings.Development.json
@@ -6,6 +6,6 @@
}
},
"ConnectionStrings": {
- "ConexaoPadrao": "COLOCAR SUA CONNECTION STRING AQUI"
+ "ConexaoPadrao": "Server=localhost\\SQLEXPRESS01; Initial Catalog =Tarefa; Integrated Security=True ; TrustServerCertificate=True ; Encrypt=False"
}
}