Subversion Repositories Integrator Subversion

Rev

Rev 653 | Rev 660 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
357 espaco 1
package br.com.ec.domain.service.impl;
2
 
654 blopes 3
import java.util.ArrayList;
357 espaco 4
import java.util.List;
5
 
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
 
9
import br.com.ec.core.exception.NegocioException;
10
import br.com.ec.core.generic.AbstractService;
11
import br.com.ec.core.generic.GenericRepository;
12
import br.com.ec.core.util.VerificadorUtil;
13
import br.com.ec.core.validador.Validador;
648 blopes 14
import br.com.ec.domain.dto.AvaliacaoDTO;
650 blopes 15
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
16
import br.com.ec.domain.dto.AvaliacaoLojaDTO;
654 blopes 17
import br.com.ec.domain.dto.AvaliacaoLojaFuncionarioDTO;
18
import br.com.ec.domain.dto.FuncionarioDTO;
357 espaco 19
import br.com.ec.domain.model.Avaliacao;
20
import br.com.ec.domain.model.AvaliacaoProduto;
21
import br.com.ec.domain.model.Produto;
650 blopes 22
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
23
import br.com.ec.domain.service.AvaliacaoLojaService;
357 espaco 24
import br.com.ec.domain.service.AvaliacaoProdutoService;
25
import br.com.ec.domain.service.AvaliacaoService;
654 blopes 26
import br.com.ec.domain.service.FuncionarioService;
357 espaco 27
import br.com.ec.domain.service.ProdutoService;
28
import br.com.ec.repository.AvaliacaoRepository;
29
 
