Commit fac1f0e7 by Juan Montilla

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

parents a6a37484 17a568fc
......@@ -9,66 +9,67 @@ class InsertRecipeController extends Controller
public function index()
{
return view('templates/header')
.view('pages/insertRecipe')
. view('pages/insertRecipe')
. view('templates/footer');
}
public function search_ingredient() {
public function search_ingredient()
{
// Obtener la consulta de búsqueda desde el formulario
$query = $this->request->getVar('query');
// Cargar el modelo de ingredientes (si no lo has hecho)
$ingredientModel = new \App\Models\IngredientModel();
// Buscar ingredientes en la base de datos que coincidan con la consulta
$ingredients = $ingredientModel->search_ingredient($query);
// Devolver los ingredientes coincidentes en formato JSON
return $this->response->setJSON($ingredients);
}
public function insert_recipe()
{
// Cargar los modelos necesarios
$recipeModel = new \App\Models\RecipesModel();
$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;
}
{
// Cargar los modelos necesarios
$recipeModel = new \App\Models\RecipesModel();
$recipesIngredientModel = new \App\Models\RecipesIngredientModel();
// Obtener el email del usuario de la sesión
$session = session();
$userEmail = $session->get('user')->email;
// Obtener los datos del formulario
$recipeData = $this->request->getPost();
$selectedIngredients = json_decode($recipeData['selected_ingredients'], true);
// Agregar el email del usuario a los datos de la receta
$recipeData['email_user'] = $userEmail;
// Eliminar el elemento 'selected_ingredients' de los datos de la receta
unset($recipeData['selected_ingredients']);
// Insertar la receta en la tabla 'recipes'
$recipeId = $recipeModel->insert($recipeData);
// Manejar el archivo de imagen
$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'
foreach ($selectedIngredients as $ingredient) {
$recipesIngredientModel->insert([
'id_recipe' => $recipeId,
'id_ingredient' => $ingredient['id'],
'amount' => $ingredient['amount']
]);
}
// Obtener el email del usuario de la sesión
$session = session();
$userEmail = $session->get('user')->email;
// Agregar el email del usuario a los datos de la receta
$recipeData['email_user'] = $userEmail;
// Redireccionar a la página principal
return redirect()->to('/home');
}
// Insertar la receta en la tabla 'recipes'
$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">
<div class="pagetitle">
<h1>Recetas</h1>
<nav>
......@@ -11,114 +10,70 @@
</nav>
</div><!-- End Page Title -->
<section class="section dashboard" id="recipeSection">
<div id="recipeCards">
<?php
$recipesModel = new \App\Models\RecipesModel();
$recipes = $recipesModel->findAll();
<section class="section dashboard">
if (sizeof($recipes) > 0) {
foreach ($recipes as $row) {
$ingredients = $recipesModel->get_recipe_ingredients($row->id);
?>
<!-- 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>
<?php
$recipesModel = new \App\Models\RecipesModel();
$recipes = $recipesModel->findAll();
<div class="col-lg-9 col-md-8 col-sm-12">
<div class="filter">
<a class="icon" href="#" data-bs-toggle="dropdown"><i class="bi bi-three-dots"></i></a>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<li class="dropdown-header text-start">
<h6>Opciones</h6>
</li>
<li><a class="dropdown-item" href="#">Guardar</a></li>
<li><a class="dropdown-item" href="#">Compartir</a></li>
</ul>
</div>
if (sizeof($recipes) > 0) {
foreach ($recipes as $row) {
$ingredients = $recipesModel->get_recipe_ingredients($row->id);
?>
<!-- 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="card-body">
<h5 class="card-title">
<?php echo $row->name; ?> <span>|
<?php echo $row->origin; ?>
</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 class="col-lg-9 col-md-8 col-sm-12">
<div class="filter">
<a class="icon" href="#" data-bs-toggle="dropdown"><i class="bi bi-three-dots"></i></a>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
<li class="dropdown-header text-start">
<h6>Opciones</h6>
</li>
<li><a class="dropdown-item" href="#">Guardar</a></li>
<li><a class="dropdown-item" href="#">Compartir</a></li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title">
<?php echo $row->name; ?> <span>|
<?php echo $row->origin; ?>
</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>
<!-- Fin de la tarjeta de la receta -->
<?php
}
<!-- Fin de la tarjeta de la receta -->
<?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
$("input[id^='checkboxTen']:checked, input[id^='checkboxEleven']:checked, input[id^='checkboxTwelve']:checked, input[id^='checkbox13']:checked").each(function () {
seasons.push($(this).val());
});
</section>
// Verificar si todos los checkboxes están desmarcados
if ($("input[type='checkbox']:checked").length == 0) {
// 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>
</main><!-- End #main -->
\ No newline at end of file
......@@ -96,7 +96,6 @@
<img src="<?= base_url("imagenes/profile.png") ?>" alt="Profile" class="rounded-circle">
<?php endif; ?>
<span class="d-none d-md-block dropdown-toggle ps-2">
</span>
......@@ -215,41 +214,41 @@
<!--Contenido del dropdown-->
<ul class="indian-cboxtags">
<li>
<input type="checkbox" id="checkboxFour" value="India">
<input type="checkbox" id="checkboxFour" value="Order four">
<label for="checkboxFour">India </label>
</li>
</ul>
<ul class="french-cboxtags">
<li>
<input type="checkbox" id="checkboxFive" value="Francia">
<input type="checkbox" id="checkboxFive" value="Order five">
<label for="checkboxFive">Francia </label>
</li>
</ul>
<ul class="chinese-cboxtags">
<li>
<input type="checkbox" id="checkboxSix" value="China">
<input type="checkbox" id="checkboxSix" value="Order six">
<label for="checkboxSix">China </label>
</li>
</ul>
<ul class="mexican-cboxtags">
<li>
<input type="checkbox" id="checkboxSeven" value="México">
<input type="checkbox" id="checkboxSeven" value="Order seven">
<label for="checkboxSeven">México </label>
</li>
</ul>
<ul class="spanish-cboxtags">
<li>
<input type="checkbox" id="checkboxEight" value="España">
<input type="checkbox" id="checkboxEight" value="Order eigth">
<label for="checkboxEight">España </label>
</li>
</ul>
<ul class="japanese-cboxtags">
<li>
<input type="checkbox" id="checkboxNine" value="Japón">
<input type="checkbox" id="checkboxNine" value="Order nine">
<label for="checkboxNine">Japón </label>
</li>
</ul>
......@@ -268,27 +267,27 @@
<!--Contenido del dropdown-->
<ul class="winter-cboxtags">
<li>
<input type="checkbox" id="checkboxTen" value="Invierno">
<input type="checkbox" id="checkboxTen" value="Order ten">
<label for="checkboxTen">Invierno </label>
</li>
</ul>
<ul class="spring-cboxtags">
<li>
<input type="checkbox" id="checkboxEleven" value="Primavera">
<input type="checkbox" id="checkboxEleven" value="Order eleven">
<label for="checkboxEleven">Primavera </label>
</li>
</ul>
<ul class="summer-cboxtags">
<li>
<input type="checkbox" id="checkboxTwelve" value="Verano">
<input type="checkbox" id="checkboxTwelve" value="Order twelve">
<label for="checkboxTwelve">Verano </label>
</li>
</ul>
<ul class="autumn-cboxtags">
<li>
<input type="checkbox" id="checkbox13" value="Otoño">
<input type="checkbox" id="checkbox13" value="Order 13">
<label for="checkbox13">Otoño </label>
</li>
</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