Commit fac1f0e7 by Juan Montilla

Merge remote-tracking branch 'origin/developmanu' into developJC

parents a6a37484 17a568fc
...@@ -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
<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>
...@@ -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="Otoño"> <input type="checkbox" id="checkbox13" value="Order 13">
<label for="checkbox13">Otoño </label> <label for="checkbox13">Otoño </label>
</li> </li>
</ul> </ul>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment