Membre_id doit exister au bottin pour transaction #10
1 changed files with 40 additions and 0 deletions
|
@ -7,7 +7,9 @@ import (
|
||||||
"git.agecem.com/agecem/bottin-agenda/data"
|
"git.agecem.com/agecem/bottin-agenda/data"
|
||||||
"git.agecem.com/agecem/bottin-agenda/models"
|
"git.agecem.com/agecem/bottin-agenda/models"
|
||||||
"git.agecem.com/agecem/bottin-agenda/responses"
|
"git.agecem.com/agecem/bottin-agenda/responses"
|
||||||
|
bottindata "git.agecem.com/agecem/bottin/v5/data"
|
||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetTransactions lists transactions on GET /v2/transactions http/1.1
|
// GetTransactions lists transactions on GET /v2/transactions http/1.1
|
||||||
|
@ -73,6 +75,44 @@ func PostTransactions(c echo.Context) error {
|
||||||
return c.JSON(statusCode, response)
|
return c.JSON(statusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bottinApiKey := viper.GetString("bottin.api.key")
|
||||||
|
bottinApiHost := viper.GetString("bottin.api.host")
|
||||||
|
bottinApiProtocol := viper.GetString("bottin.api.protocol")
|
||||||
|
bottinApiPort := viper.GetInt("bottin.api.port")
|
||||||
|
|
||||||
|
// Using bottin's API client
|
||||||
|
bottinApiClient := bottindata.NewApiClient(
|
||||||
|
bottinApiKey,
|
||||||
|
bottinApiHost,
|
||||||
|
bottinApiProtocol,
|
||||||
|
bottinApiPort,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Check if membre_id exists according to bottin
|
||||||
|
for _, transaction := range transactions {
|
||||||
|
if transaction.MembreID == "" {
|
||||||
|
response.Message = fmt.Sprintf("Cannot insert transaction without a membre_id")
|
||||||
|
statusCode = http.StatusBadRequest
|
||||||
|
|
||||||
|
return c.JSON(statusCode, response)
|
||||||
|
}
|
||||||
|
membre, err := bottinApiClient.GetMembre(transaction.MembreID)
|
||||||
|
if err != nil {
|
||||||
|
response.Message = fmt.Sprintf("Error during bottinApiClient.GetMembre(): %s", err)
|
||||||
|
|
||||||
|
return c.JSON(statusCode, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
if membre.ID == "" {
|
||||||
|
response.Message = fmt.Sprintf("Cannot insert transaction for non-existent membre %s", membre.ID)
|
||||||
|
statusCode = http.StatusNotFound
|
||||||
|
|
||||||
|
return c.JSON(statusCode, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// membre exists, can keep going
|
||||||
|
}
|
||||||
|
|
||||||
// Check for already-existing transactions
|
// Check for already-existing transactions
|
||||||
for _, transaction := range transactions {
|
for _, transaction := range transactions {
|
||||||
transaction, err := client.GetTransaction(transaction.MembreID, transaction.IsPerpetual)
|
transaction, err := client.GetTransaction(transaction.MembreID, transaction.IsPerpetual)
|
||||||
|
|
Loading…
Reference in a new issue