Browse Source

Todo El Webapp

Esto es lo que se va a ver de parte del restaurante
parent
commit
17f09d4ba6
59 changed files with 1447 additions and 1305 deletions
  1. 0
    110
      OrdenarPorApp/css/index.css
  2. BIN
      OrdenarPorApp/img/Pasta.png
  3. BIN
      OrdenarPorApp/img/Pizzeta.png
  4. BIN
      OrdenarPorApp/img/logo.png
  5. 0
    41
      OrdenarPorApp/index.html
  6. 0
    83
      OrdenarPorApp/js/script.js
  7. 0
    38
      OrdenarPorApp/order_summary.html
  8. 0
    11
      README.md
  9. 0
    0
      TiendaDeBotellas/Camo.txt
  10. BIN
      TiendaDeBotellas/imagenesDeProductos/20200324_173729.jpg
  11. BIN
      TiendaDeBotellas/imagenesDeProductos/IMG-20180402-WA0046.jpg
  12. BIN
      TiendaDeBotellas/imagenesDeProductos/IMG-20180407-WA0022.jpeg
  13. BIN
      TiendaDeBotellas/imagenesDeProductos/IMG-20180407-WA0032.jpeg
  14. BIN
      TiendaDeBotellas/imagenesDeProductos/IMG-20180508-WA0100.jpg
  15. BIN
      TiendaDeBotellas/imagenesDeProductos/Screenshot (1).png
  16. BIN
      TiendaDeBotellas/imagenesDeProductos/[DmonHiro] Jojo's Bizarre Adventure - 19 - A Race Toward The Brink (BD, 720p) [49F67D00].mkv_snapshot_22.20_[2019.09.20_19.44.37].jpg
  17. BIN
      TiendaDeBotellas/imagenesDeProductos/download.png
  18. 389
    0
      TiendaDeBotellas/main.py
  19. 32
    0
      TiendaDeBotellas/script.py
  20. BIN
      TiendaDeBotellas/static/1.jpg
  21. BIN
      TiendaDeBotellas/static/15-Minute-Pizza-WS-Thumbnail.png
  22. BIN
      TiendaDeBotellas/static/180820-bookazine-delish-01280-1536610916.jpg
  23. BIN
      TiendaDeBotellas/static/20200324_173729.jpg
  24. BIN
      TiendaDeBotellas/static/28-286335_view-samegoogleiqdbsaucenao-yvkevqi-blob-sweat-emoji-discord.png
  25. BIN
      TiendaDeBotellas/static/8461_4k.jpg
  26. BIN
      TiendaDeBotellas/static/IMG-20180402-WA0046.jpg
  27. BIN
      TiendaDeBotellas/static/IMG-20180402-WA0060.jpg
  28. BIN
      TiendaDeBotellas/static/IMG-20180407-WA0022.jpeg
  29. BIN
      TiendaDeBotellas/static/IMG-20180407-WA0026.jpeg
  30. BIN
      TiendaDeBotellas/static/IMG-20180407-WA0032.jpeg
  31. BIN
      TiendaDeBotellas/static/IMG-20180508-WA0100.jpg
  32. BIN
      TiendaDeBotellas/static/IMG-20180606-WA0188.jpeg
  33. BIN
      TiendaDeBotellas/static/PizzaHutDelivery.jpg
  34. BIN
      TiendaDeBotellas/static/Screenshot (1).png
  35. BIN
      TiendaDeBotellas/static/[DmonHiro] Jojo's Bizarre Adventure - 19 - A Race Toward The Brink (BD, 720p) [49F67D00].mkv_snapshot_22.20_[2019.09.20_19.44.37].jpg
  36. 97
    0
      TiendaDeBotellas/static/css/tienda.css
  37. 3
    0
      TiendaDeBotellas/static/desktop.ini
  38. BIN
      TiendaDeBotellas/static/download.png
  39. BIN
      TiendaDeBotellas/static/download2.jpg
  40. 11
    0
      TiendaDeBotellas/static/ejemploCSV.csv
  41. BIN
      TiendaDeBotellas/static/graves.PNG
  42. BIN
      TiendaDeBotellas/static/pexels-tbee-82256.jpg
  43. BIN
      TiendaDeBotellas/static/pizza_fresca.jpg
  44. BIN
      TiendaDeBotellas/static/prev_1080.jpg
  45. BIN
      TiendaDeBotellas/static/water-pinkomelet.jpg
  46. 28
    0
      TiendaDeBotellas/templates/ElMenuCategorizado.html
  47. 29
    0
      TiendaDeBotellas/templates/LasBebidas.html
  48. 89
    0
      TiendaDeBotellas/templates/addItem.html
  49. 42
    0
      TiendaDeBotellas/templates/csvMenu.html
  50. 61
    0
      TiendaDeBotellas/templates/header.html
  51. 25
    0
      TiendaDeBotellas/templates/home.html
  52. 340
    0
      TiendaDeBotellas/templates/ordenes.html
  53. 100
    0
      TiendaDeBotellas/templates/tiendaPrincipal.html
  54. 201
    0
      TiendaDeBotellas/templates/verComida.html
  55. 0
    173
      about.html
  56. 0
    220
      gallery.html
  57. 0
    223
      gallery2.html
  58. 0
    191
      gallery3.html
  59. 0
    215
      index.html

+ 0
- 110
OrdenarPorApp/css/index.css View File

