package herit.plm.dscodificatorbackend.controllers;

import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import herit.plm.dscodificatorbackend.dto.ClassifyIssueRequest;
import herit.plm.dscodificatorbackend.dto.ClassifyIssueResponse;
import herit.plm.dscodificatorbackend.dto.UpdateIssueRequest;
import herit.plm.dscodificatorbackend.dto.UpdateIssueResponse;
import herit.plm.dscodificatorbackend.services.IteropService;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.PathVariable;

@RestController
@RequestMapping("/api")
class IteropController {
    @Autowired
    private IteropService iteropService;

    @PostMapping("/classifyIssue")
    public ClassifyIssueResponse manageIssue(@RequestBody ClassifyIssueRequest request) {
        String issueId = request.issueId();
        String [] imballi = request.imballi();
        return null;
    }
    
    @PostMapping("/issue/addResolvedBy")
    public UpdateIssueResponse addResolvedBy(@RequestBody UpdateIssueRequest request){
        String resolvedBy[] = request.resolvedBy();
        String context = request.securityContext();
        String issueId = request.issueId();
        String cestamp = request.cestamp();
        
        try {
            UpdateIssueResponse response = iteropService.updateIssue(issueId, resolvedBy, cestamp, context );
            return response;
        } catch (URISyntaxException ex) {
            Logger.getLogger(IteropController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(IteropController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            Logger.getLogger(IteropController.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return null;
    }
  

}
