Skip to content
This repository has been archived by the owner on Aug 5, 2024. It is now read-only.

Commit

Permalink
[FRONTEND] demoserver for Frontend testing
Browse files Browse the repository at this point in the history
  • Loading branch information
robertdimitrov committed Jan 6, 2017
1 parent c741562 commit ae3565c
Show file tree
Hide file tree
Showing 6 changed files with 450 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ backend/conf/application.conf
backend/.idea
backend/target
backend/project/target
backend/project/project
backend/project/project
demoserver/node_modules
3 changes: 3 additions & 0 deletions demoserver/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/*
node_modules/
.idea/
16 changes: 16 additions & 0 deletions demoserver/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Demo Server

## Installation

```bash
npm install
```

## Usage

```bash
npm start
```

The application uses port ```3000```.

364 changes: 364 additions & 0 deletions demoserver/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,364 @@
/**
* a dirty implementation of a fake Node server
* used for demo purposes for the NoQueue frontend
*
* based on a template provided by Prof. Dr.-Ing. Johannes Konert
*/
"use strict";

var path = require('path');
var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use(function(req, res, next) {
console.log('Request of type '+req.method + ' to URL ' + req.originalUrl);
next();
});

// Dummy Data Collections
var id = 0;

function createShop(name, phone, email, openingHours, street, streetNr, zip, city, distance){
id += 1;
return {
betriebID: id,
name: name,
tel: phone,
kontaktEmail: email,
oeffnungsZeiten: openingHours,
adresse : {
strasse: street,
hausNummer: streetNr,
plz: zip,
stadt: city
},
distanz: distance
}
}

var shops = [ createShop("Salon Marko", "01577-368-1252", "[email protected]", "08:00 - 17:00 Mo - Sa", "Milcshtr", "2", "13555", "Berlin", "2100"),
createShop("Frisur für Dich!", "01686-125-5552", "[email protected]", "09:00 - 15:00 Mo - Fr", "Musterstr", "52", "27555", "Hamburg", "14200"),
createShop("Beauty Salon Nature", "01578-3512-444", "[email protected]", "08:00 - 18:00 Mo - Do", "Schönstr", "21", "39952", "Magdeburg", "20500"),
createShop("Studio Schöneberg", "01562-555-5125", "[email protected]", "08:00 - 13:00 Mo, Mi, Do 14:00 - 18:00 Di", "Rathaus Schöneberg", "12", "13071", "Berlin", "800"),
createShop("Nagelstudio Tempelhof", "01528-8812-234", "[email protected]", "09:00 - 18:00 Mo - Fr", "Tempelhofer Damm", "241A", "12827", "Berlin", "4200"),
createShop("China Massage", "01572-244-1252", "[email protected]", "10:00 - 16:00 Mo-Do", "Massagestr.", "15B", "13005", "Berlin", "1272")
];


function createCoworker(betriebID, anwesend, nutzerName){
id += 1;
return {
betriebID: betriebID,
userID: id,
anwesend: anwesend,
nutzerName: nutzerName
}
}

var mitarbeiter = [ createCoworker(1, true, "Michael"),
createCoworker(1, true, "Angela"),
createCoworker(1, false, "Philipp"),
createCoworker(1, true, "Sascha"),
createCoworker(2, true, "Oliver"),
createCoworker(3, true, "Ursula"),
createCoworker(4, true, "Martin"),
createCoworker(5, true, "Johanna"),
createCoworker(6, true, "Li")
];

var leiter = [ createCoworker(1, false, "Milan"),
createCoworker(1, true, "Marko"),
createCoworker(2, false, "Sebastian"),
createCoworker(3, false, "Viktoria"),
createCoworker(4, false, "Ralf"),
createCoworker(5, false, "Günther"),
createCoworker(6, false, "Xin")
];

function createService(shopID, typ, dauer, beschreibung = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut."){
id += 1;
return {
serviceID: id,
betriebID: shopID,
typ: typ,
dauer: dauer,
beschreibung: beschreibung
}
}

var services = [ createService(1, "Frisur", 20),
createService(1, "Färben", 50),
createService(2, "Frisur", 30),
createService(3, "Pediküre", 40),
createService(4, "Gelnägel", 50),
createService(5, "Maniküre", 60),
createService(6, "Massage", 45)
];

var servicesTypes = ["Frisur", "Färben", "Pediküre", "Maniküre", "Massage", "Gelnägel", "Thai Massage", "Aromaöl Massage", "Wimpernwelle", "Styling"];

function makeQueue(betriebID, serviceID, offen){
id += 1;

return {
queueID: id,
betriebID: betriebID,
serviceID: serviceID,
name: shops[betriebID].name,
adresse: shops[betriebID].adresse,
dienstleistung: services[betriebID].typ,
wsoffen: offen,
kunden: [
{nutzerName: "patrick_1", uhrzeit: "10:00"},
{nutzerName: "258dumbo", uhrzeit: "10:30"},
{nutzerName: "bartsimpson", uhrzeit: "11:00"},
]
}
}

var myQueues = [makeQueue(1, 7, true), makeQueue(2, 8, false)];

var myQueuePosition = {
uhrzeit: "11:00",
mitarbeiter: "Michael",
adresse: "Milcshtr 2 | 13555 Berlin",
distanz: 2100,
platzNummer: "011",
tel: "01577-368-1252",
betriebName: "Salon Marco"
};

