Commit 03b88040 by Luis Perez

Terminado el modulo de ingredientes, incluidos comentarios explicativos

parent 467b57b4
...@@ -25,6 +25,7 @@ class Controller_Listacompra_Index extends \Controller_App{ ...@@ -25,6 +25,7 @@ class Controller_Listacompra_Index extends \Controller_App{
//Se cargan funciones de javascript especificas de esta funcionalidad //Se cargan funciones de javascript especificas de esta funcionalidad
Casset::js('listacompra/index.js'); Casset::js('listacompra/index.js');
//Extraemos la información de las recetas de la semana
$recipes = Model_Recipe::get_recipes_current_week(); $recipes = Model_Recipe::get_recipes_current_week();
//PEDIR INGREDIENTES //PEDIR INGREDIENTES
...@@ -38,19 +39,25 @@ class Controller_Listacompra_Index extends \Controller_App{ ...@@ -38,19 +39,25 @@ class Controller_Listacompra_Index extends \Controller_App{
parent::before(); parent::before();
} }
public function action_index(){ /**
* @desc Muestra la lista de la compra
* @return Response
*/
public function action_index()
{
$view = View::forge('listacompra/index.twig'); $view = View::forge('listacompra/index.twig');
//Extraemos la información de las recetas de la semana
$recipes = Model_Recipe::get_recipes_current_week(); $recipes = Model_Recipe::get_recipes_current_week();
//Recogemos los identificadores de las recetas
$recipe_ids = array(); $recipe_ids = array();
foreach ($recipes as $recipe) foreach ($recipes as $recipe)
{ {
$recipe_ids[] = $recipe->id; $recipe_ids[] = $recipe->id;
} }
//En caso de que haya recetas, llamamos a una funcion que nos devuelve los ingredientes, sin repetir ninguno.
$view->ingredients = count($recipe_ids)>0 ? Model_Ingredient::get_ingredients_week($recipe_ids) : array(); $view->ingredients = count($recipe_ids)>0 ? Model_Ingredient::get_ingredients_week($recipe_ids) : array();
//Titulo de la vista //Titulo de la vista
...@@ -64,91 +71,137 @@ class Controller_Listacompra_Index extends \Controller_App{ ...@@ -64,91 +71,137 @@ class Controller_Listacompra_Index extends \Controller_App{
//Pasar la leyenda para la info funcionamiento de la página //Pasar la leyenda para la info funcionamiento de la página
$view->leyenda = "En esta pantalla se han cargado todos los ingredientes necesarios para realizar el menú personalizado que has elegido. Puedes añadir ingredientes nuevos, eliminar algunos o eliminarlos todos. Ten siempre tu lista de la compra a mano. Te damos la posibilidad de hacer la compra a través de la web DelSuper en el supermercado que prefieras en un solo click. Si pulsas en el botón hacer compra en Del Super te redireccionamos a su web con todos estos ingredientes seleccionados."; $view->leyenda = "En esta pantalla se han cargado todos los ingredientes necesarios para realizar el menú personalizado que has elegido. Puedes añadir ingredientes nuevos, eliminar algunos o eliminarlos todos. Ten siempre tu lista de la compra a mano. Te damos la posibilidad de hacer la compra a través de la web DelSuper en el supermercado que prefieras en un solo click. Si pulsas en el botón hacer compra en Del Super te redireccionamos a su web con todos estos ingredientes seleccionados.";
//Pasar texto de confirmacion de accion //Pasar texto de confirmacion de accion
$view->action = "¿Estás seguro de que quieres borrar los productos de la lista de la compra?"; $view->action = "¿Estás seguro de que quieres borrar los productos de la lista de la compra?";
return Response::forge($view); return Response::forge($view);
} }
/**
*
* @desc Elimina todos los ingredientes de la semana
*
*/
public function get_delete_all() public function get_delete_all()
{ {
//Obtenemos las recetas de la semena
$recipes = Model_Recipe::get_recipes_current_week(); $recipes = Model_Recipe::get_recipes_current_week();
//Recorremos las recetas
foreach ($recipes as $recipe) foreach ($recipes as $recipe)
{ {
Log::error("ENTRO EN RECETAS!!!"); //Obtenemos todos los ingredientes de cada receta
foreach ($recipe->all_ingredients as $ingrediente) foreach ($recipe->all_ingredients as $ingrediente)
{ {
Log::error("INTENTO BORRAR INGREDIENTE!!! $ingrediente->id"); //Vamos eliminando uno a uno los ingredientes
$ingrediente->delete(); $ingrediente->delete();
} }
} }
//Notificamos que toodo a funcionado correctamente
$this->notify("success","Se han borrado los ingredientes correctamente"); $this->notify("success","Se han borrado los ingredientes correctamente");
//Redireccionamos a la página anterior
return Response::redirect_back(); return Response::redirect_back();
} }
/**
* @desc Elimina los ingredientes pasando por post el campo ingrediente_id (identficador en la bbdd iNutralia)
*
*/
public function post_delete_ingredients() public function post_delete_ingredients()
{ {
//Recogemos los identificadores de ingredientes que se desea eliminar
$ingredients = Input::post('ingredients_ids'); $ingredients = Input::post('ingredients_ids');
//Comprobamos si se ha enviado algún ingrediente
if(count($ingredients)>0) if(count($ingredients)>0)
{ {
//Buscamos en la bbdd los ingredientes pedidos
$ingredients = Model_Ingredient::query()->where('ingredient_id','IN', $ingredients)->get(); $ingredients = Model_Ingredient::query()->where('ingredient_id','IN', $ingredients)->get();
//Si no se encuentran ingredientes, ocurrió un error.
if(!$ingredients) if(!$ingredients)
{ {
//Notificamos un poco antes
$this->notify("error","No se han marcados ingredientes para eliminar");
return; return;
} }
//Recorremos los ingredientes, eliminando uno a uno.
foreach ($ingredients as $ingredient) foreach ($ingredients as $ingredient)
{ {
$ingredient->delete(); $ingredient->delete();
} }
//Notificamos que las cosas han funcionado correctamente
$this->notify("success","Se han borrado los ingredientes marcados correctamente");
return;
} }
//Notificamos el error
$this->notify("Error","No se han seleccionado ingredientes para eliminar.");
} }
/**
* @desc Elimina los ingredientes utilizando el Identificador del ingrediente local
*/
public function post_delete_ingredients_ids() public function post_delete_ingredients_ids()
{ {
//Recogemos los identificadores indicados
$ingredients = Input::post('ingredients_ids'); $ingredients = Input::post('ingredients_ids');
//Solo entramos si se enviaron los identificadores
if(count($ingredients)>0) if(count($ingredients)>0)
{ {
//Cargamos los ingredientes a través de sus Identificadores locales
$ingredients = Model_Ingredient::query()->where('id','IN', $ingredients)->get(); $ingredients = Model_Ingredient::query()->where('id','IN', $ingredients)->get();
//Sino se encuentran ingredientes se sale
if(!$ingredients) if(!$ingredients)
{ {
return; return;
} }
//Recorremos cada ingredientes y lo eliminamos
foreach ($ingredients as $ingredient) foreach ($ingredients as $ingredient)
{ {
$ingredient->delete(); $ingredient->delete();
} }
//Notificamos que se ha eliminado correctamente los ingredientes
$this->notify("success","Se han borrado los ingredientes marcados correctamente");
} }
} }
/**
* @desc Añadimos ingredientes personalizados a nuestra bbdd local
* @return bool
*/
public function post_add_custom_ingredient() public function post_add_custom_ingredient()
{ {
Log::error("ENTOROROROR ADD"); //Obtenemos descripción del nuevo ingrediente que se quiere incluir
$desc = Input::post('ingredient'); $desc = Input::post('ingredient');
Log::error("DESC $desc");
try try
{ {
//Obtenemos la receta personalizada de la semana
$custom_recipe = Model_Recipe::get_custom_recipe(); $custom_recipe = Model_Recipe::get_custom_recipe();
//Obtenemos los ingredientes personalizados de la semana
$ingredient = Model_Ingredient::query()->where('desc',$desc)->where('recipe_local_id',$custom_recipe->id)->get_one(); $ingredient = Model_Ingredient::query()->where('desc',$desc)->where('recipe_local_id',$custom_recipe->id)->get_one();
Log::error("BUSCO EL INGREDIENTE!! ".(($ingredient)?$ingredient->id:""));
//Si no existe el ingrediente, se crea y se guarda
if(!$ingredient) if(!$ingredient)
{ {
$ingredient = Model_Ingredient::forge(); $ingredient = Model_Ingredient::forge();
$ingredient->desc = $desc; $ingredient->desc = $desc;
$ingredient->recipe_local_id = $custom_recipe->id; $ingredient->recipe_local_id = $custom_recipe->id;
//Establecemos el atributo usado a SÍ para que nunca sea enviado a la lista de la compra
$ingredient->used = 'S'; $ingredient->used = 'S';
$ingredient->created_at = date('Y-m-d H:i:s'); $ingredient->created_at = date('Y-m-d H:i:s');
$ingredient->save(); $ingredient->save();
...@@ -166,15 +219,24 @@ class Controller_Listacompra_Index extends \Controller_App{ ...@@ -166,15 +219,24 @@ class Controller_Listacompra_Index extends \Controller_App{
return true; return true;
} }
/**
* @desc se recibe un array con los ids de los ingredientes se van a cambiar a usado.
*/
public function post_use_ingredient() public function post_use_ingredient()
{ {
//Se recogen todos los ids de los ingredientes
$array = Input::post('ids_used'); $array = Input::post('ids_used');
//Si no llegan ids, no se hace nada
if(count($array)>0) if(count($array)>0)
{ {
Log::error(print_r($array,true)); //Cargamos las recetas de la semana y filtramos sobre los ingredientes que queremos modificar a usado
$recipes = Model_Recipe::recipes_current_week()->related('ingredients')->where('ingredients.ingredient_id', 'in', $array)->get(); $recipes = Model_Recipe::recipes_current_week()->related('ingredients')->where('ingredients.ingredient_id', 'in', $array)->get();
//Recorremos las recetas
foreach ($recipes as $recipe) foreach ($recipes as $recipe)
{ {
//Recorremos cada ingrediente y lo vamos marcado como usado
foreach ($recipe->ingredients as $ingredient) foreach ($recipe->ingredients as $ingredient)
{ {
$ingredient->used = 'S'; $ingredient->used = 'S';
......
...@@ -29,6 +29,11 @@ class Model_Ingredient extends Model{ ...@@ -29,6 +29,11 @@ class Model_Ingredient extends Model{
), ),
); );
/**
* @desc Se obtienen los ingredientes de la semana
* @param $recipes_ids
* @return array
*/
public static function get_ingredients_week($recipes_ids) public static function get_ingredients_week($recipes_ids)
{ {
//Mergeamos ingredientes de las recetas con los custom ingredients //Mergeamos ingredientes de las recetas con los custom ingredients
......
...@@ -58,8 +58,8 @@ ...@@ -58,8 +58,8 @@
{#PREPARAMOS NOTIFICAION PARA MOSTRAR EL MODAL#} {#PREPARAMOS NOTIFICAION PARA MOSTRAR EL MODAL#}
{% if session_get('notification') %} {% if session_get('notification') %}
<input class="notification type" value="{{ session_get('notification.type') }}"> <input class="notification type" value="{{ session_get('notification.type') }}" hidden>
<input class="notification text" value="{{ session_get('notification.text') }}"> <input class="notification text" value="{{ session_get('notification.text') }}" hidden>
{{ session_delete('notification') }} {{ session_delete('notification') }}
......
...@@ -42,6 +42,7 @@ $(document).ready(function() { ...@@ -42,6 +42,7 @@ $(document).ready(function() {
$('.btn-delete-checked').on('click', function (e) { $('.btn-delete-checked').on('click', function (e) {
get_checkeds(); get_checkeds();
var reload = false;
$.ajax({ $.ajax({
url: "lista-compra/delete", url: "lista-compra/delete",
type: "POST", type: "POST",
...@@ -50,22 +51,14 @@ $(document).ready(function() { ...@@ -50,22 +51,14 @@ $(document).ready(function() {
ingredients_ids: ids_delete ingredients_ids: ids_delete
}, },
success: function (data) { success: function (data) {
if(reload)
if(data != "" && data != 0)
{ {
// Modal success location.reload();
$('#modalSuccess').modal('show');
} }
else else
{ {
// Modal error reload = true
} }
setTimeout(function(){
location.reload();
}, 2000);
} }
}); });
...@@ -89,10 +82,14 @@ $(document).ready(function() { ...@@ -89,10 +82,14 @@ $(document).ready(function() {
// Modal error // Modal error
} }
setTimeout(function(){ if(reload)
{
location.reload(); location.reload();
}, 2000); }
else
{
reload = true
}
} }
}); });
}); });
......
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 to comment