Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Juan Montilla
/
TBW2223_equipo12
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
fac1f0e7
authored
May 12, 2023
by
Juan Montilla
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge remote-tracking branch 'origin/developmanu' into developJC
parents
a6a37484
17a568fc
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
110 additions
and
153 deletions
app/Controllers/InsertRecipeController.php
app/Views/pages/home.php
app/Views/templates/header.php
app/Controllers/InsertRecipeController.php
View file @
fac1f0e7
...
@@ -9,66 +9,67 @@ class InsertRecipeController extends Controller
...
@@ -9,66 +9,67 @@ class InsertRecipeController extends Controller
public
function
index
()
public
function
index
()
{
{
return
view
(
'templates/header'
)
return
view
(
'templates/header'
)
.
view
(
'pages/insertRecipe'
)
.
view
(
'pages/insertRecipe'
)
.
view
(
'templates/footer'
);
.
view
(
'templates/footer'
);
}
}
public
function
search_ingredient
()
{
public
function
search_ingredient
()
{
// Obtener la consulta de búsqueda desde el formulario
// Obtener la consulta de búsqueda desde el formulario
$query
=
$this
->
request
->
getVar
(
'query'
);
$query
=
$this
->
request
->
getVar
(
'query'
);
// Cargar el modelo de ingredientes (si no lo has hecho)
// Cargar el modelo de ingredientes (si no lo has hecho)
$ingredientModel
=
new
\App\Models\IngredientModel
();
$ingredientModel
=
new
\App\Models\IngredientModel
();
// Buscar ingredientes en la base de datos que coincidan con la consulta
// Buscar ingredientes en la base de datos que coincidan con la consulta
$ingredients
=
$ingredientModel
->
search_ingredient
(
$query
);
$ingredients
=
$ingredientModel
->
search_ingredient
(
$query
);
// Devolver los ingredientes coincidentes en formato JSON
// Devolver los ingredientes coincidentes en formato JSON
return
$this
->
response
->
setJSON
(
$ingredients
);
return
$this
->
response
->
setJSON
(
$ingredients
);
}
}
public
function
insert_recipe
()
public
function
insert_recipe
()
{
{
// Cargar los modelos necesarios
// Cargar los modelos necesarios
$recipeModel
=
new
\App\Models\RecipesModel
();
$recipeModel
=
new
\App\Models\RecipesModel
();
$recipesIngredientModel
=
new
\App\Models\RecipesIngredientModel
();
$recipesIngredientModel
=
new
\App\Models\RecipesIngredientModel
();
// Obtener los datos del formulario
$recipeData
=
$this
->
request
->
getPost
();
$selectedIngredients
=
json_decode
(
$recipeData
[
'selected_ingredients'
],
true
);
// Eliminar el elemento 'selected_ingredients' de los datos de la receta
unset
(
$recipeData
[
'selected_ingredients'
]);
// Manejar el archivo de imagen
$photo
=
$this
->
request
->
getFile
(
'photo'
);
if
(
$photo
->
isValid
()
&&
!
$photo
->
hasMoved
())
{
$photoBlob
=
file_get_contents
(
$photo
->
getRealPath
());
$recipeData
[
'photo'
]
=
$photoBlob
;
}
// Obtener el email del usuario de la sesión
// Obtener los datos del formulario
$session
=
session
();
$recipeData
=
$this
->
request
->
getPost
();
$userEmail
=
$session
->
get
(
'user'
)
->
email
;
$selectedIngredients
=
json_decode
(
$recipeData
[
'selected_ingredients'
],
true
)
;
// Agregar el email del usuario a
los datos de la receta
// Eliminar el elemento 'selected_ingredients' de
los datos de la receta
$recipeData
[
'email_user'
]
=
$userEmail
;
unset
(
$recipeData
[
'selected_ingredients'
])
;
// Insertar la receta en la tabla 'recipes'
// Manejar el archivo de imagen
$recipeId
=
$recipeModel
->
insert
(
$recipeData
);
$photo
=
$this
->
request
->
getFile
(
'photo'
);
if
(
$photo
->
isValid
()
&&
!
$photo
->
hasMoved
())
{
$photoBlob
=
file_get_contents
(
$photo
->
getRealPath
());
$recipeData
[
'photo'
]
=
$photoBlob
;
}
// Insertar los ingredientes seleccionados y sus cantidades en la tabla 'recipes_ingredient'
// Obtener el email del usuario de la sesión
foreach
(
$selectedIngredients
as
$ingredient
)
{
$session
=
session
();
$recipesIngredientModel
->
insert
([
$userEmail
=
$session
->
get
(
'user'
)
->
email
;
'id_recipe'
=>
$recipeId
,
'id_ingredient'
=>
$ingredient
[
'id'
],
// Agregar el email del usuario a los datos de la receta
'amount'
=>
$ingredient
[
'amount'
]
$recipeData
[
'email_user'
]
=
$userEmail
;
]);
}
// Redireccionar a la página principal
// Insertar la receta en la tabla 'recipes'
return
redirect
()
->
to
(
'/home'
);
$recipeId
=
$recipeModel
->
insert
(
$recipeData
);
}
// Insertar los ingredientes seleccionados y sus cantidades en la tabla 'recipes_ingredient'
foreach
(
$selectedIngredients
as
$ingredient
)
{
$recipesIngredientModel
->
insert
([
'id_recipe'
=>
$recipeId
,
'id_ingredient'
=>
$ingredient
[
'id'
],
'amount'
=>
$ingredient
[
'amount'
]
]);
}
// Redireccionar a la página principal
return
redirect
()
->
to
(
'/home'
);
}
}
}
\ No newline at end of file
app/Views/pages/home.php
View file @
fac1f0e7
<main
id=
"main"
class=
"main"
>
<main
id=
"main"
class=
"main"
>
<div
class=
"pagetitle"
>
<div
class=
"pagetitle"
>
<h1>
Recetas
</h1>
<h1>
Recetas
</h1>
<nav>
<nav>
...
@@ -11,114 +10,70 @@
...
@@ -11,114 +10,70 @@
</nav>
</nav>
</div>
<!-- End Page Title -->
</div>
<!-- End Page Title -->
<section
class=
"section dashboard"
id=
"recipeSection"
>
<section
class=
"section dashboard"
>
<div
id=
"recipeCards"
>
<?php
$recipesModel
=
new
\App\Models\RecipesModel
();
$recipes
=
$recipesModel
->
findAll
();
if
(
sizeof
(
$recipes
)
>
0
)
{
<?php
foreach
(
$recipes
as
$row
)
{
$recipesModel
=
new
\App\Models\RecipesModel
();
$ingredients
=
$recipesModel
->
get_recipe_ingredients
(
$row
->
id
);
$recipes
=
$recipesModel
->
findAll
();
?>
<!-- Inicio de la tarjeta de la receta -->
<div
class=
"card info-card sales-card"
onclick=
"window.location.href='
<?php
echo
base_url
(
'recipe/'
.
$row
->
id
);
?>
'"
>
<a
href=
"
<?php
echo
base_url
(
'recipe/'
.
$row
->
id
);
?>
"
>
</a>
<div
class=
"row flex-nowrap"
>
<div
class=
"col-lg-3 col-md-4 col-sm-12 imagen-container"
>
<img
src=
"
<?php
echo
base_url
(
'recipe/image/'
.
$row
->
id
);
?>
"
alt=
""
class=
"img-fluid rounded-start"
>
</div>
<div
class=
"col-lg-9 col-md-8 col-sm-12"
>
if
(
sizeof
(
$recipes
)
>
0
)
{
<div
class=
"filter"
>
foreach
(
$recipes
as
$row
)
{
<a
class=
"icon"
href=
"#"
data-bs-toggle=
"dropdown"
><i
class=
"bi bi-three-dots"
></i></a>
$ingredients
=
$recipesModel
->
get_recipe_ingredients
(
$row
->
id
);
<ul
class=
"dropdown-menu dropdown-menu-end dropdown-menu-arrow"
>
?>
<li
class=
"dropdown-header text-start"
>
<!-- Inicio de la tarjeta de la receta -->
<h6>
Opciones
</h6>
</li>
<li><a
class=
"dropdown-item"
href=
"#"
>
Guardar
</a></li>
<div
class=
"card info-card sales-card"
<li><a
class=
"dropdown-item"
href=
"#"
>
Compartir
</a></li>
onclick=
"window.location.href='
<?php
echo
base_url
(
'recipe/'
.
$row
->
id
);
?>
'"
>
</ul>
<a
href=
"
<?php
echo
base_url
(
'recipe/'
.
$row
->
id
);
?>
"
>
</div>
</a>
<div
class=
"row flex-nowrap"
>
<div
class=
"col-lg-3 col-md-4 col-sm-12 imagen-container"
>
<img
src=
"
<?php
echo
base_url
(
'recipe/image/'
.
$row
->
id
);
?>
"
alt=
""
class=
"img-fluid rounded-start"
>
</div>
<div
class=
"card-body"
>
<div
class=
"col-lg-9 col-md-8 col-sm-12"
>
<h5
class=
"card-title"
>
<div
class=
"filter"
>
<?php
echo
$row
->
name
;
?>
<span>
|
<a
class=
"icon"
href=
"#"
data-bs-toggle=
"dropdown"
><i
class=
"bi bi-three-dots"
></i></a>
<?php
echo
$row
->
origin
;
?>
<ul
class=
"dropdown-menu dropdown-menu-end dropdown-menu-arrow"
>
</span>
<li
class=
"dropdown-header text-start"
>
</h5>
<h6>
Opciones
</h6>
<!--ingredientes-->
</li>
<?php
foreach
(
$ingredients
as
$ingredient
)
{
?>
<li><a
class=
"dropdown-item"
href=
"#"
>
Guardar
</a></li>
<div
class=
"chip"
title=
"Cantidad:
<?php
echo
$ingredient
->
amount
;
?>
"
>
<li><a
class=
"dropdown-item"
href=
"#"
>
Compartir
</a></li>
<img
src=
"imagenes/ingredientes/
<?php
echo
$ingredient
->
icon
;
?>
"
>
</ul>
<b
style=
"font-size: 14px"
>
</div>
<?php
echo
$ingredient
->
name
;
?>
</b>
<div
class=
"card-body"
>
</div>
<h5
class=
"card-title"
>
<?php
}
?>
<?php
echo
$row
->
name
;
?>
<span>
|
<!--fin ingredientes-->
<?php
echo
$row
->
origin
;
?>
</div>
</span>
</h5>
<!--ingredientes-->
<?php
foreach
(
$ingredients
as
$ingredient
)
{
?>
<div
class=
"chip"
title=
"Cantidad:
<?php
echo
$ingredient
->
amount
;
?>
"
>
<img
src=
"imagenes/ingredientes/
<?php
echo
$ingredient
->
icon
;
?>
"
>
<b
style=
"font-size: 14px"
>
<?php
echo
$ingredient
->
name
;
?>
</b>
</div>
<?php
}
?>
<!--fin ingredientes-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Fin de la tarjeta de la receta -->
<!-- Fin de la tarjeta de la receta -->
<?php
<?php
}
}
}
?>
}
</div>
?>
</section>
</main>
<!-- End #main -->
<script>
let
originalRecipes
;
$
(
document
).
ready
(
function
()
{
// Cuando se hace click en cualquier checkbox
originalRecipes
=
$
(
"#recipeCards"
).
html
();
$
(
"input[type='checkbox']"
).
click
(
function
()
{
let
vegan
=
$
(
'#checkboxOne'
).
is
(
':checked'
)
?
1
:
0
;
let
origins
=
[];
let
seasons
=
[];
// Recoger los valores de los checkboxes de origen seleccionados
$
(
"input[id^='checkboxFour']:checked, input[id^='checkboxFive']:checked, input[id^='checkboxSix']:checked, input[id^='checkboxSeven']:checked, input[id^='checkboxEight']:checked, input[id^='checkboxNine']:checked"
).
each
(
function
()
{
origins
.
push
(
$
(
this
).
val
());
});
// Recoger los valores de los checkboxes de estaciones seleccionados
</section>
$
(
"input[id^='checkboxTen']:checked, input[id^='checkboxEleven']:checked, input[id^='checkboxTwelve']:checked, input[id^='checkbox13']:checked"
).
each
(
function
()
{
seasons
.
push
(
$
(
this
).
val
());
});
// Verificar si todos los checkboxes están desmarcados
</main>
<!-- End #main -->
if
(
$
(
"input[type='checkbox']:checked"
).
length
==
0
)
{
\ No newline at end of file
// Si todos los checkboxes están desmarcados, restablece el contenido de las recetas
$
(
"#recipeCards"
).
html
(
originalRecipes
);
}
else
{
// Si no, realiza la petición AJAX
$
.
ajax
({
url
:
'/filter_recipes'
,
// Asegúrate de que esta ruta esté definida en tus rutas
method
:
'POST'
,
data
:
{
is_vegan
:
vegan
,
origin
:
origins
,
season
:
seasons
},
//Meter los datos en un body para hacer el query directamente, especificar el formato JSON y comprobar si hay que especificar en header
success
:
function
(
data
)
{
// Actualizamos el contenido de las recetas
$
(
"#recipeCards"
).
html
(
data
);
originalRecipes
=
$
(
"#recipeCards"
).
html
();
}
});
}
});
});
</script>
app/Views/templates/header.php
View file @
fac1f0e7
...
@@ -96,7 +96,6 @@
...
@@ -96,7 +96,6 @@
<img
src=
"
<?=
base_url
(
"imagenes/profile.png"
)
?>
"
alt=
"Profile"
class=
"rounded-circle"
>
<img
src=
"
<?=
base_url
(
"imagenes/profile.png"
)
?>
"
alt=
"Profile"
class=
"rounded-circle"
>
<?php
endif
;
?>
<?php
endif
;
?>
<span
class=
"d-none d-md-block dropdown-toggle ps-2"
>
<span
class=
"d-none d-md-block dropdown-toggle ps-2"
>
</span>
</span>
...
@@ -215,41 +214,41 @@
...
@@ -215,41 +214,41 @@
<!--Contenido del dropdown-->
<!--Contenido del dropdown-->
<ul
class=
"indian-cboxtags"
>
<ul
class=
"indian-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxFour"
value=
"
India
"
>
<input
type=
"checkbox"
id=
"checkboxFour"
value=
"
Order four
"
>
<label
for=
"checkboxFour"
>
India
</label>
<label
for=
"checkboxFour"
>
India
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"french-cboxtags"
>
<ul
class=
"french-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxFive"
value=
"
Francia
"
>
<input
type=
"checkbox"
id=
"checkboxFive"
value=
"
Order five
"
>
<label
for=
"checkboxFive"
>
Francia
</label>
<label
for=
"checkboxFive"
>
Francia
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"chinese-cboxtags"
>
<ul
class=
"chinese-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxSix"
value=
"
China
"
>
<input
type=
"checkbox"
id=
"checkboxSix"
value=
"
Order six
"
>
<label
for=
"checkboxSix"
>
China
</label>
<label
for=
"checkboxSix"
>
China
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"mexican-cboxtags"
>
<ul
class=
"mexican-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxSeven"
value=
"
México
"
>
<input
type=
"checkbox"
id=
"checkboxSeven"
value=
"
Order seven
"
>
<label
for=
"checkboxSeven"
>
México
</label>
<label
for=
"checkboxSeven"
>
México
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"spanish-cboxtags"
>
<ul
class=
"spanish-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxEight"
value=
"
España
"
>
<input
type=
"checkbox"
id=
"checkboxEight"
value=
"
Order eigth
"
>
<label
for=
"checkboxEight"
>
España
</label>
<label
for=
"checkboxEight"
>
España
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"japanese-cboxtags"
>
<ul
class=
"japanese-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxNine"
value=
"
Japón
"
>
<input
type=
"checkbox"
id=
"checkboxNine"
value=
"
Order nine
"
>
<label
for=
"checkboxNine"
>
Japón
</label>
<label
for=
"checkboxNine"
>
Japón
</label>
</li>
</li>
</ul>
</ul>
...
@@ -268,27 +267,27 @@
...
@@ -268,27 +267,27 @@
<!--Contenido del dropdown-->
<!--Contenido del dropdown-->
<ul
class=
"winter-cboxtags"
>
<ul
class=
"winter-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxTen"
value=
"
Invierno
"
>
<input
type=
"checkbox"
id=
"checkboxTen"
value=
"
Order ten
"
>
<label
for=
"checkboxTen"
>
Invierno
</label>
<label
for=
"checkboxTen"
>
Invierno
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"spring-cboxtags"
>
<ul
class=
"spring-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxEleven"
value=
"
Primavera
"
>
<input
type=
"checkbox"
id=
"checkboxEleven"
value=
"
Order eleven
"
>
<label
for=
"checkboxEleven"
>
Primavera
</label>
<label
for=
"checkboxEleven"
>
Primavera
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"summer-cboxtags"
>
<ul
class=
"summer-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkboxTwelve"
value=
"
Verano
"
>
<input
type=
"checkbox"
id=
"checkboxTwelve"
value=
"
Order twelve
"
>
<label
for=
"checkboxTwelve"
>
Verano
</label>
<label
for=
"checkboxTwelve"
>
Verano
</label>
</li>
</li>
</ul>
</ul>
<ul
class=
"autumn-cboxtags"
>
<ul
class=
"autumn-cboxtags"
>
<li>
<li>
<input
type=
"checkbox"
id=
"checkbox13"
value=
"O
toño
"
>
<input
type=
"checkbox"
id=
"checkbox13"
value=
"O
rder 13
"
>
<label
for=
"checkbox13"
>
Otoño
</label>
<label
for=
"checkbox13"
>
Otoño
</label>
</li>
</li>
</ul>
</ul>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment