<?php

class FamiliasController extends \BaseController {

	public static $jqgrid_colmodel = [
		[
			'label' => 'Id',
			'name' => 'NUMREG',
			'hidden' => true
		],
		[
			'label' => 'Codigo',
			'name' => 'CODIGO',
		],
		[
			'label' => 'Nombre',
			'name' => 'DESCRIP',
		]
	];


	/**
	 * Muestra grilla de Productos
	 * @return mixed
	 */
	public function index() {
		$title = 'Familias';
		Breadcrumb::append_crumb($title);
		Jqgrid::add_js_colmodel('Familias', self::$jqgrid_colmodel);
		return View::make('Familias.index', compact('title'));
	}

	/**
	 * Genera el json para cargar los datos en jqgrid
	 * @return string
	 */
	public function datagrid() {
		Jqgrid::init('choi_db', self::$jqgrid_colmodel, self::jqgrid_format());
        Jqgrid::get_query()->where('TIPO', 6); // Filtro 
		return Jqgrid::datagrid();
	}

	/**
	 * Retorna funcion anonima que define los formatos para los valores de las distintas columnas de la grilla
	 * @return function
	 */
	private static function jqgrid_format() {
		return function ($column, $value) {
			$result = $value;
			return $result;
		};
	}

	/**
	 * Agrega un nuevo producto
	 *
	 * @return Response
	 */
	public function agregar()
	{
		$vdata = [
			'DESCRIP' => \Input::get('DESCRIP'),
		];

		$vrules = [
			'DESCRIP' => 'required|max:45|unique:choi_db',
		];

		$vmessages = [
			'DESCRIP.required' => 'El valor del campo descripción ya existe.',
			'DESCRIP.max' => 'El valor del campo descripción debe tener máximo 45 caracteres.',
			'DESCRIP.unique' => 'El campo descripción es obligatorio.',
		];

		$validador = Validator::make($vdata, $vrules, $vmessages);

		if($validador->fails()) {
			$response = $validador->messages();
			return Response::json($response, 422);
		} else {
			DB::statement('exec dbo.spGrabaFamilia @TIPO = ?, @NUMREG = ?, @DESCRIP = ?', [6, 0, $vdata['DESCRIP']]);
			$message = ['content' => 'El Familia fue agregado.', 'type' => 'success'];
			$response = ['status' => 200, 'message' => $message];
		}

		return Response::json($response, $response['status']);
	}

	/**
	 * Obtiene producto a partir de id
	 *
	 * @param int $id
	 * @return mixed
	 */
	public function obtener($id) {
		$Familia = DB::table('choi_db')
			->where( 'NUMREG', $id)
			->select(DB::raw('RTRIM(LTRIM(NUMREG)) NUMREG, RTRIM(LTRIM(CODIGO)) CODIGO, RTRIM(LTRIM(DESCRIP)) DESCRIP'))
			->first();
		return Response::json($Familia, 200);
	}

	/**
	 * Editar un nuevo producto
	 *
	 * @return Response
	 */
	public function editar()
	{
		$vdata = [
			'id' => \Input::get('id'),
			'CODIGO' => \Input::get('CODIGO'),
			'DESCRIP' => \Input::get('DESCRIP'),
		];

		$vrules = [
			'DESCRIP' => "required|max:45",
		];

		$vmessages = [
			'DESCRIP.max' => 'El valor del campo Descripción debe tener máximo 45 caracteres.',
		];

		$validador = Validator::make($vdata, $vrules, $vmessages);

		if($validador->fails()) {
			$response = $validador->messages();
			return Response::json($response, 422);
		} else {
			DB::statement('exec dbo.spGrabaFamilia @TIPO = ?, @NUMREG = ?, @DESCRIP = ?', [6, $vdata['id'], $vdata['DESCRIP']]);
			$message = ['content' => 'El Familia fue agregado.', 'type' => 'success'];
			$response = ['status' => 200, 'message' => $message];
		}

		return Response::json($response, $response['status']);
	}

	public function eliminar()
	{
		$id = Input::get('id');

		DB::statement("delete choi_db where NUMREG = $id");
		$message = ['content' => 'El Familia fue Eliminada.', 'type' => 'success'];
		$response = ['status' => 200, 'message' => $message];

		return Response::json($response, $response['status']);
	}

}
