udistrital / Cumplidos_y_certificaciones_documentacion

0 stars 0 forks source link

Creación de función para obtener las dependencias de un supervisor y ordenador #8

Closed JuanCamiloMartinezLopez closed 6 months ago

JuanCamiloMartinezLopez commented 7 months ago

Se requiere realizar un endpoint que dado el número del documento de un supervisor/ordenador retorné la lista las dependencias (nombre y código) a las que se encuentra asociado, así como los nombres y códigos de las dependencias que cambiaron si corresponde, ej: (la OATI, oficina asesora de tecnología e información de código DEP626 anteriormente era la OAS, oficina asesora de sistemas de código DEP12).

Sub Tareas

Criterios de aceptación

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

stevencol commented 6 months ago

Se modifica función originalmente planea para utilizar funciones ya implementadas para la obtención de xml y se optiene metodo que tenorna lista de Dependecias del rol supervisor

func ObtenerDependencias(documento string) (dependencias map[string]interface{}, errorOutput interface{}) {

    defer func() {

        if err := recover(); err != nil {
            errorOutput = map[string]interface{}{
                "Success": true,
                "Status":  502,
                "Message": "Error al consultar las dependencias: " + documento,
                "Error":   err,
            }
            panic(errorOutput)
        }
    }()
    dependenciasList := make([]models.DependenciaSimple, 0)
    var respuesta map[string]interface{}
    if response, err := getJsonWSO2Test(beego.AppConfig.String("UrlAdministrativaJBPM")+"/dependencias_supervisor/"+documento, &respuesta); (err == nil) && (response == 200) {

        if respuesta != nil {

            if dependenciasMap, ok := respuesta["dependencias"].(map[string]interface{}); ok {

                for _, depList := range dependenciasMap {

                    if list, ok := depList.([]interface{}); ok {

                        for _, dep := range list {

                            depMap := dep.(map[string]interface{})
                            dependencia := models.DependenciaSimple{

                                Codigo: depMap["codigo"].(string),
                                Nombre: depMap["nombre"].(string),
                            }

                            dependenciasList = append(dependenciasList, dependencia)
                            fmt.Println(dependenciasList)
                        }

                    }
                }
            }
        }
    }
    dependencias = make(map[string]interface{})
    dependencias["Dependencias Supervisor"] = dependenciasList
    if dependencias != nil {
        return dependencias, nil
    }

    return nil, errorOutput
}

Resultado de la solicitud

validacion Se procede a realizar para el rol Ordenador

stevencol commented 6 months ago

Se crea helper dependencias.go para relizar consultas de dependencias segun el rol, eliminado código de petición en histórico_ cumplidos.go, quedadon de la siguente manera


import (
    "github.com/astaxie/beego"
    "github.com/udistrital/cumplidos_mid/models"
)

func GetDependenciasSupervisor(documento string) (dependenciasList []models.DependenciaSimple, errorOutput interface{}) {
    defer func() {

        if err := recover(); err != nil {
            errorOutput = map[string]interface{}{
                "Success": true,
                "Status":  502,
                "Message": "Error al consultar las dependencias: " + documento,
                "Error":   err,
            }
            panic(errorOutput)
        }
    }()
    var respuesta map[string]interface{}
    if response, err := getJsonWSO2Test(beego.AppConfig.String("UrlAdministrativaJBPM")+"/dependencias_supervisor/"+documento, &respuesta); (err == nil) && (response == 200) {

        if respuesta != nil {

            if dependenciasMap, ok := respuesta["dependencias"].(map[string]interface{}); ok {

                for _, depList := range dependenciasMap {

                    if list, ok := depList.([]interface{}); ok {

                        for _, dep := range list {

                            depMap := dep.(map[string]interface{})
                            dependencia := models.DependenciaSimple{

                                Codigo: depMap["codigo"].(string),
                                Nombre: depMap["nombre"].(string),
                            }
                            dependenciasList = append(dependenciasList, dependencia)
                        }

                    }
                }
            }
        }
    } else {
        return nil, errorOutput
    }
    if dependenciasList != nil {
        return dependenciasList, nil
    }

    return nil, nil
}

func GetDependenciasOrdenadr(documento string) (dependenciasList []models.DependenciaSimple, errorOutput interface{}) {
    defer func() {

        if err := recover(); err != nil {
            errorOutput = map[string]interface{}{
                "Success": true,
                "Status":  502,
                "Message": "Error al consultar las dependencias: " + documento,
                "Error":   err,
            }
            panic(errorOutput)
        }
    }()
    var respuesta map[string]interface{}
    if response, err := getJsonWSO2Test(beego.AppConfig.String("UrlAdministrativaJBPM")+"/dependencias_sic/"+documento, &respuesta); (err == nil) && (response == 200) {

        if respuesta != nil {

            if dependenciasMap, ok := respuesta["DependenciasSic"].(map[string]interface{}); ok {

                for _, depList := range dependenciasMap {

                    if list, ok := depList.([]interface{}); ok {

                        for _, dep := range list {

                            depMap := dep.(map[string]interface{})
                            dependencia := models.DependenciaSimple{

                                Codigo: depMap["ESFCODIGODEP"].(string),
                                Nombre: depMap["ESFDEPENCARGADA"].(string),
                            }
                            dependenciasList = append(dependenciasList, dependencia)
                        }

                    }
                }
            }
        }
    } else {
        return nil, errorOutput
    }
    if dependenciasList != nil {
        return dependenciasList, nil
    }

    return nil, nil
}

y el helper:

package helpers

func ObtenerDependencias(documento string) (dependencias map[string]interface{}, errorOutput interface{}) {

    defer func() {

        if err := recover(); err != nil {
            errorOutput = map[string]interface{}{
                "Success": true,
                "Status":  502,
                "Message": "Error al consultar las dependencias: " + documento,
                "Error":   err,
            }
            panic(errorOutput)
        }
    }()

    dependencias = make(map[string]interface{})
    dependencias["Dependencias Supervisor"], errorOutput = GetDependenciasSupervisor(documento)
    dependencias["Dependencias Ordenador"], errorOutput = GetDependenciasOrdenadr(documento)
    if errorOutput != nil {
        return dependencias, nil
    }

    return nil, errorOutput
}
JuanCamiloMartinezLopez commented 6 months ago

@stevencol buen trabajo