package com.dacrt.SBIABackend.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;

import com.dacrt.SBIABackend.dto.Channelresume2Dto;
import com.dacrt.SBIABackend.dto.ChannelresumeDto;
import com.dacrt.SBIABackend.dto.ContinuitySection2Dto;
import com.dacrt.SBIABackend.dto.LabeStringlValueIntDto;
import com.dacrt.SBIABackend.dto.LabelDto;
import com.dacrt.SBIABackend.dto.LabelItemDtoReport;
import com.dacrt.SBIABackend.dto.LabelValueDtoReport;
import com.dacrt.SBIABackend.dto.LabelValueStringDto;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection1;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection2;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection5;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection6;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection7;
import com.dacrt.SBIABackend.dto.ResumenBiaContentSection8;
import com.dacrt.SBIABackend.dto.ResumenBiaSection1;
import com.dacrt.SBIABackend.dto.ResumenBiaSection2;
import com.dacrt.SBIABackend.dto.ResumenBiaSection5;
import com.dacrt.SBIABackend.dto.ResumenBiaSection6;
import com.dacrt.SBIABackend.dto.ResumenBiaSection7;
import com.dacrt.SBIABackend.dto.ResumenBiaSection8;
import com.dacrt.SBIABackend.dto.ResumenBiaTimeTableDto;
import com.dacrt.SBIABackend.dto.StatusDto2;
import com.dacrt.SBIABackend.security.dto.RespuestaDto;

@Service
public class BiaresumeproSection8Service {
	Logger logger = LoggerFactory.getLogger(BiaresumeproSection8Service.class);
	@PersistenceContext
	private EntityManager entityManager;

	public ResumenBiaSection8 getResumeBiaRecord(int idcampana, int idunidad, int idprocesos) {
		Query query;

		ResumenBiaContentSection8 detalleResumenBiaContentSection8 = new ResumenBiaContentSection8();
		LabelDto detalleLabelDto = new LabelDto();
		LabelDto detalleLabelDto2 = new LabelDto();
		ResumenBiaSection8 detalleResumenBiaSection8 = new ResumenBiaSection8();
		List<LabelDto> listadoLabelDto = new ArrayList();
		long cantidad;
		RespuestaDto respuesta = new RespuestaDto("", false);
		HttpStatus estatus = HttpStatus.FORBIDDEN;
		
		try {

			String SentenciaBase = "SELECT  	 1 as n, a.name " + "FROM         main.regreports a     "
					+ "INNER JOIN   main.evalprocreports ea ON ea.regreportid = a.id     "
					+ "INNER JOIN   main.evalprocimpacts ei ON ea.evalprocessid = ei.evalprocessid  "
					+ "INNER JOIN   main.evalprocesses ep ON ea.evalprocessid = ep.id "
					+ "INNER JOIN   main.campaignunits CU ON EP.campaignunitid = CU.id  "
					+ "       AND   CU.campaingid= " + idcampana + "	      AND   CU.unitid= " + idunidad
					+ "INNER JOIN   main.unitprocesses up ON ep.unitprocessid = up.id  " + "       AND   up.unitid= "
					+ idunidad + "	      AND   up.processid= " + idprocesos + "     WHERE   a.status = 1  "
					+ "       AND   ep.impactst = 1  " + "	      AND   ep.reportst = 1     " + "  GROUP BY   a.name";

			query = entityManager.createNativeQuery(SentenciaBase);
			List<Object[]> listacompleta = query.getResultList();
			cantidad = (long) query.getResultList().size();

			if (cantidad > 0) {
				for (Object[] reg : listacompleta) {
					detalleLabelDto.setLabel((String) reg[1]);
					listadoLabelDto.add(detalleLabelDto);
					detalleLabelDto = new LabelDto();
				}
			}

			detalleResumenBiaContentSection8.setReports(listadoLabelDto);

			detalleResumenBiaSection8.setTitle("Reportería Regulatoria");
			detalleResumenBiaSection8.setContent(detalleResumenBiaContentSection8);

			respuesta = new RespuestaDto("", false);
			estatus = HttpStatus.FORBIDDEN;

			return detalleResumenBiaSection8;

		} catch (Exception e) {
			// Manejo de excepciones
			respuesta = new RespuestaDto("Error interno del servidor", false);
			estatus = HttpStatus.INTERNAL_SERVER_ERROR;
			return detalleResumenBiaSection8;
		} finally {
			if (entityManager != null && entityManager.isOpen()) {
				entityManager.close();
			}
		}
	}
}
