Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const path = require('path');
- const express = require('express');
- const http = require('http');
- const app = express();
- const portti = process.env.PORT || 3000;
- const host = process.env.HOST || 'localhost';
- const palvelin = http.createServer(app);
- //apufunktio helpottamaan palvelinvirheen lähettämistä
- const palvelinvirhe = res => res.status(500).render('virhesivu', {
- viesti: 'Palvelimen virhe'
- });
- const optiot = require(path.join(__dirname, 'tietovarasto', '/mopovarastoConfig.json'));
- const Mopokanta = require(path.join(__dirname, 'tietovarasto', '/mopovarasto.js'));
- const mopot = new Mopokanta(optiot);
- const valikkopolku = path.join(__dirname, 'valikko.html');
- app.set('view engine', 'ejs');
- app.set('views', path.join(__dirname, 'sivumallit'));
- //julkiset resurssit käyttöön resurssit-kansion alta
- //kansiot resurssit ei merkitä linkanttavaan polkuun.
- //siis esimerkiksi polku EI ole /resurssit/tyylit/tyylit.css
- //vaan polku on /tyylit/tyylit.css
- app.use(express.static(path.join(__dirname, 'resurssit')));
- //otetaan lomaketiedon muunto automaattisesti käyttöön.
- //Näin ei tarvitse erikseen lisätä jokaiseen polkuun
- app.use(express.urlencoded({extended: false}));
- //lähettää valikon selaimeen
- app.get('/', (req, res) => res.sendFile(valikkopolku));
- //hakee mopovarastosta kaikki mopot ja lähettää ne selaimeen
- app.get('/kaikki', async (req, res) => {
- try {
- const tulos = await mopot.haeKaikki();
- res.render('haeKaikki', {
- mopot: tulos
- });
- } catch (virhe) {
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- });
- //lähettää hakulomakkeen selaimeen
- app.get('/hae', (req, res) => {
- res.render('haeMopo', {
- paaotsikko: 'mopon haku',
- otsikko: 'Syötä mopoId',
- toiminto: '/hae'
- });
- });
- //hakee hakulomakkeelle syötettyä mopoId:tä vastaavan
- //mopo-olion mopovarastosta
- app.post('/hae', async (req, res) => {
- if (!req.body) {
- palvelinvirhe(res);
- } else {
- try {
- const tulos = await mopot.hae(req.body.mopoId);
- if (tulos.viesti) {
- res.render('tilasivu', {
- paaotsikko: 'Hakutulos',
- otsikko: 'Viesti',
- viesti: tulos.viesti
- });
- } else {
- res.render('hakutulos', {
- mopo: tulos
- });
- }
- } catch (virhe) {
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- }
- });
- //lähettää poistolomakkeen selaimeen
- app.get('/poista', (req, res) => {
- res.render('haeMopo', {
- paaotsikko: 'Mopon haku',
- otsikko: 'Syötä mopoId',
- toiminto: '/poista'
- });
- });
- //Käsitellään lomakkeelta tuleva tieto ja suoritetaan poisto
- app.post('/poista', async (req, res) => {
- if (!req.body) {
- palvelinvirhe(res);
- } else {
- try {
- const tulos = await mopot.poista(req.body.mopoId);
- res.render('tilasivu', {
- paaotsikko: 'Poiston tulos',
- otsikko: 'Viesti',
- viesti: tulos.viesti
- });
- } catch (virhe) {
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- }
- });
- //lähettää lomakkeen selaimeen
- app.get('/lisaa', (req, res) => {
- res.render('lomake', {
- paaotsikko: 'mopon lisäys',
- otsikko: 'Syötä tiedot',
- toiminto: '/lisaa',
- mopoId: {
- arvo: '',
- vainluku: ''
- },
- merkki: {
- arvo: '',
- vainluku: ''
- },
- varastoLkm: {
- arvo: '',
- vainluku: ''
- },
- arvostelu: {
- arvo: '',
- vainluku: ''
- },
- huippunopeus: {
- arvo: '',
- vainluku: ''
- }
- });
- });
- //käsittelee lomakkeelta tulevan tiedon ja vie mopovarastoon
- app.post('/lisaa', async (req, res) => {
- if (!req.body) {
- palvelinvirhe(res);
- } else {
- try {
- if (req.body.mopoId && req.body.merkki) {
- const tulos = await mopot.lisaa(req.body);
- res.render('tilasivu', {
- paaotsikko: 'Lisäyksen tulos',
- otsikko: 'Viesti',
- viesti: tulos.viesti
- });
- } else {
- res.redirect('/lisaa');
- }
- } catch (virhe) {
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- }
- });
- //lähettää lomakkeen selaimeen
- app.get('/paivita', (req, res) => {
- res.render('lomake', {
- paaotsikko: 'mopon päivitys',
- otsikko: 'Syötä tiedot',
- toiminto: '/paivita',
- mopoId: {
- arvo: '',
- vainluku: ''
- },
- merkki: {
- arvo: '',
- vainluku: 'readonly'
- },
- varastoLkm: {
- arvo: '',
- vainluku: 'readonly'
- },
- arvostelu: {
- arvo: '',
- vainluku: 'readonly'
- },
- huippunopeus: {
- arvo: '',
- vainluku: 'readonly'
- }
- });
- });
- //hakee lomakkeelta tulevan mopoId:n perusteella mopon
- //ja lähettää mopon tiedoilla täytetyn lomakkeen selaimeen
- app.post('/paivita', async (req, res) => {
- if (!req.body) {
- palvelinvirhe(res);
- } else {
- try {
- const tulos = await mopot.hae(req.body.mopoId);
- if (tulos.viesti) {
- res.render('tilasivu', {
- paaotsikko: 'Hakutulos',
- otsikko: 'Viesti',
- viesti: tulos.viesti
- });
- } else {
- res.render('lomake', {
- paaotsikko: 'mopon päivitys',
- otsikko: 'Syötä tiedot',
- toiminto: '/paivitatiedot',
- mopoId: {
- arvo: tulos.mopoId,
- vainluku: 'readonly'
- },
- merkki: {
- arvo: tulos.merkki,
- vainluku: ''
- },
- varastoLkm: {
- arvo: tulos.varastoLkm,
- vainluku: ''
- },
- arvostelu: {
- arvo: tulos.arvostelu,
- vainluku: ''
- },
- huippunopeus: {
- arvo: tulos.huippunopeus,
- vainluku: ''
- }
- });
- }
- } catch (virhe) {
- console.log(virhe.message);
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- }
- });
- //päivittää mopovarastoon lomakkeelta tulevan
- //muokatun mopo - olion
- app.post('/paivitatiedot', async (req, res) => {
- if (!req.body) {
- palvelinvirhe(res);
- } else {
- try {
- const tulos = await mopot.paivita(req.body);
- res.render('tilasivu', {
- paaotsikko: 'Päivityksen tulos',
- otsikko: 'Viesti',
- viesti: tulos.viesti
- });
- } catch (virhe) {
- res.render('virhesivu', {
- viesti: virhe.message
- });
- }
- }
- });
- palvelin.listen(portti, host, () =>
- console.log(`Palvelin ${host} palvelee portissa ${portti}.`)
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement