AtomicModule-Orders

3 years after

AtomicModule-Orders

  • Conceitos

Um pedido é onde inicia-se um processo em diversas empresas de vários ramos, um pedido tem sua data de criação se pegarmos todos os pedidos de um determinado dia temos a movimentação do dia.

JSON { produtos:[ { id:Integer, qnt:Integer, desconto:Double } ], cond_pag: ['A-VISTA', 'BOLETO', 'CHEQUE'], status:['PAGO', 'AGUARDANDO', 'CANCELADO'], created_at:DATE, updated_at:DATE, end_entrega: { rua:String, bairro:String, cidade:String, cep:String, numero:Integer }, end_cobranca: { rua:String, bairro:String, cidade:String, cep:String, numero:Integer }, tipo_envio:[], valor_envio:Double, voucher: ?, desconto:Double, client:Schema.Types.ObjectId observacao:String, sub_total:Double, total:Double }

vou implementar algo básico mais que funcione segue:

model.js

'use strict';

var mongoose = require('mongoose');
const Schema = mongoose.Schema;

var pedido = {

    produtos: [{
        id:Number,
        qnt:Number,
        desconto:Number
    }],
    cond_pag:[],
    status:[],
    end_entrega: {
        rua:String,
        bairro:String,
        cidade:String,
        cep:String,
        numero:Number
    },
    end_cobranca: {
        rua:String,
        bairro:String,
        cidade:String,
        cep:String,
        numero:Number
    },
    tipo_envio:[],
    valor_envio:Number,
    voucher:Number,
    desconto:Number,
    client:String,
    observacao:String,
    sub_total:Number,
    total:Number
}

const pedidoSchema = new Schema(pedido);
console.log('o Schema é :', pedidoSchema);
module.exports = mongoose.model('Pedido',pedidoSchema);

route.js

'use strict';

var Pedidos = require('./model.js');
var callback = require('./callback-express.js');

module.exports = function(app) {

    var buscaPedidos = function(req, res) {
        console.log("buscaPedidos");

        return Pedidos.find(function(err, element) {
            callback.callbackFind(err,element,res);
        })
    };

    var buscaPedidoPorId = function(req, res) {
        console.log("buscaPedidoPorId");
        var id = req.params.id;
        return Pedidos.findById({_id:id},function (err, element){
            callback.callbackFindById(err,element,res);
        })
    };

    var removePedido = function(req, res) {
        console.log("removePedido");
        var id = req.params.id;
        return Pedidos.findById({id:id}, function(err, element) {
            if(!element) {
                res.statusCode = 404;
                return res.send({error:'Elemento não foi localizado'});
            }
            return Pedidos.removePedido(function(err) {
                callback.callbackRemove(err,res);
            });
        });
    };

    var addPedido = function(req, res) {
        console.log('addPedido');
        var element = new Pedido(req.body);
        element.save(function(err,produto) {
            return callback.callbackSave(err,res);
        });
    };

    app.post('/api/addPedido',addPedido);
    app.delete('/api/removePedido',removePedido);
    app.get('/api/pedidos',buscaPedidos);
    app.get('/api/pedido/:id',buscaPedidoPorId);
}

server.js

// set up ===================================================================================================
var express        = require('express');
var morgan         = require('morgan');                         // log requests to the console (express4)
var bodyParser     = require('body-parser');                    // pull information from HTML POST (express4)
var methodOverride = require('method-override');                // simulate DELETE and PUT (express4)
var mongoose       = require('mongoose');                       // mongoose for mongodb
var app            = express();                                 // create our app w/ express
var port           = process.env.PORT || 3412;                  // set the port

// configuration ============================================================================================
app.use(express.static(__dirname + '/public'));                 // set the static files location
app.use(morgan('dev'));                                         // log every request to the console
app.use(bodyParser.urlencoded({'extended':'true'}));            // parse application/x-www-form-urlencoded
app.use(bodyParser.json());                                     // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(methodOverride());                                      // simulate DELETE and PUT

// routes ===================================================================================================
var pedidosRoute = require('./route.js')(app);

// MongoDB configuration ====================================================================================

mongoose.connect('mongodb://localhost/dbOrders', function(err, res) {
    if (err) {
        console.log('error connecting to MongoDB Database. ' + err);
    } else {
        console.log('Connected to Database');
    }
});

// listen (start app with node server.js) ===================================================================
app.listen(port);
console.log('Listenning on port ' + port);

um helper p o callback do express callback-express



````var obj = {

  callbackFind: (err,element,res) => {
    if(!err) {
      return res.send(element);
    }else {
      res.statusCode = 500;
      console.log("Erro interno!",res.statusCode,err.message);
      return res.send({error:"erro ao tentar buscar Elemento!"});
    }
  },

  callbackFindById: (err,element,res) => {
    if(!element) {
      res.statusCode = 404;
      return res.send({error:"Elemento não foi localizado"});
    }
    if(!err) {
      return res.send({status:"OK"});
    }
    else {
      res.statusCode = 500;
      console.log("Erro interno!",res.statusCode,err.message);
      return res.send({error:"erro ao tentar buscar"});
    }
  },

  callbackRemove: (err,res) => {
    if(!err) {
      console.log("Elemento removido com sucesso!");
      return res.send({status:"OK"});
    }
    else {
      res.statusCode = 500;
      console.log("Erro ao tentar remover",res.statusCode,err.message);
      return res.send({error:"erro no servidor"});
    }
  },

  callbackSave: (err,res) => {
    if(err) {
      console.log("Erro ao tentar salvar "+err);
      res.send({error:err});
    }
    else {
      console.log("Elemento cadastrado com sucesso!");
      res.send({status:"OK"});
    }
  }

};

module.exports = obj;