function index_get() { $filters = $this->get("filter")["filters"]; $page = $this->get('page') !== false ? $this->get('page') : 1; $limit = $this->get('limit') !== false ? $this->get('limit') : 50; $sort = $this->get("sort"); $data["results"] = array(); $data["count"] = 0; $obj = new Product(null, $this->entity); //Sort if (!empty($sort) && isset($sort)) { foreach ($sort as $value) { $obj->order_by($value["field"], $value["dir"]); } } //Filter if (!empty($filters) && isset($filters)) { $deleted = 0; foreach ($filters as $value) { if (!empty($value["operator"]) && isset($value["operator"])) { if ($value["operator"] == "where_in") { $obj->where_in($value["field"], $value["value"]); } else { if ($value["operator"] == "or_where_in") { $obj->or_where_in($value["field"], $value["value"]); } else { if ($value["operator"] == "where_not_in") { $obj->where_not_in($value["field"], $value["value"]); } else { if ($value["operator"] == "or_where_not_in") { $obj->or_where_not_in($value["field"], $value["value"]); } else { if ($value["operator"] == "like") { $obj->like($value["field"], $value["value"]); } else { if ($value["operator"] == "or_like") { $obj->or_like($value["field"], $value["value"]); } else { if ($value["operator"] == "not_like") { $obj->not_like($value["field"], $value["value"]); } else { if ($value["operator"] == "or_not_like") { $obj->or_not_like($value["field"], $value["value"]); } else { if ($value["operator"] == "startswith") { $obj->like($value["field"], $value["value"], "after"); } else { if ($value["operator"] == "endswith") { $obj->like($value["field"], $value["value"], "before"); } else { if ($value["operator"] == "contains") { $obj->like($value["field"], $value["value"], "both"); } else { if ($value["operator"] == "or_where") { $obj->or_where($value["field"], $value["value"]); } else { if ($value["operator"] == "by_vendor") { $obj->where_related("stock", $value["field"], $value["value"]); } else { if ($value["operator"] == "search") { $obj->like("sku", $value["value"], "after"); $obj->or_like("name", $value["value"], "both"); $obj->or_like("description", $value["value"], "both"); } else { $obj->where($value["field"] . ' ' . $value["operator"], $value["value"]); } } } } } } } } } } } } } } } else { if ($value["field"] == "deleted") { $deleted = $value["value"]; } else { $obj->where($value["field"], $value["value"]); } } } $obj->where("deleted", $deleted); } //Result $obj->get_paged_iterated($page, $limit); $data["count"] = $obj->paged->total_rows; if ($obj->result_count() > 0) { foreach ($obj as $value) { $priceList = array(); foreach ($value->price_list->get() as $p) { $priceList[] = array("id" => $p->id, "currency_id" => $p->currency_id, "product_id" => $p->product_id, "unit_id" => $p->unit_id, "price" => floatval($p->price), "unit_value" => floatval($p->unit_value), "locale" => $p->currency->get()->locale, "unit" => $p->unit->get()->name); } $cost = array(); // foreach ($value->stock->order_by("issued_date", "desc")->get() as $c) { // $cost = array( // "id" => $c->id, // "quantity" => floatval($c->quantity), // "price" => floatval($c->price), // "locale" => $c->currency->get()->locale, // "unit" => $c->unit->get()->name // ); // } $data["results"][] = array("id" => $value->id, "category_id" => $value->category_id, "unit_id" => $value->unit_id, "sku" => $value->sku, "name" => $value->name, "description" => $value->description, "on_hand" => floatval($value->on_hand), "order_point" => floatval($value->order_point), "favorite" => $value->favorite == 0 ? false : true, "image_url" => $value->image_url, "status" => $value->status == 0 ? false : true, "deleted" => $value->deleted, "unit" => $value->unit->get()->name, "cost" => $cost, "price_lists" => $priceList); } } //Response Data $this->response($data, 200); }
function _save(Recipe $recipe = NULL) { /* Success on validation */ # Zagruzka Recepta if ($recipe == NULL) { $recipe = new Recipe(); } $recipe_image = new Recipe_Image(); $recipe->prepare_time = $this->input->post('prep_time'); $recipe->cook_time = $this->input->post('cook_time'); $recipe->servings = $this->input->post('servings'); $total_products = $this->input->post('total_products'); #find filling fields of product and create array $product_name if ($this->save_object_name($recipe)) { #RECIPE IMAGE #esli net svazannoi image to sozdaetsa novaia i zadaetsa id if ($recipe->recipe_image->result_count() == 0) { $recipe_image_id = $recipe->recipe_image->result_count() + 1; $recipe_image = new Recipe_Image(); $recipe_image->image_type = 1; } else { $recipe_image_id = $recipe->recipe_image->id; #beret sushestvushii ID image is Recipes_Image } #esli my_upload_image_lib proinicializirovalas' verno to image zagrujaetca i resize $this->upload_image_lib->initialize(array('type' => 'recipe', 'size' => 'tiny')); #vozvrashaet polnoe ima kartinki primer: re_id_id.jpg; v bazu sohranaetsa tol'ko $recipe_image_id if ($this->upload_image_lib->upload_resize_img('recipe_image', $recipe->id . '_' . $recipe_image_id)) { $recipe_image->save($recipe); } #else #$this->data['form_error'] = $this->upload->display_errors(); #vivodit log oshibok #PRODUKTI #zagruzka udaleniih productov $products_remove_selected = $this->input->post('hidden_product_removed'); if (!$products_remove_selected) { $products_remove_selected = array(); } for ($number = 1; $number <= $total_products; $number++) { $product_name = $this->input->post('product_' . $number); $product_qty = $this->input->post('qty_' . $number); $product_mera_id = $this->input->post('mera_' . $number); # if ($product_name && $product_qty && $product_mera_id && !in_array($number, $products_remove_selected)) { $dm_product = new Product(); $dm_product->where_related('languages_product', 'name', $product_name)->get(); $recipe->save($dm_product); $recipe->set_join_field($dm_product, array('mera_id' => $product_mera_id, 'value' => $product_qty)); } } # udalit' vibrannie producti $products_name = array(); #peremenaia spiska productov foreach ($products_remove_selected as $number) { #sozdaet spisok udalaemih productov array_push($products_name, $this->input->post('product_' . $number)); } #esli spisok udalaemih productov ne pust to vipolnaetsa uslovie if (!empty($products_name)) { $dm_products = new Product(); $dm_products->where_in_related('languages_product', 'name', $products_name)->get(); $recipe->delete($dm_products->all); } #SHAGI $total_steps = $this->input->post('total_steps'); for ($step_number = 1; $step_number <= $total_steps; $step_number++) { #Languages $total_languages = $this->input->post('total_language_' . $step_number); $dm_current_step = dm_get_object_by_field($step_number, $recipe->recipe_step, 'number'); if (!$dm_current_step) { $dm_current_step = new Recipe_Step(); $dm_current_step->number = $step_number; $dm_current_step->save($recipe); } for ($lang_number = 1; $lang_number <= $total_languages; $lang_number++) { $language_selected = $this->input->post('sel_languages_text_' . $step_number . '_' . $lang_number); $language_text = $this->input->post('inp_text_' . $step_number . '_' . $lang_number); $dm_current_step->save_by_language(array('text' => $language_text), $language_selected); } #IMAGE $form_name = 'step_photo_' . $number; $image_name = isset($recipe->recipe_step->id) ? $recipe->id . '_' . $recipe->recipe_step : $recipe->id . '_' . $recipe->recipe_step->count() + 1; # if ($this->upload_image_lib->initialize(array('type' => 'step', 'size' => 'tiny'))) { $image_name = $this->upload_image_lib->upload_resize_img($form_name, $image_name); if ($image_name) { $recipe->recipe_step->image = $image_name; } else { $data['form_error'] = $this->upload_image_lib->get_errors() . $this->upload->display_errors(); } } } $this->data['form_success'] = 'Рецепт Сохранен'; } else { $this->data['form_error'] = $recipe->error->string; } }