package com.realnet.OpenAi.Services;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import com.realnet.utils.PortConstant;

@Service
public class SureopsService {

	@Value("${projectPath}")
	private String projectPath;

	@Autowired
	private Script_Making script_serviceMaking;

	public void createHtmlFiles(Integer projId, Map<String, String> pageHtmlMap) throws IOException {

		String prj_url = PortConstant.BACKEND_PORTAL_DOMAIN + "/token/fnd1/callingsureops/getproject/" + projId;

		// get project
		ResponseEntity<Object> prj = GET(prj_url);
		Object prj_body = prj.getBody();
		List<String> list = script_serviceMaking.callforproject(prj_body);

		String PRJ_NAME = list.get(0);

		int i = 0;

		String index = "<!DOCTYPE html>\n" + "<html>\n" + "<head>\n" + "  <title>Welcome</title>\n" + "</head>\n"
				+ "<body>\n" + "  <h1>Welcome to the Web App</h1>\n" + "  <ul>\n"
				+ "    <li><a href=\"Home.html\">Home Page</a></li>\n" + "  </ul>\n" + "</body>\n" + "</html>";

		String filename = "index";
		createFile(projId, PRJ_NAME, filename, index);

		for (Map.Entry<String, String> entry : pageHtmlMap.entrySet()) {
			String pageName = entry.getKey().trim().replaceAll("\\s+", "_"); // remove spaces from name
			String htmlContent = entry.getValue();

			createFile(projId, PRJ_NAME, pageName, htmlContent);
			i++;
			System.out.println(i + " file created ");
		}
	}

	public void createFile(Integer projId, String PRJ_NAME, String pageName, String htmlContent) throws IOException {

		String folderPath = projectPath + File.separator + projId + File.separator + "index" + File.separator
				+ PRJ_NAME;
		File file = new File(folderPath + "/" + pageName + ".html");

		// Ensure directory exists
		File parentDir = file.getParentFile();
		if (!parentDir.exists()) {

			parentDir.mkdirs();
		}

		// Create new file
		if (!file.exists()) {
			file.createNewFile();
		}

		try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
			writer.write(htmlContent);

		}

		System.out.println("✅ File created: " + file.getAbsolutePath());

	}

	public ResponseEntity<Object> GET(String get) {
		RestTemplate restTemplate = new RestTemplate();

		ResponseEntity<Object> u = restTemplate.getForEntity(get, Object.class);

		return u;

	}

}
