UnidadeProcessoController.java 5.96 KB
package br.com.centralit.controller;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.googlecode.genericdao.search.Search;
import com.googlecode.genericdao.search.SearchResult;

import br.com.centralit.api.model.Processo;
import br.com.centralit.api.model.UnidadeProcesso;
import br.com.centralit.api.service.UnidadeProcessoService;
import br.com.centralit.api.viewHelper.EnviarProcessoVH;
import br.com.centralit.framework.controller.GenericController;
import br.com.centralit.framework.dao.arquitetura.SearchSeven;
import br.com.centralit.framework.json.ResponseBodyWrapper;
import br.com.centralit.framework.json.Views;
import br.com.centralit.framework.model.SearchParams;
import br.com.centralit.framework.util.UtilString;
import br.com.centralit.framework.view.GridVH;
import br.com.centralit.framework.view.ResultResponseVH;

/**
 * <p>
 * <img src="http://centralit.com.br/images/logo_central.png">
 * </p>
 * 
 * <p>
 * <b>Company: </b> Central IT - Governança Corporativa -
 * </p>
 * 
 * <p>
 * <b>Title: </b>
 * </p>
 * 
 * <p>
 * <b>Description: </b>
 * </p>
 * 
 * <p>
 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
 * </p>
 * 
 * <p>
 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
 * </p>
 * 
 * @since 05/01/2016 - 14:57:41
 * 
 * @version 1.0.0
 * 
 * @author rogerio.costa
 * 
 */
@SuppressWarnings({"unchecked", "rawtypes"})
@Controller
@RequestMapping("/rest/unidadeProcesso")
public class UnidadeProcessoController extends GenericController<UnidadeProcesso> {

	/** Atributo unidadeProcessoService. */
	private UnidadeProcessoService unidadeProcessoService;

	/**
	 * Responsável pela criação de novas instâncias desta classe.
	 * 
	 * @param unidadeProcessoService
	 */
	@Autowired
	public UnidadeProcessoController( UnidadeProcessoService unidadeProcessoService ) {

		super(unidadeProcessoService);

		this.unidadeProcessoService = unidadeProcessoService;
	}

	@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "save")
	@ResponseBody
	public ResponseBodyWrapper save(@RequestBody EnviarProcessoVH enviarProcessoVH) throws Exception {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.unidadeProcessoService.save(enviarProcessoVH), Views.EnviarProcessoView.class);

		return responseBody;
	}

	@RequestMapping(value = "/findByIdProcesso", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findByIdProcesso(@RequestParam(value = "idProcesso") Long idProcesso) {

		final Collection<UnidadeProcesso> list = this.unidadeProcessoService.findByIdProcesso(idProcesso);

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(list, Views.EnviarProcessoView.class);

		return responseBody;
	}
	
	/**
	 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
	 *
	 * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>	
	 *
	 * Método responsável por
	 *
	 * @author maycon.silva
	 *
	 * @param idProcesso
	 * @return
	 */
	@RequestMapping(value = "/findByPorIdProcessoEmExecucao", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findByPorIdProcessoEmExecucao(@RequestParam(value = "idProcesso") Long idProcesso) {

		final Collection<UnidadeProcesso> list = this.unidadeProcessoService.findByPorIdProcessoEmExecucao(idProcesso);

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(list, Views.EnviarProcessoView.class);

		return responseBody;
	}

	/**
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author rogerio.costa
	 * 
	 * @param idProcesso
	 * @param idUnidade
	 * @return
	 */
	@RequestMapping(value = "/obterPorUnidadeEProcesso", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper obterPorUnidadeEProcesso(@RequestParam(value = "idProcesso") Long idProcesso, @RequestParam(value = "idUnidade") Long idUnidade) {

		ResultResponseVH<UnidadeProcesso> resultResponseVH = new ResultResponseVH<UnidadeProcesso>(this.unidadeProcessoService.obterPorUnidadeEProcesso(idProcesso, idUnidade));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, Views.EnviarProcessoView.class);

		return responseBody;
	}

	@RequestMapping(value = "/getPage", method = RequestMethod.POST)
	@ResponseBody
	public ResponseBodyWrapper findGrid(@RequestBody SearchParams searchParams) {

		SearchSeven search;

		search = new SearchSeven(searchParams);

		search.setResultMode(Search.RESULT_MAP);

		SearchResult searchResult = null;
		
		String nomeGrid = UtilString.isNullOrEmpty(searchParams.getNome()) ? "" : searchParams.getNome();
		
		switch (nomeGrid) {
			case Processo.GRID_PROCESSO_NA_UNIDADE:
			    searchResult = this.unidadeProcessoService.searchAndCountPorUnidade(search);
			    break;
			default:
				searchResult = genericService.searchAndCount(search);
				break;
		}

		// DETERMINA QUAIS OS CAMPOS VAI CONSULTAR
		GridVH gridVH = new GridVH();
		gridVH.setObjects(searchResult.getResult());
		gridVH.addTotalItensTotalPages(searchParams, Long.valueOf(searchResult.getTotalCount()));

		ResultResponseVH resultResponseVH = new ResultResponseVH(gridVH);

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, Views.UnidadeProcessoListView.class);

		return responseBody;
	}

	
	@Override
	public Class<Views.EnviarProcessoView> getEditView() {

		return Views.EnviarProcessoView.class;
	}
}