package com.sc.sicanet.migracion_sicanet.controller;

import com.sc.sicanet.migracion_sicanet.DTO.PrestamosSolicitudesDTO;
import com.sc.sicanet.migracion_sicanet.response.ErrorResponse;
import com.sc.sicanet.migracion_sicanet.response.StandardResponse;
import com.sc.sicanet.migracion_sicanet.service.MigracionPrestamosSolicitudesServiceImpl;
import com.sc.sicanet.migracion_sicanet.service.MigracionPrestamosSolicitudesService;
import com.sc.sicanet.migracion_sicanet.service.Validaciones;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/solicitudes-prestamos")
public class PrestamosSolicitudesController {

    final private MigracionPrestamosSolicitudesService migracionPrestamosSolicitudService;


    public PrestamosSolicitudesController(MigracionPrestamosSolicitudesService migracionPrestamosSolicitudService/*, Validaciones validaciones*/) {
        this.migracionPrestamosSolicitudService = migracionPrestamosSolicitudService;
    }

    @Autowired
    private MigracionPrestamosSolicitudesService migracionPrestamosSolicitudesService;

    @PostMapping()
    public ResponseEntity<?> migrarSolicitudes(@Valid @RequestBody()PrestamosSolicitudesDTO prestamosSolicitudesDTO, Errors errors) {
        if (errors.hasErrors()) {
            Map<String, String> errores = new HashMap<>();
            errors.getFieldErrors().forEach(error -> errores.put(error.getField(), error.getDefaultMessage()));
            return ResponseEntity.badRequest().body(errores);
        }
        Map<String, String> resultado = migracionPrestamosSolicitudesService.migrarSolicitud(prestamosSolicitudesDTO);
        return resultado.get("code").equals(HttpStatus.BAD_REQUEST) ? ResponseEntity.badRequest().body(resultado) : ResponseEntity.ok(resultado);
    }
}