@@ -1,110 +0,0 @@
1
-/*
2
- * Licensed to the Apache Software Foundation (ASF) under one
3
- * or more contributor license agreements.  See the NOTICE file
4
- * distributed with this work for additional information
5
- * regarding copyright ownership.  The ASF licenses this file
6
- * to you under the Apache License, Version 2.0 (the
7
- * "License"); you may not use this file except in compliance
8
- * with the License.  You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied.  See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
-* {
20
-    -webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
21
-}
22
-
23
-body {
24
-    -webkit-touch-callout: none;                /* prevent callout to copy image, etc when tap to hold */
25
-    -webkit-text-size-adjust: none;             /* prevent webkit from resizing text to fit */
26
-    -webkit-user-select: none;                  /* prevent copy paste, to allow, change 'none' to 'text' */
27
-    background-color:#E4E4E4;
28
-    /*background-image:linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%);*/
29
-    font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif;
30
-    font-size:12px;
31
-    height:100vh;
32
-    margin:0px;
33
-    padding:0px;
34
-    /* Padding to avoid the "unsafe" areas behind notches in the screen */
35
-    padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
36
-    text-transform:uppercase;
37
-    width:100%;
38
-}
39
-
40
-/* Portrait layout (default) */
41
-.app {
42
-    background: #E4E4E4 no-repeat center top; /* 170px x 200px */
43
-    position:absolute;             /* position in the center of the screen */
44
-    left:50%;
45
-    top:50%;
46
-    height:50px;                   /* text area height */
47
-    width:225px;                   /* text area width */
48
-    text-align:center;
49
-    padding:180px 0px 0px 0px;     /* image height is 200px (bottom 20px are overlapped with text) */
50
-    margin:-115px 0px 0px -112px;  /* offset vertical: half of image height and text area height */
51
-                                   /* offset horizontal: half of text area width */
52
-}
53
-
54
-/* Landscape layout (with min-width) */
55
-@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
56
-    .app {
57
-        background-position:left center;
58
-        padding:75px 0px 75px 170px;  /* padding-top + padding-bottom + text area = image height */
59
-        margin:-90px 0px 0px -198px;  /* offset vertical: half of image height */
60
-                                      /* offset horizontal: half of image width and text area width */
61
-    }
62
-}
63
-
64
-h1 {
65
-    font-size:24px;
66
-    font-weight:normal;
67
-    margin:0px;
68
-    overflow:visible;
69
-    padding:0px;
70
-    text-align:center;
71
-}
72
-
73
-.event {
74
-    border-radius:4px;
75
-    color:#FFFFFF;
76
-    font-size:12px;
77
-    margin:0px 30px;
78
-    padding:2px 0px;
79
-}
80
-
81
-.event.listening {
82
-    background-color:#333333;
83
-    display:block;
84
-}
85
-
86
-.event.received {
87
-    background-color:#4B946A;
88
-    display:none;
89
-}
90
-
91
-#deviceready.ready .event.listening { display: none; }
92
-#deviceready.ready .event.received { display: block; }
93
-
94
-@keyframes fade {
95
-    from { opacity: 1.0; }
96
-    50% { opacity: 0.4; }
97
-    to { opacity: 1.0; }
98
-}
99
-
100
-.blink {
101
-    animation:fade 3000ms infinite;
102
-    -webkit-animation:fade 3000ms infinite;
103
-}
104
-
105
-
106
-@media screen and (prefers-color-scheme: dark) {
107
-    body {
108
-        background-image:linear-gradient(to bottom, #585858 0%, #1B1B1B 51%);
109
-    }
110
-}

BIN
OrdenarPorApp/img/Pasta.png View File


BIN
OrdenarPorApp/img/Pizzeta.png View File


BIN
OrdenarPorApp/img/logo.png View File


+ 0
- 41
OrdenarPorApp/index.html View File

@@ -1,41 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-    <head>
4
-        <meta charset="utf-8">
5
-        <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />
6
-        <meta name="format-detection" content="telephone=no">
7
-        <meta name="msapplication-tap-highlight" content="no">
8
-        <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
9
-        <meta name="color-scheme" content="light dark">
10
-        <script src="js/script.js"></script>
11
-        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
12
-        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
13
-        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
14
-        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
15
-        <link rel="stylesheet" href="css/index.css">
16
-        <title>Linguini Rest.</title>
17
-    </head>
18
-    
19
-    <body>
20
-        <div>
21
-            <h3>Escoja lo que vaya a ordenar:</h3>
22
-            <h3>Pastas:</h3>
23
-            <br>
24
-            <div id = "PastaDiv">
25
-                <script>
26
-                    item_display("Pasta");
27
-                </script>
28
-            </div>
29
-
30
-            <h3>Pizzetas:</h3>
31
-            <br>
32
-    
33
-            <div id = "PizzetaDiv">
34
-                <script>
35
-                    item_display("Pizzeta");
36
-                </script>
37
-            </div>
38
-            <a type = "button" class = "btn btn-primary btn-sm" href = "order_summary.html">Someter Orden</a>
39
-        </div>
40
-    </body>
41
-</html>

+ 0
- 83
OrdenarPorApp/js/script.js View File

@@ -1,83 +0,0 @@
1
-var orden = new Map();
2
-var menu = new Map();
3
-menu.set('Pasta',[
4
-    "Gardenia",
5
-    "Primavera",
6
-    "Carbonara",
7
-    "Carnivorum",
8
-    "Primavera con pollo",
9
-    "Chicken carbonara",
10
-    "Al pesto",
11
-    "Pollo marsala",
12
-    "Chicken and shrimp"
13
-]);
14
-menu.set('Pizzeta', [
15
-    "Simply Cheese",
16
-    "Carbonara",
17
-    "Al pesto",
18
-    "Beef & Onion",
19
-    "Pepperoni",
20
-    "Bacon & Mushroom",
21
-    "Churrasco Hollandaise",
22
-    "Mr Wedge",
23
-    "BBQ Meatlovers"
24
-]);
25
-
26
-function add_item(item, category, num){
27
-    var val = parseInt(document.getElementsByName(category + 'qty' + num)[0].value);
28
-    var selection = category + " " + item;
29
-    if (!orden.get(selection)){
30
-        orden.set(selection, val);
31
-    }
32
-
33
-    else{
34
-        orden.set(selection, orden.get(selection) + val);    
35
-    }
36
-    localStorage.orden_local = JSON.stringify(Array.from(orden.entries()));
37
-    console.log(orden);
38
-}
39
-
40
-function item_display(category){
41
-    var cat_list = menu.get(category);
42
-    var page = document.getElementById(category + "Div");
43
-    var card_collection = "";
44
-    for(var i = 0; i < cat_list.length; i++){
45
-        card_collection += `<div class="card" style="width: 18rem;">
46
-       <img class="card-img-top" src="img/` + category + `.png" alt="Image of ` + category + `">
47
-       <div class="card-body">
48
-           <h5 class="card-title">` + cat_list[i] + `</h5>
49
-           <div style = "width: 100px; display: table; margin: 4px; padding: 1px;">
50
-                <div style = "display: table-cell; width: 100%;">
51
-                    <input style = "width: 100%; margin: 1px;" type = "number" min = "1" value = "1" name = "`+ category + `qty` + i + `">
52
-                </div>
53
-                <div style = "padding: 5px">
54
-                    <button class="btn btn-primary btn-sm" onclick = "add_item('` + cat_list[i] + `', '` + category + `', `+ i + `)">Add</buton>
55
-                </div>
56
-           </div>
57
-        </div>
58
-        </div>`;
59
-    }
60
-    card_collection += "<br>";
61
-    page.innerHTML = card_collection;
62
-}
63
-
64
-function order_summary(){
65
-    try{
66
-        orden = new Map(JSON.parse(localStorage.orden_local));
67
-    }
68
-    catch(err){
69
-        alert("ERROR: Orden invalida")
70
-        window.location.href = "index.html";
71
-    }
72
-    localStorage.orden_local = []
73
-    var page = document.getElementById("rows");
74
-    var orden_table = "";
75
-    for(let [key,value] of orden){
76
-        orden_table += `<tr>
77
-            <td>` + key + `</td>
78
-            <td>` + value + `</td>
79
-        </tr>`
80
-    }
81
-    page.innerHTML = orden_table;
82
-}
83
-

+ 0
- 38
OrdenarPorApp/order_summary.html View File

@@ -1,38 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-    <head>
4
-        <meta charset="utf-8">
5
-        <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />
6
-        <meta name="format-detection" content="telephone=no">
7
-        <meta name="msapplication-tap-highlight" content="no">
8
-        <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
9
-        <meta name="color-scheme" content="light dark">
10
-        <script src="js/script.js"></script>
11
-        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
12
-        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
13
-        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
14
-        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
15
-        <link rel="stylesheet" href="css/index.css">
16
-        <title>Linguini Rest.</title>
17
-    </head>
18
-    
19
-    <body>
20
-        <div>
21
-            <h3>Su orden:</h3>
22
-            <table class="table table-sm table-striped" style = "border: 1px solid black; width: 250px;">
23
-                <thead>
24
-                  <tr>
25
-                    <th scope="col">Item</th>
26
-                    <th scope="col">Cantidad</th>
27
-                  </tr>
28
-                </thead>
29
-                <tbody id = "rows">
30
-                <script>
31
-                    order_summary();
32
-                </script>
33
-                </tbody>
34
-            </table>
35
-
36
-        </div>
37
-    </body>
38
-</html>

+ 0
- 11
README.md View File

@@ -1,11 +0,0 @@
1
-Pablo J. Loyola: Algo escrito por ahora
2
-
3
-
4
-
5
-Gabriel A. Santiago Plaza: Estamos activos or Nah?
6
-
7
-
8
-Christopher Ayala: Claro
9
-
10
-
11
-Alejandro Rodríguez Rosado: Sure... 

+ 0
- 0
TiendaDeBotellas/Camo.txt View File


BIN
TiendaDeBotellas/imagenesDeProductos/20200324_173729.jpg View File


BIN
TiendaDeBotellas/imagenesDeProductos/IMG-20180402-WA0046.jpg View File


BIN
TiendaDeBotellas/imagenesDeProductos/IMG-20180407-WA0022.jpeg View File


BIN
TiendaDeBotellas/imagenesDeProductos/IMG-20180407-WA0032.jpeg View File


BIN
TiendaDeBotellas/imagenesDeProductos/IMG-20180508-WA0100.jpg View File


BIN
TiendaDeBotellas/imagenesDeProductos/Screenshot (1).png View File


BIN
TiendaDeBotellas/imagenesDeProductos/[DmonHiro] Jojo's Bizarre Adventure - 19 - A Race Toward The Brink (BD, 720p) [49F67D00].mkv_snapshot_22.20_[2019.09.20_19.44.37].jpg View File


BIN
TiendaDeBotellas/imagenesDeProductos/download.png View File


+ 389
- 0
TiendaDeBotellas/main.py View File

@@ -0,0 +1,389 @@
1
+from flask import Flask, render_template, request, redirect, jsonify
2
+
3
+from flask_sqlalchemy import SQLAlchemy
4
+
5
+import datetime
6
+import json
7
+import urllib.request
8
+import os
9
+import csv
10
+import sys
11
+
12
+app = Flask(__name__)
13
+
14
+
15
+connect = 'mysql+pymysql://root@localhost/restaurante'
16
+
17
+app.config['SQLALCHEMY_DATABASE_URI'] = connect
18
+
19
+db = SQLAlchemy(app)
20
+
21
+path_to_upload = os.getcwd() + '/static'
22
+
23
+if os.path.isdir(path_to_upload):
24
+    app.config['UPLOAD_FOLDER'] = path_to_upload
25
+else:
26
+    os.mkdir(path_to_upload)
27
+    app.config['UPLOAD_FOLDER'] = path_to_upload
28
+
29
+
30
+class ordenes(db.Model):
31
+    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
32
+    nombre_cliente = db.Column(db.String(60))
33
+    fecha = db.Column((db.DateTime), default=datetime.datetime.utcnow)
34
+    num_celular = db.Column(db.String(14))
35
+
36
+
37
+class comida(db.Model):
38
+    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
39
+    categoria = db.Column(db.String(20))
40
+    path_a_imagen = db.Column(db.String(50))
41
+    nombre = db.Column(db.String(50))
42
+    precio = db.Column(db.Float)
43
+    descripcion = db.Column(db.Text)
44
+    comida_bebida = db.Column(db.Integer)
45
+
46
+
47
+class orden_comida(db.Model):
48
+    orden_id = db.Column(db.Integer, db.ForeignKey(ordenes.id))
49
+    comida_id = db.Column(db.Integer, db.ForeignKey(comida.id))
50
+    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
51
+    peticion = db.Column(db.Text, default=None)
52
+
53
+
54
+class orden_servidas(db.Model):
55
+    orden_id = db.Column(db.Integer, db.ForeignKey(
56
+        ordenes.id), primary_key=True)
57
+
58
+
59
+@app.route('/')
60
+def menu():
61
+    return render_template('home.html', descripcion='Restaurante Ejemplo')
62
+
63
+
64
+@app.route('/ElMenuCategorizado')
65
+def ElMenuCategorizado():
66
+    categorias = db.engine.execute(
67
+        'SELECT DISTINCT categoria from comida where comida_bebida =0')
68
+    return render_template('ElMenuCategorizado.html', descripcion='El Menú', categorias=categorias)
69
+
70
+
71
+@app.route('/view/<string:categoriaStr>', methods=['POST', 'GET'])
72
+def viewItem(categoriaStr):
73
+    if request.method == 'POST':
74
+
75
+        files = request.files['imagen']
76
+        if files:
77
+            filename = (files.filename)
78
+            files.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
79
+
80
+        post_nombre = request.form['nombre']
81
+        post_descripcion = request.form['descripcion']
82
+        post_precio = float(request.form['Precio'])
83
+        try:
84
+            post_categoria = request.form['selectCat']
85
+            if post_categoria == '0':
86
+                post_categoria = request.form['nuevaCategoria']
87
+        except KeyError:
88
+            post_categoria = categoriaStr
89
+
90
+        post_id = request.form['idItem']
91
+
92
+        if files:
93
+            db.engine.execute(
94
+                'update comida set nombre ="{}", descripcion ="{}", precio ={}, categoria ="{}", path_a_imagen ="{}" where id = {}'.format(post_nombre, post_descripcion, post_precio, post_categoria, files.filename, post_id))
95
+        else:
96
+            db.engine.execute(
97
+                'update comida set nombre ="{}", descripcion ="{}", precio ={}, categoria ="{}" where id = {}'.format(post_nombre, post_descripcion, post_precio, post_categoria, post_id))
98
+
99
+        db.session.commit()
100
+        return redirect('/view/'+categoriaStr)
101
+    else:
102
+
103
+        items = comida.query.filter_by(categoria=categoriaStr).all()
104
+        categorias = db.engine.execute(
105
+            'SELECT DISTINCT categoria from comida where comida_bebida=0')
106
+        return render_template('verComida.html', link='view', descripcion=categoriaStr, items=items, categorias=categorias)
107
+
108
+
109
+@app.route('/deleteItem/<string:categoriaStr>/<int:itemId>')
110
+def deleteItem(categoriaStr, itemId):
111
+    item = comida.query.filter_by(id=itemId).first()
112
+    db.session.delete(item)
113
+    db.session.commit()
114
+
115
+    return redirect('/view/'+categoriaStr)
116
+
117
+
118
+@app.route('/csvMenu', methods=['POST', 'GET'])
119
+def csvMenu():
120
+    if request.method == 'POST':
121
+
122
+        files = request.files['CSV_file']
123
+        if files:
124
+            filename = (files.filename)
125
+            files.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
126
+
127
+        with open(os.getcwd() + '/static/'+filename) as csv_file:
128
+            csv_reader = csv.reader(csv_file, delimiter=',')
129
+
130
+            for row in csv_reader:
131
+
132
+                try:
133
+
134
+                    post_nombre = row[0]
135
+
136
+                    post_descripcion = row[1]
137
+
138
+                    post_precio = float(row[2])
139
+                    post_categoria = row[3]
140
+                    post_nombreImagen = row[4]
141
+                    post_comidaBebida = int(row[5])
142
+
143
+                    db.session.add(comida(nombre=row[0], descripcion=row[1], precio=float(row[2]),
144
+                                          path_a_imagen=row[4], comida_bebida=row[5], categoria=row[3]))
145
+                    db.session.commit()
146
+
147
+                except ValueError:
148
+                    continue
149
+            return redirect('/')
150
+
151
+    else:
152
+        return render_template('csvMenu.html', descripcion='Subir CSV')
153
+
154
+
155
+@app.route('/addItem', methods=['POST', 'GET'])
156
+def addItem():
157
+
158
+    if request.method == 'POST':
159
+        files = request.files['imagen']
160
+        if files:
161
+            filename = (files.filename)
162
+            files.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
163
+
164
+        post_nombre = request.form['nombre']
165
+        post_descripcion = request.form['descripcion']
166
+        post_precio = float(request.form['Precio'])
167
+        post_categoria = request.form['categoria']
168
+
169
+        if post_categoria == '0':
170
+
171
+            post_categoria = request.form['nuevaCategoria']
172
+        post_tipo = request.form['tipoDeItem']
173
+
174
+        db.session.add(comida(nombre=post_nombre, categoria=post_categoria, descripcion=post_descripcion,
175
+                              precio=post_precio, path_a_imagen=files.filename, comida_bebida=post_tipo))
176
+        db.session.commit()
177
+        return redirect('/addItem')
178
+    else:
179
+        categorias = db.engine.execute(
180
+            'SELECT DISTINCT categoria from comida where comida_bebida =0')
181
+        return render_template('addItem.html', descripcion='Añadir item al menú', categorias=categorias)
182
+
183
+
184
+@app.route('/viewBebidas')
185
+def viewBebidas():
186
+    categorias = db.engine.execute(
187
+        'SELECT DISTINCT categoria from comida where comida_bebida =1')
188
+    return render_template('LasBebidas.html', descripcion='El Menú', categorias=categorias)
189
+
190
+
191
+last_entry = 0
192
+
193
+
194
+@app.route('/ordenes', methods=['POST', 'GET'])
195
+def ordenesFun():
196
+    if request.method == 'POST':
197
+        post_order = int(request.get_json()['order'])
198
+        db.engine.execute(
199
+            'delete from `ordenes` where id = {}'.format(post_order))
200
+        db.engine.execute(
201
+            'delete from `orden_comida` where orden_id ={}'.format(post_order))
202
+        db.session.commit()
203
+        return redirect('/ordenes')
204
+
205
+    else:
206
+        global last_entry
207
+        ordenesJson = {}
208
+        ordenesCompletas = ordenes.query.all()
209
+        for orden in ordenesCompletas:
210
+            print(orden.id, file=sys.stderr)
211
+            query2 = db.engine.execute(
212
+                'SELECT comida_id, peticion, categoria, nombre, precio, comida_bebida FROM `ordenes`, `orden_comida`, comida where comida.id=orden_comida.comida_id and ordenes.id = orden_comida.orden_id and orden_comida.orden_id = {} ORDER BY ordenes.id '.format(orden.id))
213
+
214
+            ordenFull = []
215
+            for comida in query2:
216
+                ordenesDict = {}
217
+                ordenesDict['comida_id'] = comida.comida_id
218
+                ordenesDict['peticion'] = comida.peticion
219
+                ordenesDict['nombre'] = comida.nombre
220
+                ordenesDict['categoria'] = comida.categoria
221
+                ordenesDict['precio'] = comida.precio
222
+                ordenesDict['comida_bebida'] = comida.comida_bebida
223
+
224
+                ordenFull.append(ordenesDict)
225
+
226
+            print(ordenFull, file=sys.stderr)
227
+            ordenesJson.setdefault(orden.id, {})['ordenCompleta'] = ordenFull
228
+            ordenesJson[orden.id]['nombre'] = orden.nombre_cliente
229
+            ordenesJson[orden.id]['num_celular'] = orden.num_celular
230
+            ordenesJson[orden.id]['fecha'] = orden.fecha
231
+            last_entry = orden.id
232
+        return render_template('ordenes.html', ordenes=ordenesJson, descripcion='Ordenes Pendientes')
233
+
234
+
235
+@app.route('/retrieveMenu', methods=['POST', 'GET'])
236
+def retrieveMenu():
237
+    if request.method == "GET":
238
+        categoriasDeComida = db.engine.execute(
239
+            "select categoria from comida where comida_bebida =0")
240
+        comidaDict = {}
241
+        for categoria in categoriasDeComida:
242
+
243
+            query = db.engine.execute(
244
+                "select * from comida where categoria ='{}'".format(categoria['categoria']))
245
+            comidaDict[categoria['categoria']] = {}
246
+            for item in query:
247
+
248
+                comidaDict[categoria['categoria']][item['id']] = {}
249
+                comidaDict[categoria['categoria']
250
+                           ][item['id']]['nombre'] = item['nombre']
251
+                comidaDict[categoria['categoria']
252
+                           ][item['id']]["precio"] = item["precio"]
253
+                comidaDict[categoria['categoria']
254
+                           ][item['id']]["descripcion"] = item["descripcion"]
255
+                comidaDict[categoria['categoria']
256
+                           ][item['id']]["path_a_imagen"] = item["path_a_imagen"]
257
+
258
+        categoriasDeBebidas = db.engine.execute(
259
+            "select categoria from comida where comida_bebida=1")
260
+        bebidaDict = {}
261
+        for categoria in categoriasDeBebidas:
262
+
263
+            query = db.engine.execute(
264
+                "select * from comida where categoria ='{}'".format(categoria['categoria']))
265
+            bebidaDict[categoria['categoria']] = {}
266
+            for item in query:
267
+
268
+                bebidaDict[categoria['categoria']][item['id']] = {}
269
+                bebidaDict[categoria['categoria']
270
+                           ][item['id']]['id'] = item['id']
271
+                bebidaDict[categoria['categoria']
272
+                           ][item['id']]['nombre'] = item['nombre']
273
+                bebidaDict[categoria['categoria']
274
+                           ][item['id']]["precio"] = item["precio"]
275
+                bebidaDict[categoria['categoria']
276
+                           ][item['id']]["descripcion"] = item["descripcion"]
277
+                bebidaDict[categoria['categoria']
278
+                           ][item['id']]["path_a_imagen"] = item["path_a_imagen"]
279
+
280
+        wholeDict = {"comidas": comidaDict, "bebidas": bebidaDict}
281
+        print(wholeDict)
282
+
283
+        return jsonify(wholeDict)
284
+
285
+
286
+@app.route('/papelonDeComida', methods=['POST', 'GET'])
287
+def papelonDeComida():
288
+    global last_entry
289
+    if request.method == 'GET':
290
+        ordenesJson = {}
291
+        ordenesCompletas = ordenes.query.filter(
292
+            ordenes.id > last_entry).all()
293
+        for orden in ordenesCompletas:
294
+
295
+            query2 = db.engine.execute(
296
+                'SELECT comida_id, peticion, categoria, nombre, precio, comida_bebida FROM `ordenes`, `orden_comida`, comida where comida.id=orden_comida.comida_id and ordenes.id = orden_comida.orden_id and orden_comida.orden_id = {} ORDER BY ordenes.id '.format(orden.id))
297
+
298
+            ordenFull = []
299
+            for comida in query2:
300
+                ordenesDict = {}
301
+                ordenesDict['comida_id'] = comida.comida_id
302
+                ordenesDict['peticion'] = comida.peticion
303
+                ordenesDict['nombre'] = comida.nombre
304
+                ordenesDict['categoria'] = comida.categoria
305
+                ordenesDict['precio'] = comida.precio
306
+                ordenesDict['comida_bebida'] = comida.comida_bebida
307
+
308
+                ordenFull.append(ordenesDict)
309
+
310
+            print(ordenFull, file=sys.stderr)
311
+            ordenesJson.setdefault(orden.id, {})['ordenCompleta'] = ordenFull
312
+            ordenesJson[orden.id]['nombre'] = orden.nombre_cliente
313
+            ordenesJson[orden.id]['num_celular'] = orden.num_celular
314
+            ordenesJson[orden.id]['fecha'] = orden.fecha
315
+            last_entry = orden.id
316
+        return jsonify(ordenesJson)
317
+    else:
318
+        print('vamos a insertar', file=sys.stderr)
319
+        post_nombre = request.get_json()[0]['nombre']
320
+        post_num = request.get_json()[0]['celular']
321
+        post_order = []
322
+        post_order.append(request.get_json()[0]['ordenCompleta'])
323
+        post_order.append(request.get_json()[0]['peticiones'])
324
+
325
+        print(post_order, file=sys.stderr)
326
+
327
+        db.session.add(
328
+            ordenes(nombre_cliente=post_nombre, num_celular=post_num))
329
+        db.session.commit()
330
+        last_id = ordenes.query.order_by(ordenes.id.desc()).first().id
331
+        print(last_id, file=sys.stderr)
332
+        for order in post_order[0]:
333
+            try:
334
+                print(order, file=sys.stderr)
335
+                post_peti = post_order[1][order]
336
+            except KeyError as k:
337
+                post_peti = ""
338
+
339
+            db.session.add(orden_comida(orden_id=last_id,
340
+                                        comida_id=post_order[0][order], peticion=post_peti))
341
+
342
+            print("Insertando", file=sys.stderr)
343
+            db.session.commit()
344
+
345
+        return "YOU DID IT"
346
+
347
+
348
+@app.route('/viewBebidas/<string:categoriaStr>', methods=['POST', 'GET'])
349
+def viewBebida(categoriaStr):
350
+    if request.method == 'POST':
351
+
352
+        files = request.files['imagen']
353
+        if files:
354
+            filename = (files.filename)
355
+            files.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
356
+
357
+        post_nombre = request.form['nombre']
358
+        post_descripcion = request.form['descripcion']
359
+        post_precio = float(request.form['Precio'])
360
+        try:
361
+            post_categoria = request.form['selectCat']
362
+            print(post_categoria)
363
+            if post_categoria == '0':
364
+                print('im here')
365
+                post_categoria = request.form['nuevaCategoria']
366
+        except KeyError:
367
+            post_categoria = categoriaStr
368
+
369
+        post_id = request.form['idItem']
370
+
371
+        if files:
372
+            db.engine.execute(
373
+                'update comida set nombre ="{}", descripcion ="{}", precio ={}, categoria ="{}", path_a_imagen ="{}" where id = {}'.format(post_nombre, post_descripcion, post_precio, post_categoria, files.filename, post_id))
374
+        else:
375
+            db.engine.execute(
376
+                'update comida set nombre ="{}", descripcion ="{}", precio ={}, categoria ="{}" where id = {}'.format(post_nombre, post_descripcion, post_precio, post_categoria, post_id))
377
+
378
+        db.session.commit()
379
+        return redirect('/viewBebidas/'+categoriaStr)
380
+    else:
381
+
382
+        items = comida.query.filter_by(categoria=categoriaStr).all()
383
+        categorias = db.engine.execute(
384
+            'SELECT DISTINCT categoria from comida where comida_bebida =1')
385
+        return render_template('verComida.html', link='viewBebidas', descripcion=categoriaStr, items=items, categorias=categorias)
386
+
387
+
388
+if __name__ == "__main__":
389
+    app.run(debug=True, threaded=True,)

+ 32
- 0
TiendaDeBotellas/script.py View File

@@ -0,0 +1,32 @@
1
+from flask import Flask, render_template, request, redirect, jsonify
2
+import requests
3
+
4
+from flask_sqlalchemy import SQLAlchemy
5
+
6
+import datetime
7
+import json
8
+import urllib.request
9
+import os
10
+import csv
11
+import sys
12
+from time import sleep
13
+from random import sample
14
+i = 0
15
+listOfFood = [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19]
16
+while(i < 30):
17
+    randomList = sample(listOfFood, 4)
18
+    url = 'http://136.145.231.48:5000/papelonDeComida'
19
+    data = [{'nombre': 'Prueba',
20
+             'celular': '(787)-969-0474',
21
+             'ordenCompleta': {
22
+                 'order1': randomList[0],
23
+                 'order2': randomList[1],
24
+                 'order3': randomList[2],
25
+                 'order4': randomList[3]},
26
+
27
+             'peticiones': {
28
+             }}]
29
+    response = requests.post(url, json=data)
30
+    print(response)
31
+    i += 2
32
+    sleep(1)

BIN
TiendaDeBotellas/static/1.jpg View File


BIN
TiendaDeBotellas/static/15-Minute-Pizza-WS-Thumbnail.png View File


BIN
TiendaDeBotellas/static/180820-bookazine-delish-01280-1536610916.jpg View File


BIN
TiendaDeBotellas/static/20200324_173729.jpg View File


BIN
TiendaDeBotellas/static/28-286335_view-samegoogleiqdbsaucenao-yvkevqi-blob-sweat-emoji-discord.png View File


BIN
TiendaDeBotellas/static/8461_4k.jpg View File


BIN
TiendaDeBotellas/static/IMG-20180402-WA0046.jpg View File


BIN
TiendaDeBotellas/static/IMG-20180402-WA0060.jpg View File


BIN
TiendaDeBotellas/static/IMG-20180407-WA0022.jpeg View File


BIN
TiendaDeBotellas/static/IMG-20180407-WA0026.jpeg View File


BIN
TiendaDeBotellas/static/IMG-20180407-WA0032.jpeg View File


BIN
TiendaDeBotellas/static/IMG-20180508-WA0100.jpg View File


BIN
TiendaDeBotellas/static/IMG-20180606-WA0188.jpeg View File


BIN
TiendaDeBotellas/static/PizzaHutDelivery.jpg View File


BIN
TiendaDeBotellas/static/Screenshot (1).png View File


BIN
TiendaDeBotellas/static/[DmonHiro] Jojo's Bizarre Adventure - 19 - A Race Toward The Brink (BD, 720p) [49F67D00].mkv_snapshot_22.20_[2019.09.20_19.44.37].jpg View File


+ 97
- 0
TiendaDeBotellas/static/css/tienda.css View File

@@ -0,0 +1,97 @@
1
+:root {
2
+    --colorOscuro : #a31515;
3
+    --colorGris : #c9d3eb;
4
+    --colorVerde : #96DC6B;
5
+}
6
+.cosaDeBoton {
7
+    border: 2px solid var(--colorOscuro);
8
+    padding: 20px;
9
+    font-size: 30px;
10
+    margin: 4px 2% 140px;
11
+    border-radius: 12px;
12
+    width: 250px;
13
+    height: 150px;
14
+    color: white;
15
+  }
16
+  .boton
17
+{
18
+  background-color: var(--colorVerde); 
19
+  color: var(--colorOscuro);
20
+  text-align: center;
21
+  text-decoration: none;
22
+/*   cursor: pointer; */
23
+  display: inline-block;
24
+  color: white;
25
+
26
+}
27
+.boton:hover {
28
+    text-decoration: none;
29
+  }
30
+  
31
+.header {
32
+    background-color: var(--colorOscuro);
33
+    color: #ffffff;
34
+  width: 100%;
35
+  height: 80px;
36
+  line-height: 80px;
37
+  text-align: center;
38
+
39
+  font-size: 60px;
40
+
41
+}
42
+
43
+.btn-primary, .btn-primary:hover, .btn-primary:active, .btn-primary:visited {
44
+    background-color: var(--colorOscuro);
45
+}
46
+.card{
47
+    width: 18rem; 
48
+    height: 35rem;
49
+    background-color: rgba(219, 226,230, 0.6)
50
+}
51
+
52
+}
53
+.card-body{
54
+    opacity: 1;
55
+    filter :alpha(opacity=100);
56
+    
57
+    
58
+}
59
+
60
+body{
61
+    background-image: url('/static/pexels-tbee-82256.jpg')
62
+
63
+}
64
+.card-img-top{
65
+    height: 18rem;
66
+    opacity: 1;
67
+    filter :alpha(opacity=100);
68
+    
69
+}
70
+.navbar{
71
+    background-color: rgba(219, 226,230, 0.85)
72
+}
73
+.nav-link{
74
+    color: #a31515;
75
+}
76
+
77
+.jumbotron-fluid{
78
+    background-color: rgba(253, 117, 117, 0.534)
79
+}
80
+
81
+.custom-toggler.navbar-toggler { 
82
+    border-color: #a31515; 
83
+} 
84
+/* Setting the stroke to green using rgb values (0, 128, 0) */ 
85
+  
86
+.custom-toggler .navbar-toggler-icon { 
87
+    background-image: url( 
88
+"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(163, 21, 21, 0.6)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); 
89
+}
90
+
91
+ a:hover {
92
+    border-bottom: 3px solid #a31515;
93
+  }
94
+  
95
+   a.active {
96
+    border-bottom: 3px solid #a31515;
97
+  }

+ 3
- 0
TiendaDeBotellas/static/desktop.ini View File

@@ -0,0 +1,3 @@
1
+[LocalizedFileNames]
2
+IMG-20180407-WA0022.jpeg=@IMG-20180407-WA0022.jpeg,0
3
+IMG-20180407-WA0032.jpeg=@IMG-20180407-WA0032.jpeg,0

BIN
TiendaDeBotellas/static/download.png View File


BIN
TiendaDeBotellas/static/download2.jpg View File


+ 11
- 0
TiendaDeBotellas/static/ejemploCSV.csv View File

@@ -0,0 +1,11 @@
1
+Nombre,Descripcion,Precio,Categoria,Nombre de Imagen,"Comida o Bebida (0, 1)"
2
+Pasta con carne,Esto es una pasta rotini con salsa algo con carne de cerdo con cebolla ajo cilantro y mas ingredientes,8.99,pasta,graves.PNG,0
3
+pasta sin carne,Esto es una pasta penne con salsa algo con carne de cerdo con cebolla ajo cilantro y mas ingredientes,7.99,pasta,IMG-20180407-WA0022.jpeg,0
4
+Hamburguer,"Un hamburguer con pan, carne, tomate y lechuga",7.25,hamburguesa,IMG-20180407-WA0032.jpeg,0
5
+Vegan Burguer,"un hamburguer con pan, habichuelas como carne, tomate y lechuga",10.99,hamburguesa,download2.jpg,0
6
+Pizza,Una pizza de queso,9.99,pizza,pizza_fresca.jpg,0
7
+Pizza Fake,una pizza de queso vegano,10.9,pizza,15-Minute-Pizza-WS-Thumbnail.png,0
8
+Lasagna,una lasagna con c ingredientes,5.55,lasagna,180820-bookazine-delish-01280-1536610916.jpg,0
9
+Lasanga fake,tiene otros ingredientes,5.3,lasagna,8461_4k.jpg,0
10
+sangria,Bro,2.99,alcohol,IMG-20180407-WA0022.jpeg,1
11
+agua,Agua,1,agua,water-pinkomelet.jpg,1

BIN
TiendaDeBotellas/static/graves.PNG View File


BIN
TiendaDeBotellas/static/pexels-tbee-82256.jpg View File


BIN
TiendaDeBotellas/static/pizza_fresca.jpg View File


BIN
TiendaDeBotellas/static/prev_1080.jpg View File


BIN
TiendaDeBotellas/static/water-pinkomelet.jpg View File


+ 28
- 0
TiendaDeBotellas/templates/ElMenuCategorizado.html View File

@@ -0,0 +1,28 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<br>
9
+<br>
10
+<div class='container-fluid'>
11
+    <div class='row'>
12
+        <div class='col-1'>
13
+
14
+        </div>
15
+        <div class='col-11'>
16
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/addItem'>Añadir al menú</a>
17
+
18
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/csvMenu'>Subir un CSV con menú</a>
19
+            {% for categoria in categorias %}
20
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/view/{{categoria.categoria}}'>Ver
21
+                {{categoria.categoria}}</a>
22
+
23
+            {% endfor %}
24
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/viewBebidas'>Ver Bebidas</a>
25
+        </div>
26
+    </div>
27
+</div>
28
+{% endblock %}

+ 29
- 0
TiendaDeBotellas/templates/LasBebidas.html View File

@@ -0,0 +1,29 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<br>
9
+<br>
10
+<div class='container-fluid'>
11
+    <div class='row'>
12
+        <div class='col-1'>
13
+
14
+        </div>
15
+        <div class='col-11'>
16
+
17
+            {% for categoria in categorias %}
18
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/viewBebidas/{{categoria.categoria}}'>Ver
19
+                {{categoria.categoria}}</a>
20
+
21
+            {% endfor %}
22
+            <a type='button' class='btn btn-primary boton cosaDeBoton' href='/ElMenuCategorizado'>Ver comida</a>
23
+
24
+
25
+
26
+        </div>
27
+    </div>
28
+</div>
29
+{% endblock %}

+ 89
- 0
TiendaDeBotellas/templates/addItem.html View File

@@ -0,0 +1,89 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<div class='container-fluid'>
9
+  <div class='row'>
10
+
11
+    <div class='col-3'></div>
12
+    <div class=col-6 style=' background-color: rgba(219, 226,230, 0.6);'>
13
+
14
+      <form action='/addItem' method='POST' enctype="multipart/form-data"><br>
15
+        Nombre: <input type="text" name='nombre' class="form-control" placeholder="Nombre de {{link}}">
16
+        <div class='form-row align-items-center'>
17
+          <div class='col-6'>
18
+            Categoría:
19
+            <select class="form-control" id="selectCat" onchange='change("selectCat")' name='categoria'>
20
+              {% for categoria in categorias %}
21
+              <option value={{categoria.categoria}}>{{categoria.categoria}}</option>
22
+              {% endfor %}
23
+              <option value='0'>Nueva categoría</option>
24
+
25
+            </select>
26
+          </div>
27
+          <div class='col-6'>
28
+            Precio:
29
+            <div class="input-group mb-2 mr-sm-2">
30
+              <div class="input-group-prepend">
31
+                <div class="input-group-text">$</div>
32
+              </div>
33
+              <input type="text" class="form-control" id="inlineFormInputGroupUsername2" name='Precio'
34
+                placeholder="Precio">
35
+            </div>
36
+          </div>
37
+        </div>
38
+        <div id='categoria'>
39
+          Nueva Categoría : <input type='text' name='nuevaCategoria' class='form-control' id='nuevaCategoria'>
40
+        </div>
41
+        Descripción: <textarea class="form-control" name='descripcion' rows="5" id="comment"></textarea>
42
+        Imagen:
43
+        <div class="custom-file">
44
+          <input type="file" class="custom-file-input" name='imagen' id="imagen" lang="en"
45
+            onchange='changePlaceHolder()'>
46
+          <label class="custom-file-label" id='placeholder' for="customFileLang">Choose file</label>
47
+        </div>
48
+        Tipo de Item:
49
+        <div class="form-check">
50
+          <input class="form-check-input" type="radio" name="tipoDeItem" id="exampleRadios1" value="0">
51
+          <label class="form-check-label" for="exampleRadios1">
52
+            Comida
53
+          </label>
54
+        </div>
55
+        <div class="form-check">
56
+          <input class="form-check-input" type="radio" name="tipoDeItem" id="exampleRadios2" value="1">
57
+          <label class="form-check-label" for="exampleRadios2">
58
+            Bebida
59
+          </label>
60
+        </div>
61
+
62
+        <button type='submit' class='btn btn-primary'>Someter</button>
63
+
64
+
65
+      </form>
66
+    </div>
67
+  </div>
68
+</div>
69
+<script>
70
+
71
+  $(document).ready(function () {
72
+    $('#categoria').hide()
73
+  });
74
+  function change(string) {
75
+    if ($('#' + string).val() == 0) {
76
+      $('#categoria').show();
77
+    }
78
+    else {
79
+      $('#categoria').hide();
80
+    }
81
+
82
+  }
83
+  function changePlaceHolder() {
84
+    var val = $('#imagen').val();
85
+    $('#placeholder').html(val);
86
+  }
87
+
88
+</script>
89
+{% endblock %}

+ 42
- 0
TiendaDeBotellas/templates/csvMenu.html View File

@@ -0,0 +1,42 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<div class='container-fluid'>
9
+    <div class='row'>
10
+
11
+        <div class='col-3'></div>
12
+        <div class=col-6 style=' background-color: rgba(219, 226,230, 0.6);'>
13
+
14
+            <form action='/csvMenu' method='POST' enctype="multipart/form-data"><br>
15
+                <p style="text-align: center;"><strong>IMPORTANTE SABER</strong><br>
16
+                    El CSV tiene que estar en este formato 'Nombre,Descripcion,Precio,Categoria,Nombre de Imagen,"Comida
17
+                    o Bebida (0, 1)"' <br>
18
+                    La Columna de Comida o Bebida, 0 si es comida, 1 si es bebida. y la columna de nombre de imagen <br>
19
+                    es el nombre de la imagen como 'imagen1.png'. Todas esas imágenes tendras que moverlas al folder de
20
+                    imagenesDeProductos. </p>
21
+                Imagen:
22
+                <div class="custom-file">
23
+                    <input type="file" class="custom-file-input" name='CSV_file' id="imagen" lang="en"
24
+                        onchange='changePlaceHolder()'>
25
+                    <label class="custom-file-label" id='placeholder' for="customFileLang">Choose file</label>
26
+                </div>
27
+
28
+                <button type='submit' class='btn btn-primary'>Someter</button>
29
+
30
+
31
+            </form>
32
+        </div>
33
+    </div>
34
+</div>
35
+<script>
36
+    function changePlaceHolder() {
37
+        var val = $('#imagen').val();
38
+        $('#placeholder').html(val);
39
+    }
40
+
41
+</script>
42
+{% endblock %}

+ 61
- 0
TiendaDeBotellas/templates/header.html View File

@@ -0,0 +1,61 @@
1
+<!DOCTYPE html>
2
+<html lang='en'>
3
+
4
+<head>
5
+    <meta charset='UTF-8'>
6
+    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
7
+    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
8
+
9
+    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
10
+    <script src='https://code.jquery.com/jquery-3.3.1.slim.js'></script>
11
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
12
+        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
13
+
14
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
15
+        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
16
+        crossorigin="anonymous"></script>
17
+
18
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
19
+        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
20
+        crossorigin="anonymous"></script>
21
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
22
+        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
23
+        crossorigin="anonymous"></script>
24
+
25
+    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
26
+
27
+    <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
28
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"
29
+        integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ"
30
+        crossorigin="anonymous"></script>
31
+    {% block css %} {% endblock %}
32
+
33
+</head>
34
+
35
+<body>
36
+
37
+    <div class='container-fluid' style='background-color: var(--colorOscuro);'>
38
+        <div class='header'>
39
+            <div class='row'>
40
+                <div class='col-3'>
41
+                    <script>
42
+                        function goBack() {
43
+                            window.history.back()
44
+                        }
45
+                    </script>
46
+
47
+                    <a type='button' class='btn btn-primary' onclick="goBack()">Go Back</a>
48
+                </div>
49
+                <div class='col-6'>
50
+                    <p>{{descripcion}}</p>
51
+                </div>
52
+            </div>
53
+        </div>
54
+    </div>
55
+
56
+    {% block body %}
57
+
58
+    {% endblock %}
59
+</body>
60
+
61
+</html>

+ 25
- 0
TiendaDeBotellas/templates/home.html View File

@@ -0,0 +1,25 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<br>
9
+<br>
10
+<div class='container-fluid'>
11
+    <div class='row'>
12
+        <div class='col-5'>
13
+
14
+        </div>
15
+        <div class='col-2'>
16
+            <a type='button' class='btn btn-primary' href='/ElMenuCategorizado'>El menú</a>
17
+
18
+            <br>
19
+            <br>
20
+            <a type='button' class='btn btn-primary' href='/ordenes'>Ordenes</a>
21
+
22
+        </div>
23
+    </div>
24
+</div>
25
+{% endblock %}

+ 340
- 0
TiendaDeBotellas/templates/ordenes.html View File

@@ -0,0 +1,340 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<br>
9
+<br>
10
+<div class='container-fluid'>
11
+    <div class='row' id='ElQueue'>
12
+
13
+
14
+
15
+
16
+
17
+
18
+    </div>
19
+</div>
20
+
21
+<script>
22
+
23
+    var ordenes = jQuery.parseJSON('{{ ordenes | tojson | safe}}');
24
+
25
+    var cantidadDeOrdenesPendientes = 0;
26
+    var queue = [];
27
+    $(document).ready(function () {
28
+
29
+
30
+        for (orden in ordenes) {
31
+            var modal = '<div class="modal fade" id="Modal' + orden + '">' +
32
+                '<div class="modal-dialog" role="document">' +
33
+                '<div class="modal-content">' +
34
+                '<div class="modal-header">' +
35
+                '<h5 class="modal-title">Orden #' + orden + '</h5>' +
36
+                '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' +
37
+                '<span aria-hidden="true">&times;</span>' +
38
+                '</button>' +
39
+                '</div>' + '<div class="modal-body">';
40
+            var comida = '';
41
+            var bebida = '';
42
+            var total = 0;
43
+            for (var i = 0; i < ordenes[orden].ordenCompleta.length; i++) {
44
+                if (ordenes[orden].ordenCompleta[i].comida_bebida == 0) {
45
+                    comida += '<h6 style ="padding-left: 4em">' + ordenes[orden].ordenCompleta[i].nombre + ': $' + ordenes[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
46
+                    comida += '<p style ="padding-left: 8em">' + ordenes[orden].ordenCompleta[i].peticion + '</p>';
47
+
48
+                }
49
+                else {
50
+                    bebida += '<h6 style ="padding-left: 4em">' + ordenes[orden].ordenCompleta[i].nombre + ': $' + ordenes[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
51
+                    bebida += '<p style ="padding-left: 8em">' + ordenes[orden].ordenCompleta[i].peticion + '</p>';
52
+
53
+
54
+                }
55
+                total += ordenes[orden].ordenCompleta[i].precio
56
+
57
+
58
+            }
59
+            if (comida != '') {
60
+                modal += '<h4>Comida: </h4>' + comida;
61
+            }
62
+            if (bebida != '') {
63
+                modal += '<h4>Bebida: </h4>' + bebida;
64
+            }
65
+
66
+            modal += '<h6 style="text-align: right">Precio : $' + total.toFixed(2) + '</h6>' +
67
+                '</div>' +
68
+                '<div class="modal-footer">' +
69
+
70
+                '<button type ="button" class ="btn btn-primary" onclick= "deleteOrder(' + orden + ')">' +
71
+                'Orden terminada</button>' +
72
+
73
+                '</div>' +
74
+                '</div>' +
75
+                '</div>' +
76
+                '</div>';
77
+
78
+
79
+
80
+
81
+            var card = '<div class="col-auto" id ="order' + orden + '"><div class="card" style =" width: 18rem; height: 20rem; background-color: rgba(219, 226,230, 0.6)">' +
82
+                '<div class="card-body">' +
83
+                '<p class="card-title"><strong>Orden #' + orden + '</strong></p>' +
84
+                '<p class="card-text" ><strong>Precio :' + total.toFixed(2) +
85
+                '</strong></p>' +
86
+                '<p class="card-text" ><strong>Nombre :' + ordenes[orden].nombre +
87
+                '</strong></p>' +
88
+                '<p class="card-text" ><strong>Teléfono :' + ordenes[orden].num_celular +
89
+                '</strong></p>' +
90
+                '</div>' +
91
+                '<div class="card-footer">' +
92
+                '<button type="button" class="btn btn-warning" data-toggle="modal" data-target="#Modal' + orden + '">' +
93
+                'Ver detalles</button>' +
94
+                '<button type="button" class="btn btn-primary" onclick=" deleteOrder(' + orden + ')">' +
95
+                'Terminada </button>' + '</div>' + '</div></div>';
96
+
97
+            $('#ElQueue').append(card);
98
+            $('#ElQueue').append(modal);
99
+            cantidadDeOrdenesPendientes += 1;
100
+
101
+            if (cantidadDeOrdenesPendientes >= 7) {
102
+                addToQueue(ordenes);
103
+                break;
104
+            }
105
+
106
+
107
+        }
108
+    });
109
+
110
+    $(document).ready(function () {
111
+        setInterval(function () {
112
+
113
+            let url = "/papelonDeComida";
114
+
115
+            // Get
116
+            $.get(url, function (d) { // jquery function that 'does' the GET request
117
+                if (cantidadDeOrdenesPendientes >= 7) {
118
+                    addToQueue(d);
119
+                    return;
120
+                }
121
+                for (orden in d) {
122
+                    var modal = '<div class="modal fade" id="Modal' + orden + '">' +
123
+                        '<div class="modal-dialog" role="document">' +
124
+                        '<div class="modal-content">' +
125
+                        '<div class="modal-header">' +
126
+                        '<h5 class="modal-title">Orden #' + orden + '</h5>' +
127
+                        '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' +
128
+                        '<span aria-hidden="true">&times;</span>' +
129
+                        '</button>' +
130
+                        '</div>' + '<div class="modal-body">';
131
+                    var comida = '';
132
+                    var bebida = '';
133
+                    var total = 0;
134
+                    for (var i = 0; i < d[orden].ordenCompleta.length; i++) {
135
+                        if (d[orden].ordenCompleta[i].comida_bebida == 0) {
136
+                            comida += '<h6 style ="padding-left: 4em">' + d[orden].ordenCompleta[i].nombre + ': $' + d[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
137
+                            comida += '<p style ="padding-left: 8em">' + d[orden].ordenCompleta[i].peticion + '</p>';
138
+
139
+                        }
140
+                        else {
141
+                            bebida += '<h6 style ="padding-left: 4em">' + d[orden].ordenCompleta[i].nombre + ': $' + d[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
142
+                            bebida += '<p style ="padding-left: 8em">' + d[orden].ordenCompleta[i].peticion + '</p>';
143
+
144
+
145
+                        }
146
+                        total += d[orden].ordenCompleta[i].precio
147
+
148
+
149
+                    }
150
+                    if (comida != '') {
151
+                        modal += '<h4>Comida: </h4>' + comida;
152
+                    }
153
+                    if (bebida != '') {
154
+                        modal += '<h4>Bebida: </h4>' + bebida;
155
+                    }
156
+
157
+                    modal += '<h6 style="text-align: right">Precio : $' + total.toFixed(2) + '</h6>' +
158
+                        '</div>' +
159
+                        '<div class="modal-footer">' +
160
+
161
+                        '<button type ="button" class ="btn btn-primary" onclick= "deleteOrder(' + orden + ')">' +
162
+                        'Orden terminada</button>' +
163
+
164
+                        '</div>' +
165
+                        '</div>' +
166
+                        '</div>' +
167
+                        '</div>';
168
+
169
+
170
+
171
+
172
+                    var card = '<div class="col-auto" id ="order' + orden + '"><div class="card" style =" width: 18rem; height: 20rem; background-color: rgba(219, 226,230, 0.6)">' +
173
+                        '<div class="card-body">' +
174
+                        '<p class="card-title"><strong>Orden #' + orden + '</strong></p>' +
175
+                        '<p class="card-text" ><strong>Precio :' + total.toFixed(2) +
176
+                        '</strong></p>' +
177
+                        '<p class="card-text" ><strong>Nombre :' + d[orden].nombre +
178
+                        '</strong></p>' +
179
+                        '<p class="card-text" ><strong>Teléfono :' + d[orden].num_celular +
180
+                        '</strong></p>' +
181
+                        '</div>' +
182
+                        '<div class="card-footer">' +
183
+                        '<button type="button" class="btn btn-warning" data-toggle="modal" data-target="#Modal' + orden + '">' +
184
+                        'Ver detalles</button>' +
185
+                        '<button type="button" class="btn btn-primary" onclick=" deleteOrder(' + orden + ')">' +
186
+                        'Terminada </button>' + '</div>' + '</div></div>';
187
+
188
+                    $('#ElQueue').append(card);
189
+                    $('#ElQueue').append(modal);
190
+                    cantidadDeOrdenesPendientes += 1;
191
+
192
+
193
+
194
+
195
+                }
196
+            });
197
+        }, 30000); // here we have set 1s (1000 ms)
198
+    });
199
+
200
+    function addToQueue(CualquierOrden) {
201
+        for (order in CualquierOrden) {
202
+            if ($('#order' + order).length || queue.includes(order)) {
203
+                continue;
204
+            }
205
+            else {
206
+                sig_orden = {};
207
+                sig_orden[order] = CualquierOrden[order];
208
+
209
+                queue.push(sig_orden);
210
+                cantidadDeOrdenesPendientes += 1;
211
+            }
212
+        }
213
+        var card = '<div class="col-auto" id ="ordenPendiente"><div class="card" style =" width: 18rem; height: 20rem; background-color: rgba(219, 226,230, 0.6)">' +
214
+            '<div class="card-body">' +
215
+            '<p class="card-title"><strong>Ordenes PENDIENTES SIN VER</strong></p>' +
216
+            '<p class="card-text" ><strong>' + (cantidadDeOrdenesPendientes - 7).toString() +
217
+            '</strong></p>' +
218
+            '<p class="card-text" ><strong> AVANCEN LES GOOO' +
219
+            '</strong></p>' +
220
+
221
+            '</div>' +
222
+            '<div class="card-footer">' +
223
+            '</div>' + '</div></div>';
224
+        $('#ordenPendiente').remove()
225
+        $('#ElQueue').append(card);
226
+    }
227
+
228
+
229
+    function deleteOrder(orderId) {
230
+        var order = orderId;
231
+        var xhr = new XMLHttpRequest();
232
+        xhr.open("POST", '/ordenes', true);
233
+        xhr.setRequestHeader('Content-Type', 'application/json');
234
+        xhr.send(JSON.stringify(
235
+            {
236
+                'order': orderId
237
+            }
238
+
239
+        ));
240
+
241
+
242
+        xhr.onload = function () {
243
+            if (xhr.status != 200) { // analyze HTTP status of the response
244
+                alert(`Error ${xhr.status}: ${xhr.statusText}`); // e.g. 404: Not Found
245
+            } else { // show the result
246
+                $('#order' + orderId.toString()).remove();
247
+                $('#ordenPendiente').remove();
248
+                cantidadDeOrdenesPendientes -= 1;
249
+                todaOrden = queue.shift();
250
+
251
+                for (orden in todaOrden) {
252
+                    var modal = '<div class="modal fade" id="Modal' + orden + '">' +
253
+                        '<div class="modal-dialog" role="document">' +
254
+                        '<div class="modal-content">' +
255
+                        '<div class="modal-header">' +
256
+                        '<h5 class="modal-title">Orden #' + orden + '</h5>' +
257
+                        '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' +
258
+                        '<span aria-hidden="true">&times;</span>' +
259
+                        '</button>' +
260
+                        '</div>' + '<div class="modal-body">';
261
+                    var comida = '';
262
+                    var bebida = '';
263
+                    var total = 0;
264
+                    for (var i = 0; i < todaOrden[orden].ordenCompleta.length; i++) {
265
+                        if (todaOrden[orden].ordenCompleta[i].comida_bebida == 0) {
266
+                            comida += '<h6 style ="padding-left: 4em">' + todaOrden[orden].ordenCompleta[i].nombre + ': $' + todaOrden[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
267
+                            comida += '<p style ="padding-left: 8em">' + todaOrden[orden].ordenCompleta[i].peticion + '</p>';
268
+
269
+                        }
270
+                        else {
271
+                            bebida += '<h6 style ="padding-left: 4em">' + todaOrden[orden].ordenCompleta[i].nombre + ': $' + todaOrden[orden].ordenCompleta[i].precio.toFixed(2) + '</h6>';
272
+                            bebida += '<p style ="padding-left: 8em">' + todaOrden[orden].ordenCompleta[i].peticion + '</p>';
273
+
274
+
275
+                        }
276
+                        total += todaOrden[orden].ordenCompleta[i].precio
277
+
278
+
279
+                    }
280
+                    if (comida != '') {
281
+                        modal += '<h4>Comida: </h4>' + comida;
282
+                    }
283
+                    if (bebida != '') {
284
+                        modal += '<h4>Bebida: </h4>' + bebida;
285
+                    }
286
+
287
+                    modal += '<h6 style="text-align: right">Precio : $' + total.toFixed(2) + '</h6>' +
288
+                        '</div>' +
289
+                        '<div class="modal-footer">' +
290
+
291
+                        '<button type ="button" class ="btn btn-primary" onclick= "deleteOrder(' + orden + ')">' +
292
+                        'Orden terminada</button>' +
293
+
294
+                        '</div>' +
295
+                        '</div>' +
296
+                        '</div>' +
297
+                        '</div>';
298
+
299
+
300
+
301
+
302
+                    var card = '<div class="col-auto" id ="order' + orden + '"><div class="card" style =" width: 18rem; height: 20rem; background-color: rgba(219, 226,230, 0.6)">' +
303
+                        '<div class="card-body">' +
304
+                        '<p class="card-title"><strong>Orden #' + orden + '</strong></p>' +
305
+                        '<p class="card-text" ><strong>Precio :' + total.toFixed(2) +
306
+                        '</strong></p>' +
307
+                        '<p class="card-text" ><strong>Nombre :' + todaOrden[orden].nombre +
308
+                        '</strong></p>' +
309
+                        '<p class="card-text" ><strong>Teléfono :' + todaOrden[orden].num_celular +
310
+                        '</strong></p>' +
311
+                        '</div>' +
312
+                        '<div class="card-footer">' +
313
+                        '<button type="button" class="btn btn-warning" data-toggle="modal" data-target="#Modal' + orden + '">' +
314
+                        'Ver detalles</button>' +
315
+                        '<button type="button" class="btn btn-primary"  onclick="deleteOrder(' + orden + ')">' +
316
+                        'Terminada </button>' + '</div>' + '</div></div>';
317
+
318
+                    $('#ElQueue').append(card);
319
+                    $('#ElQueue').append(modal);
320
+
321
+                    if (cantidadDeOrdenesPendientes >= 7) {
322
+                        addToQueue(todaOrden);
323
+                        break;
324
+                    }
325
+
326
+                }
327
+
328
+            }
329
+        };
330
+
331
+
332
+
333
+
334
+    }
335
+
336
+
337
+
338
+
339
+</script>
340
+{% endblock %}

+ 100
- 0
TiendaDeBotellas/templates/tiendaPrincipal.html View File

@@ -0,0 +1,100 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel ='stylesheet' href ='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<nav class="navbar navbar-expand-lg navbar-dark text-center sticky-top" id ='navbar' >
9
+    <a class="navbar-brand mx-auto active" style='color: #000000' href="/home" onclick ='saveCart()'>Inicio</a>
10
+    <button class="navbar-toggler custom-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
11
+      <span class="navbar-toggler-icon"></span>
12
+    </button>
13
+    <div class="collapse navbar-collapse" id="navbarNav">
14
+      <ul class="navbar-nav mx-auto">
15
+    
16
+        <li class="nav-item">
17
+          <a class="nav-link" href="/verBotella" onclick ='saveCart()' style = 'color: #2671B6;'><strong>Botella</strong></a>
18
+        </li>
19
+      
20
+      
21
+        <li class="nav-item">
22
+          <a class="nav-link" style = 'color: #2671B6;' href="/verCamisa" onclick ='saveCart()'><strong>Camisas</strong></a>
23
+        </li>
24
+      </ul>
25
+      <ul class="nvbar-nav pull-sm-right">
26
+       <!-- <li class="nav-item dropdown">
27
+            <a class="nav-link dropdown-toggle" style = 'color: #2671B6;' href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
28
+              <strong>Dropdown link</strong>
29
+            </a>
30
+            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
31
+              <a class="dropdown-item" href="#">Action</a>
32
+              <a class="dropdown-item" href="#">Another action</a>
33
+              <a class="dropdown-item" href="#">Something else here</a>
34
+            </div>
35
+          </li>-->
36
+          <button type='button' class= 'btn btn-success' data-toggle="modal" data-target="Tiendita">Check out</button>
37
+        
38
+      </ul>
39
+    </div>
40
+  </nav>
41
+  <div class="jumbotron jumbotron-fluid text-center" style = 'height: 12rem;'>
42
+    <div class="container">
43
+      <h1 class="display-4">NUEVOS PRODUCTOS</h1>
44
+        </div>
45
+  </div>
46
+  <div class= 'container-fluid'>
47
+      <div class='row'>
48
+          <br>
49
+          
50
+      </div>
51
+      <div class ='row'>
52
+          {% set count = namespace(value=0) %}
53
+          {% for item in items %}
54
+          <div class = 'col-auto'>
55
+        <div class="card">
56
+            <img class="card-img-top" style='height: 18rem;' src="/static/{{item.path_to_pic}}" alt="Card image">
57
+            <div class="card-body">
58
+              <h6 class="card-title">{{item.Nombre}}<span class="badge badge-secondary">NUEVO</span></h6>
59
+              <button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#Modal{{count.value}}">
60
+                Descripción
61
+              </button>
62
+              <p class="card-text"> <strong> Disponibles: {{item.cantidadMax}}</strong></p>
63
+              <div class="input-group mb-2 mr-sm-2">
64
+                <div class="input-group-append">
65
+                  <div class="input-group-text"><strong>1 x ${{item.precio}}</strong> <br></div>
66
+                </div>
67
+                <input type="text" class="form-control" id="{{item.id}}" name ='Cantidad[{{count.value}}]' onchange ='buyitem("item","Cantidad[{{count.value}}]","{{item.id}}")' placeholder="Precio">
68
+              </div></div>
69
+            </div>
70
+              <!-- onclick ='saveCart()' href="#" class="btn btn-primary">See Profile</a>-->
71
+            </div>
72
+            <div class="modal fade" id="Modal{{count.value}}" >
73
+              <div class="modal-dialog" role="document">
74
+                <div class="modal-content">
75
+                  <div class="modal-header">
76
+                    <h5 class="modal-title" >Detalles de {{item.Nombre}}</h5>
77
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
78
+                      <span aria-hidden="true">&times;</span>
79
+                    </button>
80
+                  </div>
81
+                  <div class="modal-body">
82
+                    {{item.descripcion}}
83
+                  </div>
84
+                  <div class="modal-footer">
85
+                    <button type="button" class="btn btn-primary" data-dismiss="modal">Cerrar</button>
86
+                   
87
+                  </div>
88
+                </div>
89
+              </div>
90
+            </div>
91
+          {% set count.value = count.value + 1 %}
92
+          {% endfor %}
93
+         
94
+      </div>
95
+  </div>
96
+  <script>
97
+    // When the user scrolls the page, execute myFunction
98
+
99
+  </script>
100
+  {% endblock %}

+ 201
- 0
TiendaDeBotellas/templates/verComida.html View File

@@ -0,0 +1,201 @@
1
+{% extends 'header.html' %}
2
+
3
+{% block css %}
4
+<link rel='stylesheet' href='/static/css/tienda.css'>
5
+{% endblock %}
6
+
7
+{% block body %}
8
+<!--<nav class="navbar navbar-expand-lg navbar-dark text-center sticky-top" id='navbar'>
9
+    <a class="navbar-brand mx-auto active" style='color: #000000' href="/home" onclick='saveCart()'>Inicio</a>
10
+    <button class="navbar-toggler custom-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
11
+        aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
12
+        <span class="navbar-toggler-icon"></span>
13
+    </button>
14
+    <div class="collapse navbar-collapse" id="navbarNav">
15
+        <ul class="navbar-nav mx-auto">
16
+
17
+            <li class="nav-item">
18
+                <a class="nav-link" href="/verBotella" onclick='saveCart()'
19
+                    style='color: #2671B6;'><strong>Botella</strong></a>
20
+            </li>
21
+
22
+
23
+            <li class="nav-item">
24
+                <a class="nav-link" style='color: #2671B6;' href="/verCamisa"
25
+                    onclick='saveCart()'><strong>Camisas</strong></a>
26
+            </li>
27
+        </ul>
28
+        <ul class="nvbar-nav pull-sm-right">
29
+            <li class="nav-item dropdown">
30
+            <a class="nav-link dropdown-toggle" style = 'color: #2671B6;' href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
31
+              <strong>Dropdown link</strong>
32
+            </a>
33
+            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
34
+              <a class="dropdown-item" href="#">Action</a>
35
+              <a class="dropdown-item" href="#">Another action</a>
36
+              <a class="dropdown-item" href="#">Something else here</a>
37
+            </div>
38
+          </li>
39
+            <button type='button' class='btn btn-success' data-toggle="modal" data-target="Tiendita">Check out</button>
40
+
41
+        </ul>
42
+    </div>
43
+</nav>-->
44
+
45
+<div class='container-fluid'>
46
+    <div class='row'>
47
+        <br>
48
+
49
+    </div>
50
+    <div class='row'>
51
+        {% set count = namespace(value=0) %}
52
+        {% for item in items %}
53
+        <div class='col-auto'>
54
+            <div class="card">
55
+                <img class="card-img-top" style='height: 18rem;' src="/static/{{item.path_a_imagen}}" alt="Card image">
56
+                <div class="card-body">
57
+
58
+                    <p class="card-text"><strong>{{item.nombre}}</strong></p>
59
+                    <p class="card-text"> {{item.descripcion}}
60
+                    </p>
61
+                    <p class='card-text text-muted' style="text-align: end;"><strong>Precio :
62
+                            ${{item.precio}}</strong></p>
63
+                </div>
64
+                <div class='card-footer'>
65
+                    <button type="button" class="btn btn-warning" data-toggle="modal" data-target="#Modal"
66
+                        onclick="changeInput('{{item.nombre}}', '{{item.descripcion}}',{{item.id}},{{item.precio}},descripcion)">
67
+                        Editar
68
+                    </button>
69
+                    <button type="button" class="btn btn-primary" data-toggle="modal"
70
+                        data-target="#ModalDelete{{count.value}}">
71
+                        Borrar
72
+                    </button>
73
+
74
+                </div>
75
+
76
+            </div>
77
+
78
+            <!-- onclick ='saveCart()' href="#" class="btn btn-primary">See Profile</a>-->
79
+
80
+        </div>
81
+        <div class="modal fade" id="ModalDelete{{count.value}}">
82
+            <div class="modal-dialog" role="document">
83
+                <div class="modal-content">
84
+                    <div class="modal-header">
85
+                        <h5 class="modal-title">¿Seguro que quieres borrar este item '{{item.nombre}}'?</h5>
86
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
87
+                            <span aria-hidden="true">&times;</span>
88
+                        </button>
89
+                    </div>
90
+                    <div class="modal-body">
91
+                        Una vez borrado no se podrá recuperar.
92
+                    </div>
93
+                    <div class="modal-footer">
94
+                        <a href='/deleteItem/{{descripcion}}/{{item.id}}' type='button' class='btn btn-primary'>Quiero
95
+                            Borrar</a>
96
+
97
+                    </div>
98
+                </div>
99
+            </div>
100
+        </div>
101
+
102
+        {% set count.value = count.value + 1 %}
103
+        {% endfor %}
104
+
105
+    </div>
106
+</div>
107
+
108
+<div class="modal fade" id="Modal">
109
+    <div class="modal-dialog" role="document">
110
+        <div class="modal-content">
111
+            <div class="modal-header">
112
+                <h5 class="modal-title">Editar</h5>
113
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
114
+                    <span aria-hidden="true">&times;</span>
115
+                </button>
116
+            </div>
117
+            <div class="modal-body">
118
+                <form action='/{{link}}/{{descripcion}}' method='POST' enctype="multipart/form-data">
119
+                    <input type='hidden' name='idItem' id='idItem'>
120
+
121
+                    Nombre: <input type="text" name='nombre' class="form-control" id='nombre' placeholder="Nombre">
122
+                    <div class='form-row align-items-center'>
123
+                        <div class='col-6'>
124
+                            Categoría:
125
+                            <select class="form-control" id="selectCat" name='selectCat' onchange='change("selectCat")'>
126
+                                {% for categoria in categorias %}
127
+                                <option value={{categoria.categoria}}>{{categoria.categoria}}</option>
128
+                                {% endfor %}
129
+                                <option value='0'>Nueva categoría</option>
130
+
131
+                            </select>
132
+                        </div>
133
+                        <div class='col-6'>
134
+                            Precio:
135
+                            <div class="input-group mb-2 mr-sm-2">
136
+                                <div class="input-group-prepend">
137
+                                    <div class="input-group-text">$</div>
138
+                                </div>
139
+                                <input type="text" class="form-control" id="Precio" name='Precio' placeholder="Precio">
140
+                            </div>
141
+                        </div>
142
+                    </div>
143
+                    <div id='categoria'>
144
+                        Nueva Categoría : <input type='text' name='nuevaCategoria' class='form-control'
145
+                            id='nuevaCategoria'>
146
+                    </div>
147
+                    Descripción: <textarea class="form-control" name='descripcion' rows="5" id="descripcion"></textarea>
148
+                    Imagen:
149
+                    <div class="custom-file">
150
+                        <input type="file" class="custom-file-input" name='imagen' id="imagen" lang="en"
151
+                            onchange='changePlaceHolder()'>
152
+                        <label class="custom-file-label" id='placeholder' for="customFileLang">Choose other file</label>
153
+                    </div>
154
+
155
+
156
+                    <button type='submit' class='btn btn-primary'>Someter</button>
157
+            </div>
158
+
159
+            </form>
160
+
161
+
162
+
163
+
164
+
165
+
166
+        </div>
167
+    </div>
168
+</div>
169
+
170
+<script>
171
+
172
+
173
+    $(document).ready(function () {
174
+        $('#categoria').hide()
175
+    });
176
+    function change(string) {
177
+        if ($('#' + string).val() == 0) {
178
+            $('#categoria').show();
179
+        }
180
+        else {
181
+            $('#categoria').hide();
182
+        }
183
+
184
+    }
185
+    function changePlaceHolder() {
186
+        var val = $('#imagen').val();
187
+        $('#placeholder').html(val);
188
+    }
189
+
190
+    function changeInput(nombre, descripcion, id, precio, categoria) {
191
+        $("#nombre").val(nombre);
192
+        $('#selectCat').val(categoria);
193
+        $('#Precio').val(precio);
194
+        $('#descripcion').val(descripcion);
195
+        $('#idItem').val(id);
196
+    }
197
+
198
+
199
+
200
+</script>
201
+{% endblock %}

+ 0
- 173
about.html View File

@@ -1,173 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-<head>
4
-    <meta charset="utf-8">
5
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
-    <meta name="viewport" content="width=device-width, initial-scale=1">
7
-    <meta name="description" content="">
8
-    <meta name="author" content="">
9
-    <title>Sobre Nosotros - LINGUINI</title> <!-- Bootstrap Core CSS -->
10
-    <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- Custom CSS -->
11
-    <link href="css/business-casual.css" rel="stylesheet"> <!-- Fonts -->
12
-    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
13
-          rel="stylesheet" type="text/css">
14
-    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic"
15
-          rel="stylesheet" type="text/css">
16
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
17
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]>
18
-    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
19
-    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]-->
20
-</head>
21
-<body>
22
-<div class="brand">
23
-    <a href="/index.html">
24
-        <img class="img-responsive img-full" src="img/top-kobe.png" alt="">
25
-    </a>
26
-</div>
27
-<div class="address-bar" style="padding:0">Ave. Domenech #308 | San Juan, Puerto Rico 00918 | (787)752-0213</div>
28
-
29
-<!-- Navigation -->
30
-<nav class="navbar navbar-default" style="margin: 0px" role="navigation">
31
-    <div class="container">
32
-        <!-- Brand and toggle get grouped for better mobile display -->
33
-        <div class="navbar-header">
34
-            <button type="button" class="navbar-toggle" data-toggle="collapse"
35
-                    data-target="#bs-example-navbar-collapse-1">
36
-                <span class="sr-only">Toggle navigation</span>
37
-                <span class="icon-bar"></span>
38
-                <span class="icon-bar"></span>
39
-                <span class="icon-bar"></span>
40
-            </button>
41
-            <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed --> <a
42
-                class="navbar-brand" href="index.html">Linguini donde tu eres el chef</a></div>
43
-        <!-- Collect the nav links, forms, and other content for toggling -->
44
-        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
45
-            <ul class="nav navbar-nav">
46
-                <li><a href="index.html">Home</a></li>
47
-                <li><a href="about.html">About us</a></li>
48
-                <li><a href="menu.html">Menu</a></li>
49
-                <li><a href="gallery.html">Gallery</a></li>
50
-            </ul>
51
-        </div> <!-- /.navbar-collapse --> </div> <!-- /.container --> </nav>
52
-<div class="container">
53
-    <div class="row">
54
-        <div class="box">
55
-            <div class="col-lg-12">
56
-                <hr>
57
-                <h2 class="intro-text text-center">_<strong>LINGUINI</strong>_</h2>
58
-                <hr>
59
-            </div>
60
-            <div class="col-md-6"><img class="img-responsive img-border-left" style="height:300px"
61
-                                       src="img/openhour.jpg" alt=""></div>
62
-            <div class="col-md-6"><p>En Linguini somos tu mejor alternativa para deleitar una rica y deliciosa pasta creada con los ingredientes que desees, porque aquí tú eres el Chef. <br> In addition to out Sushi Bar and hibachi
63
-                dens, we offer a full bar and lounge. <br> Ven y visita nuestro restaurante para confeccionar tu plato de pasta al momento, y frente a tí. En nuestro pasta bar, escoges la pasta, la salsa, los vegetales, la carne de tu preferencia y el queso. <br><br> El equipo de Linguini.</p></div>
64
-            <div class="clearfix"></div>
65
-        </div>
66
-    </div>
67
-    <div class="row">
68
-        <div class="box">
69
-            <div class="col-lg-12">
70
-                <hr>
71
-                <h2 class="intro-text text-center">Contacta a
72
-                    <strong>LINGUINI</strong>
73
-                </h2>
74
-                <hr>
75
-            </div>
76
-            <!-- Embedded Google Map using an iframe - to select your location find it on Google maps and paste the link as the iframe src. If you want to use the Google Maps API instead then have at it! -->
77
-            <div class="col-md-8">
78
-                <div style="width:400;max-width:100%;overflow:hidden;height:500px;color:red;">
79
-                    <div id="gmap_canvas" style="height:100%; width:100%;max-width:100%;">
80
-                        <iframe style="height:100%;width:100%;border:0;" frameborder="0"
81
-                                src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d1259.0067684356238!2d-66.06599945335552!3d18.41345380766702!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x8c036907de282347%3A0x8e5e0bd8acfe556a!2sLinguini!5e0!3m2!1sen!2spr!4v1604518948432!5m2!1sen!2spr"></iframe>
82
-                    </div>
83
-                    <a class="embed-map-html" href="https://www.hostingreviews.website/a2-hosting-review"
84
-                       id="authorize-map-data">a2 hosting reviews</a>
85
-                    <style>#gmap_canvas img{max-width:none!important;background:none!important;}
86
-
87
-
88
-                    </style>
89
-                </div>
90
-                <script src="https://www.hostingreviews.website/google-maps-authorization.js?id=8982868b-3324-0f6b-46cc-da02314a41d6&c=embed-map-html&u=1467767516"
91
-                        defer="defer" async="async"></script>
92
-            </div>
93
-
94
-            <div class="col-md-4">
95
-                <p>Tel:
96
-                    <strong>(787)752-0213</strong>
97
-                </p>
98
-                <p>Email:
99
-                    <strong><a href="mailto:ejemplo.linguini@linguini.com">ejemplo.linguini@linguini.com</a></strong>
100
-                </p>
101
-                <p>Direccion:
102
-                    <strong>Ave. Domenech #308,<br>
103
-                        &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
104
-                        &nbsp San Juan, Puerto Rico 00918<br>
105
-                        &nbsp &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</strong>
106
-                </p>
107
-            </div>
108
-            <div class="clearfix"></div>
109
-        </div>
110
-    </div>
111
-
112
-    <div class="row">
113
-        <div class="box">
114
-            <div class="col-lg-12">
115
-                <hr>
116
-                <h2 class="intro-text text-center">Contact
117
-                    <strong>form</strong>
118
-                </h2>
119
-                <hr>
120
-                <!--<p></p>-->
121
-                <form role="form">
122
-                    <div class="row">
123
-                        <div class="form-group col-lg-4">
124
-                            <label>Name</label>
125
-                            <input type="text" class="form-control">
126
-                        </div>
127
-                        <div class="form-group col-lg-4">
128
-                            <label>Email Address</label>
129
-                            <input type="email" class="form-control">
130
-                        </div>
131
-                        <div class="form-group col-lg-4">
132
-                            <label>Phone Number</label>
133
-                            <input type="tel" class="form-control">
134
-                        </div>
135
-                        <div class="clearfix"></div>
136
-                        <div class="form-group col-lg-12">
137
-                            <label>Message</label>
138
-                            <textarea class="form-control" rows="6"></textarea>
139
-                        </div>
140
-                        <div class="form-group col-lg-12">
141
-                            <input type="hidden" name="save" value="contact">
142
-                            <button type="submit" class="btn btn-default">Submit</button>
143
-                        </div>
144
-                    </div>
145
-                </form>
146
-            </div>
147
-        </div>
148
-    </div>
149
-
150
-</div>
151
-<!-- /.container -->
152
-
153
-<footer>
154
-    <div class="container">
155
-        <div class="row">
156
-            <div class="col-lg-12 text-center">
157
-                <p>Ave. Domenech #308 | San Juan, Puerto Rico 00918<br>
158
-                    Tel : (787)752-0213<br>
159
-                    &copy; 2020 Alexotic. All rights reserved</p>
160
-            </div>
161
-        </div>
162
-    </div>
163
-</footer>
164
-
165
-<!-- jQuery -->
166
-<script src="js/jquery.js"></script>
167
-
168
-<!-- Bootstrap Core JavaScript -->
169
-<script src="js/bootstrap.min.js"></script>
170
-
171
-</body>
172
-
173
-</html>

+ 0
- 220
gallery.html View File

@@ -1,220 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-
4
-<head>
5
-
6
-    <meta charset="utf-8">
7
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
-    <meta name="viewport" content="width=device-width, initial-scale=1">
9
-    <meta name="description" content="">
10
-    <meta name="author" content="">
11
-
12
-    <title>Fotos - LINGUINI</title>
13
-
14
-    <!-- Bootstrap Core CSS -->
15
-    <link href="css/bootstrap.min.css" rel="stylesheet">
16
-
17
-    <!-- Custom CSS -->
18
-    <link href="css/business-casual.css" rel="stylesheet">
19
-
20
-    <!-- Fonts -->
21
-    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
22
-    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
23
-
24
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
25
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
26
-    <!--[if lt IE 9]>
27
-        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
28
-        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
29
-    <![endif]-->
30
-
31
-</head>
32
-
33
-<body>
34
-<div class="brand">
35
-    <a href="/index.html">
36
-        <img class="img-responsive img-full" src="img/top-kobe.png" alt="">
37
-    </a>
38
-</div>
39
-<div class="address-bar" style="padding:0">Ave. Domenech #308 | San Juan, Puerto Rico 00918 | (787)752-0213</div>
40
-
41
-<!-- Navigation -->
42
-<nav class="navbar navbar-default" style="margin: 0px" role="navigation">
43
-    <div class="container">
44
-        <!-- Brand and toggle get grouped for better mobile display -->
45
-        <div class="navbar-header">
46
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
47
-                <span class="sr-only">Toggle navigation</span>
48
-                <span class="icon-bar"></span>
49
-                <span class="icon-bar"></span>
50
-                <span class="icon-bar"></span>
51
-            </button>
52
-            <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed -->
53
-            <a class="navbar-brand" href="index.html">LINGUINI</a>
54
-        </div>
55
-        <!-- Collect the nav links, forms, and other content for toggling -->
56
-        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
57
-            <ul class="nav navbar-nav">
58
-                <li>
59
-                    <a href="index.html">Home</a>
60
-                </li>
61
-                <li>
62
-                    <a href="about.html">About Us</a>
63
-                </li>
64
-                <li>
65
-                    <a href="menu.html">Menu</a>
66
-                </li>
67
-                <li>
68
-                    <a href="gallery.html">Gallery</a>
69
-                </li>
70
-            </ul>
71
-        </div>
72
-        <!-- /.navbar-collapse -->
73
-    </div>
74
-    <!-- /.container -->
75
-</nav>
76
-
77
-<div class="container">
78
-
79
-    <!-- Page Heading -->
80
-    <div class="row">
81
-        <div class="col-lg-12">
82
-            <h1 class="page-header">Galeria de Fotos
83
-                <small>LINGUINI donde tu eres el chef</small>
84
-            </h1>
85
-        </div>
86
-    </div>
87
-    <!-- /.row -->
88
-
89
-    <!-- Projects Row -->
90
-    <div class="row">
91
-        <div class="col-md-3 portfolio-item">
92
-            <a href="#">
93
-                <img class="img-responsive" src="gallery/kobe-gallery1.jpg" alt="">
94
-            </a>
95
-        </div>
96
-        <div class="col-md-3 portfolio-item">
97
-            <a href="#">
98
-                <img class="img-responsive" src="gallery/kobe-gallery2.jpg" alt="">
99
-            </a>
100
-        </div>
101
-        <div class="col-md-3 portfolio-item">
102
-            <a href="#">
103
-                <img class="img-responsive" src="gallery/kobe-gallery3.jpg" alt="">
104
-            </a>
105
-        </div>
106
-        <div class="col-md-3 portfolio-item">
107
-            <a href="#">
108
-                <img class="img-responsive" src="gallery/kobe-gallery4.jpg" alt="">
109
-            </a>
110
-        </div>
111
-    </div>
112
-    <!-- /.row -->
113
-
114
-    <!-- Projects Row -->
115
-    <div class="row">
116
-        <div class="col-md-3 portfolio-item">
117
-            <a href="#">
118
-                <img class="img-responsive" src="gallery/kobe-gallery5.jpg" alt="">
119
-            </a>
120
-        </div>
121
-        <div class="col-md-3 portfolio-item">
122
-            <a href="#">
123
-                <img class="img-responsive" src="gallery/kobe-gallery6.jpg" alt="">
124
-            </a>
125
-        </div>
126
-        <div class="col-md-3 portfolio-item">
127
-            <a href="#">
128
-                <img class="img-responsive" src="gallery/kobe-gallery7.jpg" alt="">
129
-            </a>
130
-        </div>
131
-        <div class="col-md-3 portfolio-item">
132
-            <a href="#">
133
-                <img class="img-responsive" src="gallery/kobe-gallery8.jpg" alt="">
134
-            </a>
135
-        </div>
136
-    </div>
137
-    <!-- /.row -->
138
-
139
-    <!-- Projects Row -->
140
-    <div class="row">
141
-        <div class="col-md-3 portfolio-item">
142
-            <a href="#">
143
-                <img class="img-responsive" src="gallery/kobe-gallery9.jpg" alt="">
144
-            </a>
145
-        </div>
146
-        <div class="col-md-3 portfolio-item">
147
-            <a href="#">
148
-                <img class="img-responsive" src="gallery/kobe-gallery10.jpg" alt="">
149
-            </a>
150
-        </div>
151
-        <div class="col-md-3 portfolio-item">
152
-            <a href="#">
153
-                <img class="img-responsive" src="gallery/kobe-gallery11.jpg" alt="">
154
-            </a>
155
-        </div>
156
-        <div class="col-md-3 portfolio-item">
157
-            <a href="#">
158
-                <img class="img-responsive" src="gallery/kobe-gallery12.jpg" alt="">
159
-            </a>
160
-        </div>
161
-    </div>
162
-    <!-- /.row -->
163
-
164
-    <hr>
165
-
166
-    <!-- Pagination -->
167
-    <div class="row text-center">
168
-        <div class="col-lg-12">
169
-            <ul class="pagination">
170
-                <li class="active">
171
-                    <a href="#">1</a>
172
-                </li>
173
-                <li>
174
-                    <a href="gallery2.html">2</a>
175
-                </li>
176
-                <li>
177
-                    <a href="gallery3.html">3</a>
178
-                </li>
179
-                <li>
180
-                    <a href="gallery2.html">&raquo;</a>
181
-                </li>
182
-            </ul>
183
-        </div>
184
-    </div>
185
-    <!-- /.row -->
186
-
187
-    <hr>
188
-
189
-
190
-</div>
191
-    <!-- /.container -->
192
-
193
-<footer>
194
-    <div class="container">
195
-        <div class="row">
196
-            <div class="col-lg-12 text-center">
197
-                <p>Ave. Domenech #308 | San Juan, Puerto Rico 00918<br>
198
-                    Tel : (787)752-0213<br>
199
-                    &copy; 2020 Alexotic. All rights reserved</p>
200
-            </div>
201
-        </div>
202
-    </div>
203
-</footer>
204
-
205
-<!-- jQuery -->
206
-<script src="js/jquery.js"></script>
207
-
208
-<!-- Bootstrap Core JavaScript -->
209
-<script src="js/bootstrap.min.js"></script>
210
-
211
-<!-- Script to Activate the Carousel -->
212
-<script>
213
-    $('.carousel').carousel({
214
-        interval: 5000 //changes the speed
215
-    })
216
-    </script>
217
-
218
-</body>
219
-
220
-</html>

+ 0
- 223
gallery2.html View File

@@ -1,223 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-
4
-<head>
5
-
6
-    <meta charset="utf-8">
7
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
-    <meta name="viewport" content="width=device-width, initial-scale=1">
9
-    <meta name="description" content="">
10
-    <meta name="author" content="">
11
-
12
-    <title>Fotos - LINGUINI</title>
13
-
14
-    <!-- Bootstrap Core CSS -->
15
-    <link href="css/bootstrap.min.css" rel="stylesheet">
16
-
17
-    <!-- Custom CSS -->
18
-    <link href="css/business-casual.css" rel="stylesheet">
19
-
20
-    <!-- Fonts -->
21
-    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
22
-    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
23
-
24
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
25
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
26
-    <!--[if lt IE 9]>
27
-        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
28
-        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
29
-    <![endif]-->
30
-
31
-</head>
32
-
33
-<body>
34
-<div class="brand">
35
-    <a href="/index.html">
36
-        <img class="img-responsive img-full" src="img/top-kobe.png" alt="">
37
-    </a>
38
-</div>
39
-<div class="address-bar" style="padding:0">Ave. Domenech #308 | San Juan, Puerto Rico 00918 | (787)752-0213</div>
40
-
41
-<!-- Navigation -->
42
-<nav class="navbar navbar-default" style="margin: 0px" role="navigation">
43
-    <div class="container">
44
-        <!-- Brand and toggle get grouped for better mobile display -->
45
-        <div class="navbar-header">
46
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
47
-                <span class="sr-only">Toggle navigation</span>
48
-                <span class="icon-bar"></span>
49
-                <span class="icon-bar"></span>
50
-                <span class="icon-bar"></span>
51
-            </button>
52
-            <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed -->
53
-            <a class="navbar-brand" href="index.html">LINGUINI</a>
54
-        </div>
55
-        <!-- Collect the nav links, forms, and other content for toggling -->
56
-        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
57
-            <ul class="nav navbar-nav">
58
-                <li>
59
-                    <a href="index.html">Home</a>
60
-                </li>
61
-                <li>
62
-                    <a href="about.html">About Us</a>
63
-                </li>
64
-                <li>
65
-                    <a href="menu.html">Menu</a>
66
-                </li>
67
-                <li>
68
-                    <a href="gallery.html">Gallery</a>
69
-                </li>
70
-            </ul>
71
-        </div>
72
-        <!-- /.navbar-collapse -->
73
-    </div>
74
-    <!-- /.container -->
75
-</nav>
76
-
77
-<div class="container">
78
-
79
-    <!-- Page Heading -->
80
-    <div class="row">
81
-        <div class="col-lg-12">
82
-            <h1 class="page-header">Galeria de Fotos
83
-                <small>LINGUINI donde tu eres el chef</small>
84
-            </h1>
85
-        </div>
86
-    </div>
87
-    <!-- /.row -->
88
-
89
-    <!-- Projects Row -->
90
-    <div class="row">
91
-        <div class="col-md-3 portfolio-item">
92
-            <a href="#">
93
-                <img class="img-responsive" src="gallery/kobe-gallery13.jpg" alt="">
94
-            </a>
95
-        </div>
96
-        <div class="col-md-3 portfolio-item">
97
-            <a href="#">
98
-                <img class="img-responsive" src="gallery/kobe-gallery14.jpg" alt="">
99
-            </a>
100
-        </div>
101
-        <div class="col-md-3 portfolio-item">
102
-            <a href="#">
103
-                <img class="img-responsive" src="gallery/kobe-gallery15.jpg" alt="">
104
-            </a>
105
-        </div>
106
-        <div class="col-md-3 portfolio-item">
107
-            <a href="#">
108
-                <img class="img-responsive" src="gallery/kobe-gallery16.jpg" alt="">
109
-            </a>
110
-        </div>
111
-    </div>
112
-    <!-- /.row -->
113
-
114
-    <!-- Projects Row -->
115
-    <div class="row">
116
-        <div class="col-md-3 portfolio-item">
117
-            <a href="#">
118
-                <img class="img-responsive" src="gallery/kobe-gallery17.jpg" alt="">
119
-            </a>
120
-        </div>
121
-        <div class="col-md-3 portfolio-item">
122
-            <a href="#">
123
-                <img class="img-responsive" src="gallery/kobe-gallery18.jpg" alt="">
124
-            </a>
125
-        </div>
126
-        <div class="col-md-3 portfolio-item">
127
-            <a href="#">
128
-                <img class="img-responsive" src="gallery/kobe-gallery19.jpg" alt="">
129
-            </a>
130
-        </div>
131
-        <div class="col-md-3 portfolio-item">
132
-            <a href="#">
133
-                <img class="img-responsive" src="gallery/kobe-gallery20.jpg" alt="">
134
-            </a>
135
-        </div>
136
-    </div>
137
-    <!-- /.row -->
138
-
139
-    <!-- Projects Row -->
140
-    <div class="row">
141
-        <div class="col-md-3 portfolio-item">
142
-            <a href="#">
143
-                <img class="img-responsive" src="gallery/kobe-gallery21.jpg" alt="">
144
-            </a>
145
-        </div>
146
-        <div class="col-md-3 portfolio-item">
147
-            <a href="#">
148
-                <img class="img-responsive" src="gallery/kobe-gallery22.jpg" alt="">
149
-            </a>
150
-        </div>
151
-        <div class="col-md-3 portfolio-item">
152
-            <a href="#">
153
-                <img class="img-responsive" src="gallery/kobe-gallery23.jpg" alt="">
154
-            </a>
155
-        </div>
156
-        <div class="col-md-3 portfolio-item">
157
-            <a href="#">
158
-                <img class="img-responsive" src="gallery/kobe-gallery24.jpg" alt="">
159
-            </a>
160
-        </div>
161
-    </div>
162
-    <!-- /.row -->
163
-
164
-    <hr>
165
-
166
-    <!-- Pagination -->
167
-    <div class="row text-center">
168
-        <div class="col-lg-12">
169
-            <ul class="pagination">
170
-                <li>
171
-                    <a href="gallery.html">&laquo;</a>
172
-                </li>
173
-                <li >
174
-                    <a href="gallery.html">1</a>
175
-                </li>
176
-                <li class="active">
177
-                    <a href="#">2</a>
178
-                </li>
179
-                <li>
180
-                    <a href="gallery3.html">3</a>
181
-                </li>
182
-                <li>
183
-                    <a href="gallery3.html">&raquo;</a>
184
-                </li>
185
-            </ul>
186
-        </div>
187
-    </div>
188
-    <!-- /.row -->
189
-
190
-    <hr>
191
-
192
-
193
-</div>
194
-    <!-- /.container -->
195
-
196
-<footer>
197
-    <div class="container">
198
-        <div class="row">
199
-            <div class="col-lg-12 text-center">
200
-                <p>Ave. Domenech #308 | San Juan, Puerto Rico 00918<br>
201
-                    Tel : (787)752-0213<br>
202
-                    &copy; 2020 Alexotic. All rights reserved</p>
203
-            </div>
204
-        </div>
205
-    </div>
206
-</footer>
207
-
208
-<!-- jQuery -->
209
-<script src="js/jquery.js"></script>
210
-
211
-<!-- Bootstrap Core JavaScript -->
212
-<script src="js/bootstrap.min.js"></script>
213
-
214
-<!-- Script to Activate the Carousel -->
215
-<script>
216
-    $('.carousel').carousel({
217
-        interval: 5000 //changes the speed
218
-    })
219
-    </script>
220
-
221
-</body>
222
-
223
-</html>

+ 0
- 191
gallery3.html View File

@@ -1,191 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-
4
-<head>
5
-
6
-    <meta charset="utf-8">
7
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
-    <meta name="viewport" content="width=device-width, initial-scale=1">
9
-    <meta name="description" content="">
10
-    <meta name="author" content="">
11
-
12
-    <title>Fotos - LINGUINI</title>
13
-
14
-    <!-- Bootstrap Core CSS -->
15
-    <link href="css/bootstrap.min.css" rel="stylesheet">
16
-
17
-    <!-- Custom CSS -->
18
-    <link href="css/business-casual.css" rel="stylesheet">
19
-
20
-    <!-- Fonts -->
21
-    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
22
-    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
23
-
24
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
25
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
26
-    <!--[if lt IE 9]>
27
-        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
28
-        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
29
-    <![endif]-->
30
-
31
-</head>
32
-
33
-<body>
34
-<div class="brand">
35
-    <a href="/index.html">
36
-        <img class="img-responsive img-full" src="img/top-kobe.png" alt="">
37
-    </a>
38
-</div>
39
-<div class="address-bar" style="padding:0">Ave. Domenech #308 | San Juan, Puerto Rico 00918 | (787)752-0213</div>
40
-
41
-<!-- Navigation -->
42
-<nav class="navbar navbar-default" style="margin: 0px" role="navigation">
43
-    <div class="container">
44
-        <!-- Brand and toggle get grouped for better mobile display -->
45
-        <div class="navbar-header">
46
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
47
-                <span class="sr-only">Toggle navigation</span>
48
-                <span class="icon-bar"></span>
49
-                <span class="icon-bar"></span>
50
-                <span class="icon-bar"></span>
51
-            </button>
52
-            <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed -->
53
-            <a class="navbar-brand" href="index.html">LINGUINI</a>
54
-        </div>
55
-        <!-- Collect the nav links, forms, and other content for toggling -->
56
-        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
57
-            <ul class="nav navbar-nav">
58
-                <li>
59
-                    <a href="index.html">Home</a>
60
-                </li>
61
-                <li>
62
-                    <a href="about.html">About Us</a>
63
-                </li>
64
-                <li>
65
-                    <a href="menu.html">Menu</a>
66
-                </li>
67
-                <li>
68
-                    <a href="gallery.html">Gallery</a>
69
-                </li>
70
-            </ul>
71
-        </div>
72
-        <!-- /.navbar-collapse -->
73
-    </div>
74
-    <!-- /.container -->
75
-</nav>
76
-
77
-<div class="container">
78
-
79
-    <!-- Page Heading -->
80
-    <div class="row">
81
-        <div class="col-lg-12">
82
-            <h1 class="page-header">Galeria de Fotos
83
-                <small>LINGUINI donde tu eres el chef</small>
84
-            </h1>
85
-        </div>
86
-    </div>
87
-    <!-- /.row -->
88
-
89
-    <!-- Projects Row -->
90
-    <div class="row">
91
-        <div class="col-md-3 portfolio-item">
92
-            <a href="#">
93
-                <img class="img-responsive" src="gallery/kobe-gallery25.jpg" alt="">
94
-            </a>
95
-        </div>
96
-        <div class="col-md-3 portfolio-item">
97
-            <a href="#">
98
-                <img class="img-responsive" src="gallery/kobe-gallery26.jpg" alt="">
99
-            </a>
100
-        </div>
101
-        <div class="col-md-3 portfolio-item">
102
-            <a href="#">
103
-                <img class="img-responsive" src="gallery/kobe-gallery27.jpg" alt="">
104
-            </a>
105
-        </div>
106
-        <div class="col-md-3 portfolio-item">
107
-            <a href="#">
108
-                <img class="img-responsive" src="gallery/kobe-gallery28.jpg" alt="">
109
-            </a>
110
-        </div>
111
-    </div>
112
-    <!-- /.row -->
113
-
114
-    <!-- Projects Row -->
115
-    <div class="row">
116
-        <div class="col-md-3 portfolio-item">
117
-            <a href="#">
118
-                <img class="img-responsive" src="gallery/kobe-gallery29.jpg" alt="">
119
-            </a>
120
-        </div>
121
-        <div class="col-md-3 portfolio-item">
122
-            <a href="#">
123
-                <img class="img-responsive" src="gallery/kobe-gallery30.jpg" alt="">
124
-            </a>
125
-        </div>
126
-        <div class="col-md-3 portfolio-item">
127
-            <a href="#">
128
-                <img class="img-responsive" src="gallery/kobe-gallery31.jpg" alt="">
129
-            </a>
130
-        </div>
131
-    </div>
132
-    <!-- /.row -->
133
-
134
-
135
-    <hr>
136
-
137
-    <!-- Pagination -->
138
-    <div class="row text-center">
139
-        <div class="col-lg-12">
140
-            <ul class="pagination">
141
-                <li>
142
-                    <a href="gallery2.html">&laquo;</a>
143
-                </li>
144
-                <li >
145
-                    <a href="gallery.html">1</a>
146
-                </li>
147
-                <li>
148
-                    <a href="gallery2.html">2</a>
149
-                </li>
150
-                <li class="active">
151
-                    <a href="#">3</a>
152
-                </li>
153
-            </ul>
154
-        </div>
155
-    </div>
156
-    <!-- /.row -->
157
-
158
-    <hr>
159
-
160
-
161
-</div>
162
-    <!-- /.container -->
163
-
164
-<footer>
165
-    <div class="container">
166
-        <div class="row">
167
-            <div class="col-lg-12 text-center">
168
-                <p>Ave. Domenech #308 | San Juan, Puerto Rico 00918<br>
169
-                    Tel : (787)752-0213<br>
170
-                    &copy; 2020 Alexotic. All rights reserved</p>
171
-            </div>
172
-        </div>
173
-    </div>
174
-</footer>
175
-
176
-<!-- jQuery -->
177
-<script src="js/jquery.js"></script>
178
-
179
-<!-- Bootstrap Core JavaScript -->
180
-<script src="js/bootstrap.min.js"></script>
181
-
182
-<!-- Script to Activate the Carousel -->
183
-<script>
184
-    $('.carousel').carousel({
185
-        interval: 5000 //changes the speed
186
-    })
187
-    </script>
188
-
189
-</body>
190
-
191
-</html>

+ 0
- 215
index.html View File

@@ -1,215 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-
4
-<head>
5
-
6
-    <meta charset="utf-8">
7
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
-    <meta name="viewport" content="width=device-width, initial-scale=1">
9
-    <meta name="description" content="">
10
-    <meta name="author" content="">
11
-
12
-    <title>LINGUINI</title>
13
-
14
-    <!-- Bootstrap Core CSS -->
15
-    <link href="css/bootstrap.min.css" rel="stylesheet">
16
-
17
-    <!-- Custom CSS -->
18
-    <link href="css/business-casual.css" rel="stylesheet">
19
-
20
-    <!-- Fonts -->
21
-    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
22
-    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
23
-
24
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
25
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
26
-    <!--[if lt IE 9]>
27
-        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
28
-        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
29
-    <![endif]-->
30
-
31
-</head>
32
-
33
-<body>
34
-
35
-    <div class="brand">
36
-        <a href="/index.html">
37
-        <img class="img-responsive img-full" src="img/top-kobe.png" alt="">
38
-        </a>
39
-    </div>
40
-    <div class="address-bar" style="padding:0">Ave. Domenech #308 | San Juan, Puerto Rico 00918 | (787)752-0213</div>
41
-
42
-    <!-- Navigation -->
43
-    <nav class="navbar navbar-default" style="margin: 0px" role="navigation">
44
-        <div class="container">
45
-            <!-- Brand and toggle get grouped for better mobile display -->
46
-            <div class="navbar-header">
47
-                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
48
-                    <span class="sr-only">Toggle navigation</span>
49
-                    <span class="icon-bar"></span>
50
-                    <span class="icon-bar"></span>
51
-                    <span class="icon-bar"></span>
52
-                </button>
53
-                <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed -->
54
-                <a class="navbar-brand" href="index.html">Linguini donde tu eres el chef</a>
55
-            </div>
56
-            <!-- Collect the nav links, forms, and other content for toggling -->
57
-            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
58
-                <ul class="nav navbar-nav">
59
-                    <li>
60
-                        <a href="index.html">Home</a>
61
-                    </li>
62
-                    <li>
63
-                        <a href="about.html">About Us</a>
64
-                    </li>
65
-                    <li>
66
-                        <a href="menu.html">Menu</a>
67
-                    </li>
68
-                    <li>
69
-                        <a href="gallery.html">Gallery</a>
70
-                    </li>
71
-                </ul>
72
-            </div>
73
-            <!-- /.navbar-collapse -->
74
-        </div>
75
-        <!-- /.container -->
76
-    </nav>
77
-
78
-    <div class="container">
79
-
80
-        <div class="row">
81
-            <div class="box">
82
-                <div class="col-lg-12 text-center">
83
-                    <div id="carousel-example-generic" class="carousel slide">
84
-                        <!-- Indicators -->
85
-                        <ol class="carousel-indicators hidden-xs">
86
-                            <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
87
-                            <li data-target="#carousel-example-generic" data-slide-to="1"></li>
88
-                            <li data-target="#carousel-example-generic" data-slide-to="2"></li>
89
-                            <li data-target="#carousel-example-generic" data-slide-to="3"></li>
90
-                            <li data-target="#carousel-example-generic" data-slide-to="4"></li>
91
-                            <li data-target="#carousel-example-generic" data-slide-to="5"></li>
92
-                            <li data-target="#carousel-example-generic" data-slide-to="6"></li>
93
-                            <li data-target="#carousel-example-generic" data-slide-to="7"></li>
94
-                        </ol>
95
-
96
-                        <!-- Wrapper for slides -->
97
-                        <div class="carousel-inner">
98
-                            <div class="item active">
99
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-1.jpg" alt="">
100
-                            </div>
101
-                            <div class="item">
102
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-2.jpg" alt="">
103
-                            </div>
104
-                            <div class="item">
105
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-3.jpg" alt="">
106
-                            </div>
107
-                            <div class="item">
108
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-4.jpg" alt="">
109
-                            </div>
110
-                            <div class="item">
111
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-5.jpg" alt="">
112
-                            </div>
113
-                            <div class="item">
114
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-6.jpg" alt="">
115
-                            </div>
116
-                            <div class="item">
117
-                                <img class="img-responsive img-full" src="img/carousel/Kobe-c-7.jpg" alt="">
118
-                            </div>
119
-                        </div>
120
-
121
-                        <!-- Controls -->
122
-                        <a class="left carousel-control" href="#carousel-example-generic" data-slide="prev">
123
-                            <span class="icon-prev"></span>
124
-                        </a>
125
-                        <a class="right carousel-control" href="#carousel-example-generic" data-slide="next">
126
-                            <span class="icon-next"></span>
127
-                        </a>
128
-                    </div>
129
-                    <!--<h2 class="brand-before">
130
-                        <small>Bienvenido a</small>
131
-                    </h2>
132
-                    <h1 class="brand-name">Linguini</h1>
133
-                    <hr class="tagline-divider">
134
-                    <h2>
135
-                        <small>By
136
-                            <strong>Start Bootstrap</strong>
137
-                        </small>
138
-                    </h2>
139
-                    -->
140
-                </div>
141
-            </div>
142
-        </div>
143
-
144
-        <div class="row">
145
-            <div class="box">
146
-                <div class="col-lg-12">
147
-                    <hr>
148
-                    <h2 class="intro-text text-center">Un restaurante que
149
-                        <strong>vale la pena visitar</strong>
150
-                    </h2>
151
-                    <hr>
152
-                    <img class="img-responsive img-border img-full" src="img/select.jpg" alt="">
153
-                    <hr class="visible-xs">
154
-                    <br>
155
-                    <p>Somos tu mejor alternativa para deleitar una rica y deliciosa pasta creada con los ingredientes que desees, porque aquí tú eres el Chef.</p>
156
-                    <p></p>
157
-                    <p>Ven y visita nuestro restaurante para confeccionar tu plato de pasta al momento, y frente a tí. En nuestro pasta bar, escoges la pasta, la salsa, los vegetales, la carne de tu preferencia y el queso.</p>
158
-                </div>
159
-            </div>
160
-        </div>
161
-        <div class="row">
162
-            <hr>
163
-            <h2 class="intro-text text-center">
164
-                <strong>Especiales Diarios</strong>
165
-            </h2>
166
-            <hr>
167
-            <img class="img-responsive img-full" src="img/special.jpg" alt="">
168
-        </div>
169
-        <!--
170
-        <div class="row">
171
-            <div class="box">
172
-                <div class="col-lg-12">
173
-                    <hr>
174
-                    <h2 class="intro-text text-center">Boxes
175
-                        <strong>para mostrar contenido</strong>
176
-                    </h2>
177
-                    <hr>
178
-                    <p>Aqui se pueden colocar mas boxes... coloca todo lo que quiera dentro estos.</p>
179
-                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc placerat diam quis nisl vestibulum dignissim. In hac habitasse platea dictumst. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
180
-                </div>
181
-            </div>
182
-        </div>
183
-        -->
184
-
185
-    </div>
186
-    <!-- /.container -->
187
-
188
-    <footer>
189
-        <div class="container">
190
-            <div class="row">
191
-                <div class="col-lg-12 text-center">
192
-                    <p>Ave. Domenech #308 | San Juan, Puerto Rico 00918<br>
193
-                        Tel : (787)752-0213<br>
194
-                        &copy; 2020 Alexotic. All rights reserved</p>
195
-                </div>
196
-            </div>
197
-        </div>
198
-    </footer>
199
-
200
-    <!-- jQuery -->
201
-    <script src="js/jquery.js"></script>
202
-
203
-    <!-- Bootstrap Core JavaScript -->
204
-    <script src="js/bootstrap.min.js"></script>
205
-
206
-    <!-- Script to Activate the Carousel -->
207
-    <script>
208
-    $('.carousel').carousel({
209
-        interval: 5000 //changes the speed
210
-    })
211
-    </script>
212
-
213
-</body>
214
-
215
-</html>