30
@Service
31
public class AvaliacaoServiceImpl extends AbstractService<Avaliacao> implements AvaliacaoService {
32
 
33
        private AvaliacaoRepository avaliacaoRepository;
34
 
35
        private ProdutoService produtoService;
36
        private AvaliacaoProdutoService avaliacaoProdutoService;
650 blopes 37
        private AvaliacaoLojaService avaliacaoLojaService;
38
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
654 blopes 39
        private FuncionarioService funcionarioService;
357 espaco 40
 
41
        @Autowired
654 blopes 42
        public AvaliacaoServiceImpl(Validador validador, AvaliacaoRepository avaliacaoRepository,
43
                        ProdutoService produtoService, AvaliacaoProdutoService avaliacaoProdutoService,
44
                        AvaliacaoLojaService avaliacaoLojaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService,
45
                        FuncionarioService funcionarioService) {
357 espaco 46
                super(validador);
47
                this.avaliacaoRepository = avaliacaoRepository;
48
                this.produtoService = produtoService;
49
                this.avaliacaoProdutoService = avaliacaoProdutoService;
650 blopes 50
                this.avaliacaoLojaService = avaliacaoLojaService;
51
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
654 blopes 52
                this.funcionarioService = funcionarioService;
357 espaco 53
        }
54
 
55
        @Override
56
        protected GenericRepository<Avaliacao> getRepository() {
57
                return avaliacaoRepository;
58
        }
59
 
60
        @Override
648 blopes 61
        public AvaliacaoDTO consultarAvaliacao(Long sequencialVigencia) {
62
                return avaliacaoRepository.consultarAvaliacao(sequencialVigencia);
63
        }
64
 
65
        @Override
357 espaco 66
        public List<AvaliacaoProduto> consultarProdutosPromocaoInterna(Long sequencialAvaliacao) {
67
                return avaliacaoRepository.consultarProdutosPromocaoInterna(sequencialAvaliacao);
68
        }
69
 
70
        @Override
71
        public void excluirProdutoPromocaoInterna(AvaliacaoProduto avaliacaoProduto) {
72
                avaliacaoRepository.excluirProdutoPromocaoInterna(avaliacaoProduto);
73
        }
74
 
75
        @Override
76
        public void cadastrarProdutoPromocaoInterna(Avaliacao avaliacao, String codigoProduto) {
77
                Produto produto = produtoService.consultarProdutoPorCodigo(codigoProduto);
78
                if (VerificadorUtil.estaNulo(produto)) {
79
                        throw new NegocioException("Produto não identificado");
80
                }
81
                AvaliacaoProduto avaliacaoProduto = new AvaliacaoProduto();
82
                avaliacaoProduto.setProduto(produto);
83
                avaliacaoProduto.setAvaliacao(avaliacaoRepository.consultarPorId(avaliacao));
84
                avaliacaoProdutoService.cadastrar(avaliacaoProduto);
85
        }
86
 
650 blopes 87
        @Override
88
        public AvaliacaoDTO consultarAvaliacaoCompleta(Long sequencialAvaliacao) {
654 blopes 89
                List<AvaliacaoLojaFuncionarioDTO> avaliacaoLojaFuncionarioDTOs = new ArrayList<AvaliacaoLojaFuncionarioDTO>();
650 blopes 90
                AvaliacaoDTO avaliacaoDetalhada = avaliacaoRepository.consultarAvaliacaoDetalhada(sequencialAvaliacao);
91
 
92
                // CONSULTAR AVALIAÇÕES DAS LOJAS
93
                List<AvaliacaoLojaDTO> avaliacoesLojas = avaliacaoLojaService.consultarAvaliacaoLojaDaAvaliacao(avaliacaoDetalhada.getSequencial());
94
 
95
                // CONSULTAR AVALIAÇÕES DOS FUNCIONÁRIOS
96
                for (AvaliacaoLojaDTO avaliacaoLojaDTO : avaliacoesLojas) {
654 blopes 97
                        AvaliacaoLojaFuncionarioDTO avaliacaoLojaFuncionarioDTO = new AvaliacaoLojaFuncionarioDTO();
98
                        avaliacaoLojaFuncionarioDTO.setLoja(avaliacaoLojaDTO);
653 blopes 99
 
654 blopes 100
                        List<AvaliacaoFuncionarioDTO> avaliacaoFuncionarioDTOs = avaliacaoFuncionarioService.consultarAvaliacoesFuncionarioDaLoja(avaliacaoLojaDTO.getAvaliacaoDTO().getSequencial(), avaliacaoLojaDTO.getLojaDTO().getSequencial());
101
                        // CONSULTAR DADOS COMPLETOS (FUNCIONARIO E USUARIO)
102
                        for (AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO : avaliacaoFuncionarioDTOs) {
103
                                FuncionarioDTO funcionarioDTOConsultado = funcionarioService.consultar(avaliacaoFuncionarioDTO.getSequencialDoFuncionario());
104
                                avaliacaoFuncionarioDTO.setFuncionarioDTO(funcionarioDTOConsultado);
105
                        }
106
 
107
                        avaliacaoLojaFuncionarioDTO.setFuncionarios(avaliacaoFuncionarioDTOs);
108
                        avaliacaoLojaFuncionarioDTOs.add(avaliacaoLojaFuncionarioDTO);
650 blopes 109
                }
110
 
654 blopes 111
                avaliacaoDetalhada.setAvaliacoesLojas(avaliacaoLojaFuncionarioDTOs);
112
                return avaliacaoDetalhada;
650 blopes 113
        }
114
 
357 espaco 115
        /*
116
        @Override
117
        public Avaliacao detalhar(Avaliacao avaliacao) {
118
                return avaliacaoRepository.detalhar(avaliacao);
119
        }
120
 
121
        @Override
122
        public Avaliacao consultarAvaliacaoDaVigencia(Vigencia vigencia) {
123
                return avaliacaoRepository.consultarAvaliacaoDaVigencia(vigencia);
124
        }
125
 
126
        @Override
127
        public List<Avaliacao> consultarAvaliacoesDivulgadas() {
128
                return avaliacaoRepository.consultarAvaliacoesDivulgadas();
129
        }
130
 
131
        @Override
132
        public void solicitarReavaliacao(RankingVendedorDTO rankingVendedor, String solicitacao) {
133
                StringBuilder conteudo = new StringBuilder();
134
                conteudo.append("SOLICITANTE: " + rankingVendedor.getVendedor().getNomeDaPessoa() + "\n");
135
                conteudo.append("DATA DA SOLICITAÇÃO: " + DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM/yyyy 'às' HH:mm", DataUtils.getDataAtual()) + "\n");
136
                conteudo.append("OBSERVAÇÕES: \n");
137
                conteudo.append(solicitacao);
138
 
139
                Pendencia pendencia = new Pendencia();
140
                pendencia.setDescricao("SOLICITAÇÃO DE REAVALIAÇÃO: " + rankingVendedor.getVendedor().getNomeDaPessoa());
141
                pendencia.setUsuario(usuarioService.consultarUsuarioPorPessoa(rankingVendedor.getVendedor().getPessoa()));
142
                pendencia.setData(DataUtils.getDataAtual());
143
                if (VerificadorUtil.estaNulo(rankingVendedor.getVendedor().getLoja())) {
144
                        pendencia.setLoja(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9.longValue()));
145
                } else {
146
                        pendencia.setLoja(rankingVendedor.getVendedor().getLoja());
147
                }
148
                Perfil perfilRh = new Perfil();
149
                perfilRh.setCodigo(ConstantesSEC.PERFIL_RECURSOS_HUMANOS_11);
150
                pendencia.setPerfil(perfilRh);
151
                pendenciaService.cadastrar(pendencia);
152
 
153
                new GerenciadorEmailImpl()
154
                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_SUPERVISAO)
155
                        .comAssunto("SOLICITAÇÃO DE REAVALIAÇÃO")
156
                        .comConteudo(conteudo.toString())
157
                        .enviar();
158
        }
159
 
160
        @Override
161
        public byte[] emitirRelatorioImportacaoFolhaPagamento(ServletContext contexto, Avaliacao avaliacao, Long empresa) {
162
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
163
 
164
                try {
165
                        String caminhoArquivo = "/arquivos/modelos/Relatório de Importação - Folha de Pagamento Espaço Case.xls";
166
                        InputStream arquivo = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(caminhoArquivo);
167
                        HSSFWorkbook workbook = new HSSFWorkbook(arquivo);
168
                        HSSFSheet sheet = workbook.getSheetAt(0);
169
 
170
                        Iterator rowIterator = sheet.rowIterator();
171
                        while (rowIterator.hasNext()) {
172
                                Row row = (Row) rowIterator.next();
173
                                if (row.getRowNum() < 11) {
174
                                        continue;
175
                                } else {
176
                                        Iterator cellIterator = row.cellIterator();
177
                                        Integer codigoFolha = null;
178
                                        while (cellIterator.hasNext()) {
179
                                                Boolean atualizar = true;
180
                                                Cell cell = (Cell) cellIterator.next();
181
                                                switch (cell.getColumnIndex()) {
182
                                                        case 1:
183
                                                                Integer tipoCelula = cell.getCellType();
184
                                                                if (tipoCelula.equals(Cell.CELL_TYPE_NUMERIC)) {
185
                                                                        Double codigo = cell.getNumericCellValue();
186
                                                                        codigoFolha = codigo.intValue();
187
                                                                } else {
188
                                                                        atualizar = false;
189
                                                                }
190
                                                                break;
191
                                                        case 3:
192
                                                                if (atualizar) {
193
                                                                        for (AvaliacaoFuncionario avaliacaoFunc : avaliacao.getParticipantes()) {
194
                                                                                if (VerificadorUtil.estaNulo(avaliacaoFunc.getFuncionario().getCodigoContabilidade())) {
195
                                                                                        throw new NegocioException("Participante " + avaliacaoFunc.getFuncionario().getNomeDaPessoa() + " sem código contábil cadastrado");
196
                                                                                }
197
                                                                                if (avaliacaoFunc.getFuncionario().getTipoComissionamento().equals(TipoComissionamento.parse(empresa).getValor()) &&
198
                                                                                        avaliacaoFunc.getFuncionario().getCodigoContabilidade().equals(codigoFolha)) {
199
                                                                                        Double valorComissao = avaliacaoFunc.getValorComissao();
200
                                                                                        if (VerificadorUtil.estaNulo(valorComissao)) {
201
                                                                                                throw new NegocioException("Obrigatório informar todas as comissões");
202
                                                                                        }
203
                                                                                        String valor = StringUtil.formatarValorComDoisDigitos(valorComissao.toString());
204
                                                                                        cell.setCellValue(valor.replace(".", ","));
205
                                                                                        break;
206
                                                                                }
207
                                                                        }
208
                                                                }
209
                                                                break;
210
                                                }
211
                                        }
212
                                }
213
                        }
214
 
215
                        try {
216
                        workbook.write(baos);
217
                        return baos.toByteArray();
218
                } catch (FileNotFoundException e) {
219
                        e.printStackTrace();
220
                } catch (IOException e) {
221
                        e.printStackTrace();
222
                } finally {
223
                                baos.close();
224
                                arquivo.close();
225
                                workbook.close();
226
                        }
227
                } catch (FileNotFoundException e) {
228
                        e.printStackTrace();
229
                } catch (NegocioException ne) {
230
                        throw new NegocioException(ne.getMessage());
231
                } catch (Exception e) {
232
                        e.printStackTrace();
233
                }
234
 
235
        return null;
236
        }
237
        */
238
}