package com.app.CompagnyController;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.app.CompagnyServiceImpl.ApiTokenPdf;
import com.app.CompagnyServiceImpl.NeolianeServiceImpl;
import com.app.CompagnyServiceImpl.SpvieServiceImpl;
import com.app.Dto.AffaireDto;
import com.app.Repository.AffaireRepository;
import com.app.Repository.SouscriptionRepository;
import com.app.ServicesImpl.AffaireImpl;
import com.app.ServicesImpl.SouscriptionServicesImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

@CrossOrigin
@RestController
@RequestMapping("/api/v1/general")
public class GeneralController {

	@Autowired
	private NeolianeServiceImpl NeolianeService;
	@Autowired
	private SpvieServiceImpl SpvieService;
	@Autowired
	private AffaireImpl AffaireService;
	@Autowired
	private SouscriptionServicesImpl SouscriptionService;
	@Autowired
	private AffaireRepository affaireRepository;

	@Autowired
	private SouscriptionRepository souscriptionRepository;

	@Autowired
	private ApiTokenPdf serviceToken;

	@PostMapping("/tarifs")

	public String getNeoSpvie(@RequestBody AffaireDto dtp) throws JsonProcessingException
	{
		 System.out.println("data General " +dtp);
		 //String  genNeoliane = NeolianeService.price(dtp);
		 RestTemplate restTemplate = new RestTemplate();
		 String token = serviceToken.getToken();
		 String aff = dtp.toString();
		 ObjectMapper Obj = new ObjectMapper();
		 String json = Obj.writeValueAsString(dtp);
		 System.out.println("affaff json " +json);
		// String url2 = "http://127.0.0.1:8000/api/GetAllTarfis";
		 String url2 = "https://compara.slc-assurances.fr/api/GetAllTarfis";
		 HttpHeaders headers2 = new HttpHeaders();
		 headers2.setContentType(MediaType.APPLICATION_JSON);
		 headers2.set("Authorization", "Bearer " +token );
	     HttpEntity<String> entity2 = new HttpEntity<>(json,headers2);
		 String answer2 = restTemplate.postForObject(url2, entity2, String.class);
		 System.out.println("results" +answer2);
	       // return "["+genNeoliane+"]";
         return answer2;
	}


	@PostMapping("/Alltarifs")
	public String getAllTarifs(@RequestBody AffaireDto dtp) throws JsonProcessingException
	{
		 System.out.println("data General " +dtp);
		 //String  genNeoliane = NeolianeService.price(dtp);
		 RestTemplate restTemplate = new RestTemplate();
		 String token = serviceToken.getToken();
		 String aff = dtp.toString();
		 ObjectMapper Obj = new ObjectMapper();
		 String json = Obj.writeValueAsString(dtp);
		 System.out.println("affaff json " +json);
		// String url2 = "http://127.0.0.1:8000/api/GetAllTarfis";
		 String url2 = "https://compara.slc-assurances.fr/api/GetAllTarifsCompagnie";
		 HttpHeaders headers2 = new HttpHeaders();
		 headers2.setContentType(MediaType.APPLICATION_JSON);
		 headers2.set("Authorization", "Bearer " +token );
	     HttpEntity<String> entity2 = new HttpEntity<>(json,headers2);
		 String answer2 = restTemplate.postForObject(url2, entity2, String.class);
		 System.out.println("results" +answer2);
	        //return "true";
         return answer2;
	}

	/*@PostMapping("/sendHubspot")
	public String sendHubspot(@RequestBody AssureDto ass)
    {

		String email = ass.getEmail();

        String requestData = "{\"filterGroups\": [{\"filters\": [{\"value\": \""+email+"\", \"propertyName\": \"email\", \"operator\": \"EQ\"}]}], \"sorts\":[\"ASC\"],\"properties\":[\"id\"], \"limit\":\"100\", \"after\":\"0\"}";

		System.out.println("data General" +requestData);
		RestTemplate restTemplate = new RestTemplate();
		String hapikeyy = "pat-na1-bfbe7c0a-2f5b-47d6-9915-32163b95cf60";
       	String endpoint1 = "https://api.hubapi.com/crm/v3/objects/contacts/search";
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_JSON);
		headers.set("Authorization", "Bearer " +hapikeyy );
	    HttpEntity<String> entity = new HttpEntity<>(requestData,headers);
		String answer = restTemplate.postForObject(endpoint1, entity, String.class);

		JsonElement jsonElement = JsonParser.parseString(answer);
		JsonObject jsonObject = jsonElement.getAsJsonObject();
		System.out.println("results" +jsonObject.get("total"));
        return "true";
    }
	*/
	/*
	 *
	 *
	 *
	 * @PostMapping("/neoSpvie/{id}")
	public int getNeoSpvie(@PathVariable Long id)
	{
		System.out.println("idSouscription General" +id);
		List<Affaire> affa;
		  affa=affaireRepository.findBySouscriptionId(id);
		//Long sous = SouscriptionService.recupererIdAffaireParIdSouscription(id);

		 System.out.println("idAffaire General 222" +affa);

		//AffaireDto affaire = AffaireService.findById(id);
		//String genSpvie=SpvieService.getpriceTest(dtp);
		//String  SpvieService.getpriceTest(dtp);
		//String  genNeoliane = NeolianeService.price(dtp);
		String  genNeoliane = NeolianeService.priceAffaire(id);
        //return "["+genNeoliane+"]";
		return affa.size();
	}
	 */
}