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" } }