Open Tiallysson opened 4 months ago
Criei a versão 1.0 do código
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Models;
using Models.HttpResponse;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProdutosController : ControllerBase
{
private readonly PetHealthDbContext _contexto;
public ProdutosController(PetHealthDbContext contexto)
{
_contexto = contexto;
}
[HttpGet("{idProduto}")]
public async Task<ActionResult<ProdutosResponse>> ObterProdutoPelaId(Guid id)
{
try
{
var Produtos = await _contexto.Produtos
.FirstOrDefaultAsync(tb_produtos => tb_produtos.Id == id);
if (Produtos == null)
{
return NotFound();
}
new ProdutosResponse
{
Id = Produtos.Id,
Nome_Produto = Produtos.Nome_Produto,
Descricao = Produtos.Descricao,
Quantidade = Produtos.Quantidade,
Preco = Produtos.Preco
};
return Ok(Produtos);
}
catch (Exception)
{
return StatusCode(500, "Não foi possível realizar a consulta.");
}
}
}
}
Criei a versão 1.0 do código
UsuariosController
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using Models.HttpResponse;
using Models;
using Models.HttpRequests;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UsuariosControllers : ControllerBase
{
private readonly PetHealthDbContext _contexto;
public UsuariosControllers(PetHealthDbContext contexto)
{
_contexto = contexto;
}
// Rota "api/UsuariosControllers/{id}"
// Ele retorna um objeto UsuarioResponse com informações do usuário com o ID fornecido
[HttpGet("{idUsuarioQueEstaBuscando}")]
public async Task<ActionResult<UsuariosResponse>> ObterPelaId(Guid idUsuarioQueEstaBuscando)
{
try
{
var usuarioQueEstaBuscando = await _contexto.Usuarios
.Include(tb_usuarios => tb_usuarios.Endereco)
.FirstOrDefaultAsync(tb_usuarios => tb_usuarios.Id == idUsuarioQueEstaBuscando);
bool usuarioNaoEncontrado = usuarioQueEstaBuscando == null;
if (usuarioNaoEncontrado)
{
return NotFound();
}
return Ok(
new UsuariosResponse
{
Id = usuarioQueEstaBuscando.Id,
Nome = usuarioQueEstaBuscando.Nome,
Sobrenome = usuarioQueEstaBuscando.Sobrenome,
Endereco = new EnderecosResponse
{
Rua = usuarioQueEstaBuscando.Endereco.Rua,
Numero = usuarioQueEstaBuscando.Endereco.Numero,
Complemento = usuarioQueEstaBuscando.Endereco.Complemento,
Bairro = usuarioQueEstaBuscando.Endereco.Bairro,
Cidade = usuarioQueEstaBuscando.Endereco.Cidade,
Estado = usuarioQueEstaBuscando.Endereco.Estado,
CEP = usuarioQueEstaBuscando.Endereco.CEP
}
}
);
}
catch (Exception)
{
return StatusCode(500, "Não foi possível realizar a consulta.");
}
}
// Rota "api/UsuariosControllers/{id}"
// Ele atualiza as informações do usuário com o ID fornecido
[HttpPut("{id}")]
public async Task<IActionResult> AtualizarPorId(Guid id, [FromBody] UsuarioRequest request)
{
if (request == null)
{
return BadRequest("O corpo da requisição não pode estar vazio.");
}
var usuarioQueEstaBuscando = await _contexto.Usuarios.FindAsync(id);
if (usuarioQueEstaBuscando == null)
{
return NotFound("Usuário não encontrado.");
}
// Atualize os campos do usuário existente com os dados do request
usuarioQueEstaBuscando.Nome = request.Nome;
usuarioQueEstaBuscando.Sobrenome = request.Sobrenome;
usuarioQueEstaBuscando.Cpf = request.Cpf;
// Salve as mudanças
var resultado = await _contexto.AtualizarPorId(usuarioQueEstaBuscando);
if (!resultado)
{
return StatusCode(500, "Ocorreu um problema ao atualizar o usuário.");
}
return NoContent(); // 204 No Content
}
}
}
FornecedoresConstrollers.cs
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Models;
using Models.HttpResponse;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class FornecedoresControllers : ControllerBase
{
// Rota "api/FornecedoresControllers/{id}"
// Ele retorna um objeto FornecedorResponse, que representa as informações de um fornecedor
private readonly PetHealthDbContext _contexto;
public FornecedoresControllers(PetHealthDbContext contexto)
{
_contexto = contexto;
}
[HttpGet("{idFornecedor}")]
public async Task<ActionResult<FornecedorResponse>> ObterProdutoPelaId(Guid id)
{
try
{
var Fornecedor = await _contexto.Fornecedor
.FirstOrDefaultAsync(tb_fornecedores => tb_fornecedores.id == id);
if (Fornecedor == null)
{
return NotFound();
}
new FornecedorResponse
{
Id = Fornecedor.id,
Razao = Fornecedor.Razao,
CNPJ = Fornecedor.CNPJ,
Telefone = Fornecedor.Telefone,
Email = Fornecedor.Email
};
return Ok(Fornecedor);
}
catch (Exception)
{
return StatusCode(500, "Não foi possível realizar a consulta.");
}
}
}
}
EnderecosConstrollers.cs
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Models;
using Models.HttpRequests;
using Models.HttpResponse;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class EnderecosControllers : ControllerBase
{
// Rota "api/EnderecosControllers/{id}"
// Ele retorna as informações de um endereço com base no ID fornecido
private readonly PetHealthDbContext _contexto;
public EnderecosControllers (PetHealthDbContext contexto)
{
_contexto = contexto;
}
[HttpGet("{idFornecedor}")]
public async Task<ActionResult<EnderecosResponse>> ObterProdutoPelaId(Guid id)
{
try
{
var Enderecos = await _contexto.Enderecos
.FirstOrDefaultAsync(tb_enderecos => tb_enderecos.Id == id);
if (Enderecos == null)
{
return NotFound();
}
new EnderecosResponse
{
Rua = Enderecos.Rua,
Numero = Enderecos.Numero,
Complemento = Enderecos.Complemento,
Bairro = Enderecos.Bairro,
Cidade = Enderecos.Cidade,
Estado = Enderecos.Estado,
CEP = Enderecos.CEP
};
return Ok(Enderecos);
}
catch (Exception)
{
return StatusCode(500, "Não foi possível realizar a consulta.");
}
}
// Rota "api/EnderecosControllers"
// Ele cria um novo endereço com base no objeto Enderecos fornecido no corpo da requisição
[HttpPost]
public void Registrar([FromBody] EnderecosControllers enderecos)
{
}
// Rota "api/EnderecosControllers/{id}"
// Ele atualiza as informações de um endereço com base no ID fornecido
[HttpPut("{id}")]
public void AtualizarEnderecoId(Guid id)
{
}
}
}
CredenciaisControllers.cs
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Models.HttpRequests;
using Models.HttpResponse;
using Models;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CredenciaisControllers : ControllerBase
{
private readonly PetHealthDbContext _contexto;
// Este é o construtor da classe CredenciaisControllers, que recebe o contexto do banco de dados como parâmetro
public CredenciaisControllers(PetHealthDbContext contexto)
{
_contexto = contexto;
}
// Rota "api/CredenciaisControllers/autenticarusuario"
// Ele autentica um usuário com base nas credenciais fornecidas no objeto CredencialRequest
[HttpPost("autenticarusuario")]
public void AutenticarUsuario(CredenciaisRequest credenciais)
{
}
// Rota "api/CredenciaisControllers/registrar"
// Ele registra um novo usuário com base no objeto UsuarioRequest fornecido no corpo da requisição
[HttpPost("registrar")]
public async Task<ActionResult> Registrar(
// Esse parâmetro representa a ficha de cadastro do usuário que
// será enviada no corpo da requisição [FromBody].
[FromBody] UsuarioRequest registroUsuario
)
{
// Esse techo de código representa o monitoramento do cadastro.
var transacaoCadastro = await _contexto.Database.BeginTransactionAsync();
try
{
// Nesse trecho do código é realizado o cadastro o endereço no banco de dados.
var enderecos = new Models.Endereco
// Verificar CredencialRequest, não contém referência
{
Rua = registroUsuario.Endereco.Rua,
Numero = registroUsuario.Endereco.Numero,
Complemento = registroUsuario.Endereco.Complemento,
Bairro = registroUsuario.Endereco.Bairro,
Cidade = registroUsuario.Endereco.Cidade,
Estado = registroUsuario.Endereco.Estado,
CEP = registroUsuario.Endereco.CEP
};
_contexto.Enderecos.Add(enderecos);
// Após realizar o cadastro do endereço no banco de dados é necessário confirmar a operação.
await _contexto.SaveChangesAsync();
registroUsuario.Endereco.Id = enderecos.Id;
var usuario = new Usuario
{
Nome = registroUsuario.Nome,
Sobrenome = registroUsuario.Sobrenome,
EnderecoId = registroUsuario.Endereco.Id,
Cpf = registroUsuario.Cpf
};
_contexto.Usuarios.Add(usuario);
await _contexto.SaveChangesAsync();
registroUsuario.Id = usuario.Id;
_contexto.Credenciais.Add(new Credencial
{
Email = registroUsuario.Credencial.Email,
Senha = registroUsuario.Credencial.Senha,
UsuarioId = registroUsuario.Id
});
await _contexto.SaveChangesAsync();
await transacaoCadastro.CommitAsync();
return StatusCode(201, new { id = registroUsuario.Id});
}
catch(Exception)
{
transacaoCadastro.Rollback();
return StatusCode(500, "Não foi possível realizar o cadastro!");
}
}
}
}
ContatoControllers.cs
using Contexts;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Models;
using Models.HttpRequests;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ContatoControllers : ControllerBase
{
private readonly PetHealthDbContext _contexto;
public ContatoControllers(PetHealthDbContext contexto)
{
_contexto = contexto;
}
// Rota "api/ContatoControllers/AddContato"
// Ele adiciona um novo contato com base no objeto ContatoRequest fornecido no corpo da requisição
[HttpPost("AddContato")]
public void AddContato([FromBody] ContatoRequest contato)
{
// Aguardando verificação
}
}
}
@Tiallysson Adicionei a pasta Models 378020f @Tiallysson Adicionei linhas de código em Program.cs af789dd @Tiallysson Adicionei dados em UsuarioModel.cs ce63ffd @Tiallysson Adicionei dados em UsuarioModel.cs d01e7c6 @Tiallysson Adicionei o ./Models/ProdutosModel.cs 812c130 @Tiallysson Adicionei um HttpGet em ProdutosConstrollers.cs 1ec0ebc