Enviar arquivos para "/"
This commit is contained in:
127
libraryController.js
Normal file
127
libraryController.js
Normal file
@@ -0,0 +1,127 @@
|
||||
const model = require('../models/libraryModel');
|
||||
|
||||
// Este é o "cérebro" do nosso microsserviço!
|
||||
// O controller recebe as requisições HTTP, valida os dados,
|
||||
// chama as funções do model e retorna respostas apropriadas.
|
||||
// É como o gerente que coordena tudo.
|
||||
|
||||
// Função para adicionar um item manualmente à biblioteca.
|
||||
// Pode ser usado para correções ou imports especiais.
|
||||
exports.addItem = (req, res) => {
|
||||
// Validação básica dos dados obrigatórios
|
||||
const { user_id, type, item_id, title } = req.body;
|
||||
|
||||
if (!user_id || !type || !item_id || !title) {
|
||||
return res.json({
|
||||
success: false,
|
||||
message: 'Dados obrigatórios faltando: user_id, type, item_id, title'
|
||||
});
|
||||
}
|
||||
|
||||
// Só aceitamos tipos válidos para manter consistência
|
||||
if (!['game', 'gift_card'].includes(type)) {
|
||||
return res.json({
|
||||
success: false,
|
||||
message: 'Tipo inválido. Use "game" ou "gift_card"'
|
||||
});
|
||||
}
|
||||
|
||||
// Chama o model para adicionar o item
|
||||
model.addItem(req.body, (err) => {
|
||||
if (err) {
|
||||
return res.json({
|
||||
success: false,
|
||||
error: err,
|
||||
message: 'Erro ao adicionar item à biblioteca'
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: 'Item adicionado à biblioteca com sucesso!'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Função que retorna toda a biblioteca de um usuário.
|
||||
// É chamada quando o usuário abre sua página de biblioteca.
|
||||
exports.getLibrary = (req, res) => {
|
||||
const user_id = req.params.user_id;
|
||||
|
||||
// Validação do ID do usuário
|
||||
if (!user_id || isNaN(user_id)) {
|
||||
return res.json({
|
||||
success: false,
|
||||
message: 'ID do usuário inválido'
|
||||
});
|
||||
}
|
||||
|
||||
// Busca todos os itens do usuário
|
||||
model.getUserLibrary(user_id, (err, results) => {
|
||||
if (err) {
|
||||
return res.json({
|
||||
success: false,
|
||||
error: err,
|
||||
message: 'Erro ao buscar biblioteca'
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: results,
|
||||
message: `Encontrados ${results.length} itens na biblioteca`
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Esta é a função mais importante para integração!
|
||||
// É chamada AUTOMATICAMENTE pelo serviço de pagamentos quando uma compra é aprovada.
|
||||
// Garante que o usuário receba seu jogo/gift card na biblioteca.
|
||||
exports.paymentApproved = (req, res) => {
|
||||
const data = req.body;
|
||||
|
||||
// Validações rigorosas pois isso vem de outro serviço
|
||||
const { user_id, type, item_id, title } = data;
|
||||
|
||||
if (!user_id || !type || !item_id || !title) {
|
||||
return res.json({
|
||||
success: false,
|
||||
message: 'Dados de pagamento incompletos'
|
||||
});
|
||||
}
|
||||
|
||||
// Primeiro verifica se o usuário já tem esse item (evita duplicatas)
|
||||
model.checkItem(user_id, item_id, (err, results) => {
|
||||
if (err) {
|
||||
return res.json({
|
||||
success: false,
|
||||
error: err,
|
||||
message: 'Erro ao verificar item existente'
|
||||
});
|
||||
}
|
||||
|
||||
// Se já tem, informa que não precisa adicionar novamente
|
||||
if (results.length > 0) {
|
||||
return res.json({
|
||||
success: false,
|
||||
message: 'Usuário já possui este item em sua biblioteca'
|
||||
});
|
||||
}
|
||||
|
||||
// Se não tem, adiciona o item
|
||||
model.addItem(data, (err) => {
|
||||
if (err) {
|
||||
return res.json({
|
||||
success: false,
|
||||
error: err,
|
||||
message: 'Erro ao adicionar item após pagamento'
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: 'Pagamento aprovado! Item adicionado à biblioteca.'
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user