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{
//Se cargan funciones de javascript especificas de esta funcionalidad
Casset::js('listacompra/index.js');
//Extraemos la información de las recetas de la semana
$recipes = Model_Recipe::get_recipes_current_week();
//PEDIR INGREDIENTES
......@@ -38,19 +39,25 @@ class Controller_Listacompra_Index extends \Controller_App{
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');
//Extraemos la información de las recetas de la semana
$recipes = Model_Recipe::get_recipes_current_week();
//Recogemos los identificadores de las recetas
$recipe_ids = array();
foreach ($recipes as $recipe)
{
$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();
//Titulo de la vista
......@@ -64,93 +71,139 @@ class Controller_Listacompra_Index extends \Controller_App{
//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.";
//Pasar texto de confirmacion de accion
$view->action = "¿Estás seguro de que quieres borrar los productos de la lista de la compra?";
return Response::forge($view);
}
/**
*
* @desc Elimina todos los ingredientes de la semana
*
*/
public function get_delete_all()
{
//Obtenemos las recetas de la semena
$recipes = Model_Recipe::get_recipes_current_week();
//Recorremos las recetas
foreach ($recipes as $recipe)
{
Log::error("ENTRO EN RECETAS!!!");
//Obtenemos todos los ingredientes de cada receta
foreach ($recipe->all_ingredients as $ingrediente)
{
Log::error("INTENTO BORRAR INGREDIENTE!!! $ingrediente->id");
//Vamos eliminando uno a uno los ingredientes
$ingrediente->delete();
}
}
//Notificamos que toodo a funcionado correctamente
$this->notify("success","Se han borrado los ingredientes correctamente");
//Redireccionamos a la página anterior
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()
{
//Recogemos los identificadores de ingredientes que se desea eliminar
$ingredients = Input::post('ingredients_ids');
//Comprobamos si se ha enviado algún ingrediente
if(count($ingredients)>0)
{
//Buscamos en la bbdd los ingredientes pedidos
$ingredients = Model_Ingredient::query()->where('ingredient_id','IN', $ingredients)->get();
//Si no se encuentran ingredientes, ocurrió un error.
if(!$ingredients)
{
return;
//Notificamos un poco antes
$this->notify("error","No se han marcados ingredientes para eliminar");
return;
}
//Recorremos los ingredientes, eliminando uno a uno.
foreach ($ingredients as $ingredient)
{
$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()
{
//Recogemos los identificadores indicados
$ingredients = Input::post('ingredients_ids');
//Solo entramos si se enviaron los identificadores
if(count($ingredients)>0)
{
//Cargamos los ingredientes a través de sus Identificadores locales
$ingredients = Model_Ingredient::query()->where('id','IN', $ingredients)->get();
//Sino se encuentran ingredientes se sale
if(!$ingredients)
{
return;
}
//Recorremos cada ingredientes y lo eliminamos
foreach ($ingredients as $ingredient)
{
$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()
{
Log::error("ENTOROROROR ADD");
//Obtenemos descripción del nuevo ingrediente que se quiere incluir
$desc = Input::post('ingredient');
Log::error("DESC $desc");
try
{
//Obtenemos la receta personalizada de la semana
$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();
Log::error("BUSCO EL INGREDIENTE!! ".(($ingredient)?$ingredient->id:""));
//Si no existe el ingrediente, se crea y se guarda
if(!$ingredient)
{
$ingredient = Model_Ingredient::forge();
$ingredient->desc = $desc;
$ingredient->desc = $desc;
$ingredient->recipe_local_id = $custom_recipe->id;
$ingredient->used = 'S';
$ingredient->created_at = date('Y-m-d H:i:s');
//Establecemos el atributo usado a SÍ para que nunca sea enviado a la lista de la compra
$ingredient->used = 'S';
$ingredient->created_at = date('Y-m-d H:i:s');
$ingredient->save();
}
else
......@@ -166,15 +219,24 @@ class Controller_Listacompra_Index extends \Controller_App{
return true;
}
/**
* @desc se recibe un array con los ids de los ingredientes se van a cambiar a usado.
*/
public function post_use_ingredient()
{
//Se recogen todos los ids de los ingredientes
$array = Input::post('ids_used');
//Si no llegan ids, no se hace nada
if(count($array)>0)
{
Log::error(print_r($array,true));
$recipes = Model_Recipe::recipes_current_week()->related('ingredients')->where('ingredients.ingredient_id', 'in', $array)->get();
//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();
//Recorremos las recetas
foreach ($recipes as $recipe)
{
//Recorremos cada ingrediente y lo vamos marcado como usado
foreach ($recipe->ingredients as $ingredient)
{
$ingredient->used = 'S';
......
......@@ -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)
{
//Mergeamos ingredientes de las recetas con los custom ingredients
......
......@@ -58,8 +58,8 @@
{#PREPARAMOS NOTIFICAION PARA MOSTRAR EL MODAL#}
{% if session_get('notification') %}
<input class="notification type" value="{{ session_get('notification.type') }}">
<input class="notification text" value="{{ session_get('notification.text') }}">
<input class="notification type" value="{{ session_get('notification.type') }}" hidden>
<input class="notification text" value="{{ session_get('notification.text') }}" hidden>
{{ session_delete('notification') }}
......
......@@ -42,6 +42,7 @@ $(document).ready(function() {
$('.btn-delete-checked').on('click', function (e) {
get_checkeds();
var reload = false;
$.ajax({
url: "lista-compra/delete",
type: "POST",
......@@ -50,22 +51,14 @@ $(document).ready(function() {
ingredients_ids: ids_delete
},
success: function (data) {
if(data != "" && data != 0)
if(reload)
{
// Modal success
$('#modalSuccess').modal('show');
location.reload();
}
else
{
// Modal error
{
reload = true
}
setTimeout(function(){
location.reload();
}, 2000);
}
});
......@@ -89,10 +82,14 @@ $(document).ready(function() {
// Modal error
}
setTimeout(function(){
if(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