Commit 0c29f712 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Merge branch '3-Desarrollo-Cargos-Postulaciones-Categorias-Comentarios' into 'desarrollo'

Refactorizacion de los controladores añadiendo un manejador de errores [iss03]

@tnina @gcallejas se refactorizaron los controladores para un mejor manejo de excepciones.

See merge request !8
parents 1e877ea9 1e5cee71
Modulo Personal
===================
Cargos
------
> **Titulo**
Mostrar los Cargos
# Cargo
> **URL**
/cargos
Listar los cargos
-------------
**URL**
> /cargos
> **Metodo**
<kbd>GET</kbd>
**Metodo**
> <kbd>GET</kbd>
> **Respuesta correcta**
**Respuesta correcta**
> **Codigo:** 200
**Contenido:**
>**Codigo:** 200
>**Ejemplo:**
```json
[
{
"_id": 1,
"nombre": "Director general",
"fecha_creacion": "2016-03-14T15:06:36.051Z",
"fecha_modificacion": "2016-03-14T15:06:36.051Z"
"_id": 49,
"nombre": "Secretario",
"fecha_creacion": "2016-03-14T22:52:31.554Z",
"fecha_modificacion": "2016-03-14T22:52:31.554Z"
},
{
"_id": 50,
"nombre": "Encargado de sistemas",
"fecha_creacion": "2016-03-14T22:52:31.554Z",
"fecha_modificacion": "2016-03-14T22:52:31.554Z"
},
{
"_id": 51,
"nombre": "Jefe de Unidad",
"fecha_creacion": "2016-03-14T22:52:31.554Z",
"fecha_modificacion": "2016-03-14T22:52:31.554Z"
},
{
"_id": 2,
"nombre": "Jefe de personal",
"fecha_creacion": "2016-03-14T15:28:20.063Z",
"fecha_modificacion": "2016-03-14T15:28:20.063Z"
"_id": 52,
"nombre": "Director Ejecutivo",
"fecha_creacion": "2016-03-14T22:52:31.554Z",
"fecha_modificacion": "2016-03-14T22:52:31.554Z"
},
{
"_id": 53,
"nombre": "Consultor",
"fecha_creacion": "2016-03-14T22:52:31.554Z",
"fecha_modificacion": "2016-03-14T22:52:31.554Z"
}
]
```
> **Respuesta de error**
**Codigo:** 500
**Contenido:** Error en el servidor.
**Respuesta de error**
**Codigo:** 4xx
**Contenido:** Error en el servidor.
>**Codigo:** 500
**Crear un cargo**
----
* **URL**
/cargos
>**Contenido:**
```json
{
"error":"Ocurrio un problema inesperado en el servidor"
}
```
* **Método:**
`POST`
* **Parametros del cuerpo**
**Observaciones**
>Esta petición cuando no existen datos almacenados en la base de datos
>retorna un array vacio
``{
"nombre": "Director general"
}``
Crear un nuevo cargo
-------------
**URL**
> /cargos
* **Respuesta correcta:**
<_What should the status code be on success and is there any returned data? This is useful when people need to to know what their callbacks should expect!_>
**Metodo**
> <kbd>POST</kbd>
* **Code:** 200
**Content:**
```javascript
{
"_id": 1,
"nombre": "Director general",
"fecha_modificacion": "2016-03-14T15:06:36.051Z",
"fecha_creacion": "2016-03-14T15:06:36.051Z"
}
```
* **Error Response:**
**Parametros del body**
>ejemplo
```json
{
"nombre":"Jefe de unidad"
}
```
<_Most endpoints will have many ways they can fail. From unauthorized access, to wrongful parameters etc. All of those should be liste d here. It might seem repetitive, but it helps prevent assumptions from being made where they should be._>
**Respuesta correcta**
* **Code:** 401 UNAUTHORIZED <br />
**Content:** `{ error : "Log in" }`
>**Codigo:** 200
OR
>**Contenido:**
```json
{
"nombre":"[string]"
}
```
>**Ejemplo**
```json
{
"nombre":"Jefe de Unidad"
}
```
* **Code:** 422 UNPROCESSABLE ENTRY <br />
**Content:** `{ error : "Email Invalid" }`
**Respuesta de error**
* **Sample Call:**
<_Just a sample call to your endpoint in a runnable format ($.ajax call or a curl request) - this makes life easier and more predictable._>
>**Codigo:** 400
* **Notes:**
>**Contenido:**
```json
{
"Error":"El nombre no puede estar vacio"
}
```
<_This is where all uncertainties, commentary, discussion etc. can go. I recommend timestamping and identifying oneself when leaving comments here._>
......@@ -11,58 +11,13 @@
import _ from 'lodash';
import {Cargo} from '../../sqldb';
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
}
};
}
function saveUpdates(updates) {
return function(entity) {
return entity.updateAttributes(updates)
.then(updated => {
return updated;
});
};
}
function removeEntity(res) {
return function(entity) {
if (entity) {
return entity.destroy()
.then(() => {
res.status(204).end();
});
}
};
}
function handleEntityNotFound(res) {
return function(entity) {
if (!entity) {
res.status(404).end();
return null;
}
return entity;
};
}
function handleError(res, statusCode) {
statusCode = statusCode || 500;
return function(err) {
res.status(statusCode).send(err);
};
}
import * as errorMan from '../../components/errors/errorManager'
// Gets a list of Cargos
export function index(req, res) {
Cargo.findAll()
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Gets a single Cargo from the DB
......@@ -72,16 +27,16 @@ export function show(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Creates a new Cargo in the DB
export function create(req, res) {
Cargo.create(req.body)
.then(respondWithResult(res, 201))
.catch(handleError(res));
.then(errorMan.respondWithResult(res, 201))
.catch(errorMan.handleError(res));
}
// Updates an existing Cargo in the DB
......@@ -94,10 +49,10 @@ export function update(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(saveUpdates(req.body))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.saveUpdates(req.body))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Deletes a Cargo from the DB
......@@ -107,7 +62,7 @@ export function destroy(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(removeEntity(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.removeEntity(res))
.catch(errorMan.handleError(res));
}
......@@ -12,58 +12,14 @@
import _ from 'lodash';
import {Comentario} from '../../sqldb';
import {Postulante} from '../../sqldb';
import * as errorMan from '../../components/errors/errorManager'
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
}
};
}
function saveUpdates(updates) {
return function(entity) {
return entity.updateAttributes(updates)
.then(updated => {
return updated;
});
};
}
function removeEntity(res) {
return function(entity) {
if (entity) {
return entity.destroy()
.then(() => {
res.status(204).end();
});
}
};
}
function handleEntityNotFound(res) {
return function(entity) {
if (!entity) {
res.status(404).end();
return null;
}
return entity;
};
}
function handleError(res, statusCode) {
statusCode = statusCode || 500;
return function(err) {
res.status(statusCode).send(err);
};
}
// Gets a list of Comentarios
export function index(req, res) {
Comentario.findAll()
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Gets a single Comentario from the DB
......@@ -73,16 +29,16 @@ export function show(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Creates a new Comentario in the DB
export function create(req, res) {
Comentario.create(req.body)
.then(respondWithResult(res, 201))
.catch(handleError(res));
.then(errorMan.respondWithResult(res, 201))
.catch(errorMan.handleError(res));
}
// Updates an existing Comentario in the DB
......@@ -95,10 +51,10 @@ export function update(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(saveUpdates(req.body))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.saveUpdates(req.body))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Deletes a Comentario from the DB
......@@ -108,9 +64,9 @@ export function destroy(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(removeEntity(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.removeEntity(res))
.catch(errorMan.handleError(res));
}
export function comentarios(req, res) {
......@@ -119,10 +75,10 @@ export function comentarios(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(errorMan.handleEntityNotFound(res))
.then(function (postulante) {
postulante.getComentarios()
.then(respondWithResult(res))
.then(errorMan.respondWithResult(res))
})
.catch(handleError(res));
.catch(errorMan.handleError(res));
}
......@@ -13,58 +13,13 @@ import _ from 'lodash';
import {DatoPostulante} from '../../sqldb';
import {Postulante} from '../../sqldb';
import {TipoDato} from '../../sqldb';
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
}
};
}
function saveUpdates(updates) {
return function(entity) {
return entity.updateAttributes(updates)
.then(updated => {
return updated;
});
};
}
function removeEntity(res) {
return function(entity) {
if (entity) {
return entity.destroy()
.then(() => {
res.status(204).end();
});
}
};
}
function handleEntityNotFound(res) {
return function(entity) {
if (!entity) {
res.status(404).end();
return null;
}
return entity;
};
}
function handleError(res, statusCode) {
statusCode = statusCode || 500;
return function(err) {
res.status(statusCode).send(err);
};
}
import * as errorMan from '../../components/errors/errorManager.js'
// Gets a list of DatoPostulantes
export function index(req, res) {
DatoPostulante.findAll()
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Gets a single DatoPostulante from the DB
......@@ -74,16 +29,16 @@ export function show(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Creates a new DatoPostulante in the DB
export function create(req, res) {
DatoPostulante.create(req.body)
.then(respondWithResult(res, 201))
.catch(handleError(res));
.then(errorMan.respondWithResult(res, 201))
.catch(errorMan.handleError(res));
}
// Updates an existing DatoPostulante in the DB
......@@ -96,10 +51,10 @@ export function update(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(saveUpdates(req.body))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.saveUpdates(req.body))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Deletes a DatoPostulante from the DB
......@@ -109,9 +64,9 @@ export function destroy(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(removeEntity(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.removeEntity(res))
.catch(errorMan.handleError(res));
}
export function obtieneDato(req, res) {
......
......@@ -13,58 +13,13 @@ import _ from 'lodash';
import {Postulacion} from '../../sqldb';
import {Postulante} from '../../sqldb';
import {Cargo} from '../../sqldb';
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
}
};
}
function saveUpdates(updates) {
return function(entity) {
return entity.updateAttributes(updates)
.then(updated => {
return updated;
});
};
}
function removeEntity(res) {
return function(entity) {
if (entity) {
return entity.destroy()
.then(() => {
res.status(204).end();
});
}
};
}
function handleEntityNotFound(res) {
return function(entity) {
if (!entity) {
res.status(404).end();
return null;
}
return entity;
};
}
function handleError(res, statusCode) {
statusCode = statusCode || 500;
return function(err) {
res.status(statusCode).send(err);
};
}
import * as errorMan from '../../components/errors/errorManager.js'
// Gets a list of Postulacions
export function index(req, res) {
Postulacion.findAll()
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Gets a single Postulacion from the DB
......@@ -74,16 +29,16 @@ export function show(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Creates a new Postulacion in the DB
export function create(req, res) {
Postulacion.create(req.body)
.then(respondWithResult(res, 201))
.catch(handleError(res));
.then(errorMan.respondWithResult(res, 201))
.catch(errorMan.handleError(res));
}
// Updates an existing Postulacion in the DB
......@@ -96,10 +51,10 @@ export function update(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(saveUpdates(req.body))
.then(respondWithResult(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.saveUpdates(req.body))
.then(errorMan.respondWithResult(res))
.catch(errorMan.handleError(res));
}
// Deletes a Postulacion from the DB
......@@ -109,9 +64,9 @@ export function destroy(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(removeEntity(res))
.catch(handleError(res));
.then(errorMan.handleEntityNotFound(res))
.then(errorMan.removeEntity(res))
.catch(errorMan.handleError(res));
}
/**
......@@ -125,11 +80,11 @@ export function postulaciones(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(errorMan.handleEntityNotFound(res))
.then(function (postulante) {
postulante.getPostulaciones()
.then(function (postulaciones) {
return res.json(postulaciones);
return res.json(postulaciones);// TODO llamar metodo del errorManager
})
})
.catch(handleError(res));
......@@ -146,11 +101,11 @@ export function postulantes(req, res) {
_id: req.params.id
}
})
.then(handleEntityNotFound(res))
.then(errorMan.handleEntityNotFound(res))
.then(function (cargos) {
cargos.getPostulantes()
.then(function (postulantes) {
return res.json(postulantes);
return res.json(postulantes);//TODO
})
})
.catch(handleError(res));
......
......@@ -11,58 +11,13 @@
import _ from 'lodash';
import {Postulante} from '../../sqldb';
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
res.status(statusCode).json(entity);
}
};
}
function saveUpdates(updates) {
return function(entity) {
return entity.updateAttributes(updates)
.then(updated => {
return updated;
});
};
}
function removeEntity(res) {
return function(entity) {
if (entity) {
return entity.destroy()
.then(() => {
res.status(204).end();
});
}
};
}
function handleEntityNotFound(res) {
return function(entity) {
if (!entity) {
res.status(404).end();
return null;
}
return entity;
};
}
function handleError(res, statusCode) {
statusCode = statusCode || 500;
return function(err) {
res.status(statusCode).send(err);
};
}
import * as errorMan from '../../components/errors/errorManager.js'
// Gets a list of Postulantes
export function index(req, res) {
Postulante.findAll()
.then(respondWithResult(res))
.catch(handleError(res));