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.ResumenBiaContentSection9;
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.ResumenBiaSection9;
import com.dacrt.SBIABackend.dto.ResumenBiaTimeTableDto;
import com.dacrt.SBIABackend.dto.StatusDto2;
import com.dacrt.SBIABackend.dto.TypeLevelStringDto;
import com.dacrt.SBIABackend.security.dto.RespuestaDto;

@Service
public class BiaresumeproSection9Service {
	Logger logger = LoggerFactory.getLogger(BiaresumeproSection9Service.class);
	@PersistenceContext
	private EntityManager entityManager;
	
	
	 public ResumenBiaSection9 getResumeBiaRecordVit(int idcampana,int idunidad,int idprocesos) {
			ResumenBiaContentSection9 detalleResumenBiaContentSection9 = new ResumenBiaContentSection9();
			TypeLevelStringDto detalleLabelDto= new TypeLevelStringDto();
			TypeLevelStringDto detalleLabelDto2 = new TypeLevelStringDto();
			ResumenBiaSection9 detalleResumenBiaSection9 = new ResumenBiaSection9();
			List<TypeLevelStringDto> listadoLabelDto=new ArrayList();
			RespuestaDto respuesta = new RespuestaDto("", false);
			HttpStatus estatus = HttpStatus.FORBIDDEN;
	   											
		 try {	
		 String Sentenciasql = " SELECT "
			 		+ "   pr1.descr,er.name "
			 		+ " FROM "
			 		+ "    main.evalprocesses ep "
			 		+ "    INNER JOIN main.unitprocesses up ON ep.unitprocessid = up.id "
			 		+ "	INNER JOIN main.campaignunits cu on ep.campaignunitid = cu.id "
			 		+ "	INNER JOIN main.evalprocrecords er on ep.id = er.evalprocessid "
			 		+ "	LEFT JOIN ( SELECT elemento ->> 'dsc' AS descr,elemento ->> 'value' AS valor  "
			 		+ "		 			FROM main.params p,   "
			 		+ "		 			jsonb_array_elements(CAST(p.value AS jsonb)) AS elemento WHERE p.paramname = 'RECORD_TYPE')  "
			 		+ "		 			 pr1 ON er.evalproctypepar = pr1.valor "
			 		+ " WHERE "
					+ "    up.unitid =  " + idunidad 
					+ " AND up.processid =  " + idprocesos 
					+ " AND cu.campaingid = " + idcampana + " and ep.impactst = 1 and recordst = 1";
			
		

		
			//StatusDto2 detalleRTO = new StatusDto2();
			Query query;
			query = entityManager.createNativeQuery(Sentenciasql);
			List<Object[]> listacompleta = query.getResultList();
			long cantidad=(long)query.getResultList().size();
			
			if (cantidad>0) {
				for (Object[] reg : listacompleta) {
					detalleLabelDto= new TypeLevelStringDto();
					
					detalleLabelDto.setType((String) reg[0]);
					detalleLabelDto.setLabel((String) reg[1]);
					listadoLabelDto.add(detalleLabelDto);
					
				}
				detalleResumenBiaContentSection9.setRecords(listadoLabelDto);
			} else {
				detalleResumenBiaContentSection9.setRecords(new ArrayList<>());
			}			
							
			detalleResumenBiaSection9.setTitle("Registros Vitales");
			detalleResumenBiaSection9.setContent(detalleResumenBiaContentSection9);
			
		
						
			return detalleResumenBiaSection9;
	 }catch (Exception e) {
			// Manejo de excepciones
			respuesta = new RespuestaDto("Error interno del servidor", false);
			estatus = HttpStatus.INTERNAL_SERVER_ERROR;
			return detalleResumenBiaSection9;
		} finally {
			if (entityManager != null && entityManager.isOpen()) {
				entityManager.close();
			}
		}		 	 	    	 
					
	 	}
}
