Skip to content

Commit

Permalink
Merge pull request #196 from markalbrand56/mark
Browse files Browse the repository at this point in the history
Public details
  • Loading branch information
markalbrand56 authored Oct 9, 2023
2 parents 79ca2dc + 167bf6d commit 7c27a48
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 45 deletions.
34 changes: 26 additions & 8 deletions backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,33 @@ Obtener los detalles públicos de un usuario, dado su correo
``` json
{
"status": 200,
"message": "User found",
"message": "Student found",
"data": {
"empresa": {
"id_empresa": "prueba@prueba",
"nombre": "pruebaEmpresa",
"foto": "foto",
"detalles": "empresa de prueba",
"correo": "prueba@prueba",
"telefono": "12344433"
"student": {
"correo": "estudiante@prueba.com",
"nombre": "Estudiante Actualizado",
"apellido": "Prueba",
"nacimiento": "2002-02-02T00:00:00Z",
"carrera": 1,
"semestre": 4,
"cv": "",
"foto": "",
"universidad": "Universidad Del Valle de Guatemala"
}
}
}
```

``` json
{
"status": 200,
"message": "Enterprise found",
"data": {
"company": {
"correo": "empresa@prueba.com",
"nombre": "Empresa de Prueba",
"foto": "",
"detalles": "Detalles de Prueba"
}
}
}
Expand Down
116 changes: 79 additions & 37 deletions backend/controllers/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/gin-gonic/gin"
"golang.org/x/crypto/bcrypt"
"net/http"
"time"
)

type RegisterInput struct {
Expand Down Expand Up @@ -286,6 +287,25 @@ func CurrentUser(c *gin.Context) {
)
}

type PublicDetailsStudent struct {
Correo string `json:"correo"`
Nombre string `json:"nombre"`
Apellido string `json:"apellido"`
Nacimiento time.Time `json:"nacimiento"`
Carrera int `json:"carrera"`
Semestre int `json:"semestre"`
CV string `json:"cv"`
Foto string `json:"foto"`
Universidad string `json:"universidad"`
}

type PublicDetailsEnterprise struct {
Correo string `json:"correo"`
Nombre string `json:"nombre"`
Foto string `json:"foto"`
Detalles string `json:"detalles"`
}

type UserDetailsInput struct {
Correo string `json:"correo"`
}
Expand All @@ -294,63 +314,85 @@ func GetUserDetails(c *gin.Context) {
var input UserDetailsInput

if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(400, responses.StandardResponse{Status: 400, Message: "Invalid input", Data: nil})
c.JSON(http.StatusBadRequest, responses.StandardResponse{
Status: http.StatusBadRequest,
Message: "Invalid input. " + err.Error(),
Data: nil,
})
return
}

var estudiante models.Estudiante
var empresa models.Empresa
var administrador models.Administrador

err := configs.DB.Where("correo = ?", input.Correo).First(&estudiante).Error
if err == nil {
c.JSON(http.StatusOK, responses.StandardResponse{
Status: 200,
Message: "User found",
Data: map[string]interface{}{
"estudiante": estudiante,
},
userType, err := RoleFromUser(models.Usuario{Usuario: input.Correo})

if err != nil {
c.JSON(http.StatusBadRequest, responses.StandardResponse{
Status: http.StatusBadRequest,
Message: "User not found. " + err.Error(),
Data: nil,
})
return
}

err = configs.DB.Where("correo = ?", input.Correo).First(&empresa).Error
switch userType {
case "student":
err = configs.DB.Where("id_estudiante = ?", input.Correo).First(&estudiante).Error
if err != nil {
c.JSON(http.StatusBadRequest, responses.StandardResponse{
Status: http.StatusBadRequest,
Message: "Student not found. " + err.Error(),
Data: nil,
})
return
}

if err == nil {
c.JSON(http.StatusOK, responses.StandardResponse{
Status: 200,
Message: "User found",
Status: http.StatusOK,
Message: "Student found",
Data: map[string]interface{}{
"empresa": empresa,
"student": PublicDetailsStudent{
Correo: estudiante.Correo,
Nombre: estudiante.Nombre,
Apellido: estudiante.Apellido,
Nacimiento: estudiante.Nacimiento,
Carrera: estudiante.Carrera,
Semestre: estudiante.Semestre,
CV: estudiante.CV,
Foto: estudiante.Foto,
Universidad: estudiante.Universidad,
},
},
})
return
}

err = configs.DB.Where("correo = ?", input.Correo).First(&administrador).Error
case "enterprise":
err = configs.DB.Where("id_empresa = ?", input.Correo).First(&empresa).Error
if err != nil {
c.JSON(http.StatusBadRequest, responses.StandardResponse{
Status: http.StatusBadRequest,
Message: "Enterprise not found. " + err.Error(),
Data: nil,
})
return
}

if err == nil {
c.JSON(http.StatusUnauthorized, responses.StandardResponse{
Status: 401,
Message: "Access denied",
Data: nil,
c.JSON(http.StatusOK, responses.StandardResponse{
Status: http.StatusOK,
Message: "Enterprise found",
Data: map[string]interface{}{
"company": PublicDetailsEnterprise{
Correo: empresa.Correo,
Nombre: empresa.Nombre,
Foto: empresa.Foto,
Detalles: empresa.Detalles,
},
},
})
return
}

if err != nil {
default:
c.JSON(http.StatusBadRequest, responses.StandardResponse{
Status: 400,
Status: http.StatusBadRequest,
Message: "User not found. " + err.Error(),
Data: nil,
})
return
}

c.JSON(http.StatusOK, responses.StandardResponse{
Status: 400,
Message: "User not found",
Data: nil,
},
)
}

0 comments on commit 7c27a48

Please sign in to comment.