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;
/**
*
*
*
*
*
* Company: Central IT - Governança Corporativa -
*
*
*
* Title:
*
*
*
* Description:
*
*
*
* Iniciativa(s): NUMERO_INICIATIVA
*
*
*
* Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO
*
*
* @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 {
/** 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 list = this.unidadeProcessoService.findByIdProcesso(idProcesso);
ResponseBodyWrapper responseBody = new ResponseBodyWrapper(list, Views.EnviarProcessoView.class);
return responseBody;
}
/**
* Iniciativa(s): NUMERO_INICIATIVA
*
* Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO
*
* 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 list = this.unidadeProcessoService.findByPorIdProcessoEmExecucao(idProcesso);
ResponseBodyWrapper responseBody = new ResponseBodyWrapper(list, Views.EnviarProcessoView.class);
return responseBody;
}
/**
*
* Iniciativa(s): NUMERO_INICIATIVA
*
*
*
* Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO
*
*
* 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 resultResponseVH = new ResultResponseVH(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 getEditView() {
return Views.EnviarProcessoView.class;
}
}