var express = require("express"),
  app     = express(),
  port    = parseInt(process.env.PORT, 10) || 8080;

app.configure(function(){
  app.use(express.methodOverride());
  app.use(express.bodyParser());
  app.use(express.static(__dirname + '/app'));
  app.use(app.router);
});

var recipes_map = {
  '1': {
    "id": "1",
    "title": "Ciasteczka",
    "description": "Wyborne, chrupiące na zewnątrz, ciągliwe w środku i ociekające pyszną czekoladą ciasteczka. Najlepsze w swoim rodzaju.",
    "ingredients": [
      {
        "amount": "1",
        "amountUnits": "opakowanie",
        "ingredientName": "Chips Ahoy"
      }
    ],
    "instructions": "1. Kup opakowanie Chips Ahoy\n2. Podgrzej ciasteczka w piekarniku\n3. Rozsmakuj się w ciepłych ciasteczkach\n4. Z innego źródła naucz się, jak wypiekać wyborne ciasteczka"
  },
  '2': {
    id: 2,
    'title': 'Przepis 2',
    'description': 'Opis 2',
    'instructions': 'Sposób przyrządzenia 2',
    ingredients: [
      {amount: 13, amountUnits: 'pounds', ingredientName: 'Awesomeness'}
    ]
  }
};
var next_id = 3;

app.get('/recipes', function(req, res) {
  var recipes = [];

  for (var key in recipes_map) {
    recipes.push(recipes_map[key]);
  }

  // Symulacja opóźnienia w serwerze.
  setTimeout(function() {
    res.send(recipes);
  }, 500);
});

app.get('/recipes/:id', function(req, res) {
  console.log('Żądanie przepisu o identyfikatorze', req.params.id);
  res.send(recipes_map[req.params.id]);
});

app.post('/recipes', function(req, res) {
  var recipe = {};
  recipe.id = next_id++;
  recipe.title = req.body.title;
  recipe.description = req.body.description;
  recipe.ingredients = req.body.ingredients;
  recipe.instructions = req.body.instructions;

  recipes_map[recipe.id] = recipe;

  res.send(recipe);
});

app.post('/recipes/:id', function(req, res) {
  var recipe = {};
  recipe.id = req.params.id;
  recipe.title = req.body.title;
  recipe.description = req.body.description;
  recipe.ingredients = req.body.ingredients;
  recipe.instructions = req.body.instructions;

  recipes_map[recipe.id] = recipe;

  res.send(recipe);
});

app.listen(port);
console.log('Aplikacja jest dostępna pod adresem http://localhost:' + port + '/');