function createUser(name, email, zip = "", city = "", street = "", streetnr = ""){
id += 1;
return {
userID: id,
nutzerName: name,
nutzerEmail: email,
adresse: {
plz: zip,
stadt: city,
strasse: street,
hausNummer: streetnr
}
}
}

var users = [ createUser("otto_schmelzer", "[email protected]"),
createUser("rennate-bausch122", "[email protected]"),
createUser("robert-dimitrov", "[email protected]", "12683", "Berlin", "Oberfeldstr.", "132"),
createUser("norbert210", "[email protected]"),
createUser("sandra-stamm", "[email protected]"),
createUser("sandra-bernstein12", "[email protected]")
];

var token = "eyJhbGciOiJIUzI1NiJ9.eyJiIjoidGVzdCJ9.s5IHuxC-TfFLX8Nu_t_RJoMugvYX_7dVCYShpMWmxS4";


// Routes ***************************************

var authRouter = express.Router();

authRouter.post('/', function(req, res, next){
res.status(200);
res.json(token);
});

app.use("/auth", authRouter);

var anwenderRouter = express.Router();

anwenderRouter.post('/', function(req,res,next){
res.status(200);
res.json(token);
});

anwenderRouter.get('/:id/betrieb', function(req,res,next){
res.status(200).json([shops[0]]);
});

anwenderRouter.get('/:id/queues', function(req, res, next){
res.status(200).json(myQueues);
});

anwenderRouter.get('/:id/queues/:qid', function(req, res, next){
res.status(200).json(myQueues[req.params.qid-1]);
});

anwenderRouter.get('/:id/queueposition', function(req, res, next){
console.log("------", myQueuePosition);
res.status(200).json(myQueuePosition);
});

anwenderRouter.get('/', function(req, res, next){
let searchTerm = req.query.q;
let result = users.filter( u => u.nutzerName.indexOf(searchTerm) > -1);
res.status(200).json(result);
});

anwenderRouter.get('/:me', function(req, res, next){
res.status(200).json(users[2]);
});

anwenderRouter.put('/:id', function(req, res, next){
res.status(200).end();
});

anwenderRouter.patch('/:id', function(req, res, next){
res.status(200).end();
});

app.use("/anwender", anwenderRouter);



var shopsRouter = express.Router();

shopsRouter.get('/', function(req,res,next){
res.status(200);
res.json(shops);
});

shopsRouter.get("/:id", function(req, res, next){
var result = shops.filter( s => s.betriebID === Number(req.params.id))[0];
res.status(200).json(result);
});

shopsRouter.get("/:id/mitarbeiter", function(req,res,next){
var result = mitarbeiter.filter( m => m.betriebID === Number(req.params.id));
res.status(200).json(result);
});

shopsRouter.get("/:id/leiter", function(req,res,next){
var result = leiter.filter( l => l.betriebID === Number(req.params.id));
res.status(200).json(result);
});

shopsRouter.post('/:id/mitarbeiter', function(req, res, next){
res.status(200).end();
});

shopsRouter.post('/:id/leiter', function(req, res, next){
res.status(200).end();
});

shopsRouter.delete('/:id/mitarbeiter', function(req, res, next){
res.status(200).end();
});

shopsRouter.delete('/:id/leiter', function(req, res, next){
res.status(200).end();
});

shopsRouter.post('/', function(req, res, next){
res.status(200).end();
});

shopsRouter.patch('/:id', function(req,res,next){
res.status(200).end();
});

shopsRouter.put('/:id', function(req,res,next){
res.status(200).end();
});

shopsRouter.get('/:id/dienstleistung', function(req, res, next){
var result = services.filter(s => s.betriebID === Number(req.params.id));
res.status(200).json(result);
});

shopsRouter.get('/:id/dienstleistung/:dlid', function(req, res, next){
var result = services.filter(s => s.betriebID === Number(req.params.id))[0];
res.status(200).json(result);
});

app.use("/betrieb", shopsRouter);



var servicesRouter = express.Router();

servicesRouter.post('/', function(req, res, next){
res.status(200).end();
});

servicesRouter.patch('/:dlid', function(req, res, next){
res.status(200).end();
});

servicesRouter.put('/:dlid', function(req, res, next){
res.status(200).end();
});



app.use('/betrieb/:id/dienstleistung', servicesRouter);



var dltsRouter = express.Router();
dltsRouter.get('/', function(req,res,next){
res.status(200).json(servicesTypes);
});
app.use('/dlts', dltsRouter);


var queuesRouter = express.Router();
queuesRouter.use('/', function(req,res,next){
res.status(200).end();
});
app.use('/queues', queuesRouter);


// CatchAll for the rest (unfound routes/resources) ********

// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

// error handlers (express recognizes it by 4 parameters!)

// development error handler
// will print stacktrace as JSON response
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
console.log('Internal Error: ', err.stack);
res.status(err.status || 500);
res.json({
error: {
message: err.message,
error: err.stack
}
});
});
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.json({
error: {
message: err.message,
error: {}
}
});
});


// Start server ****************************
app.listen(3000, function(err) {
if (err !== undefined) {
console.log('Error on startup, ',err);
}
else {
console.log('Listening on port 3000');
}
});
Loading

0 comments on commit ae3565c

Please sign in to comment.