Debug booking

This commit is contained in:
mr
2024-08-26 11:18:26 +02:00
parent ad46694516
commit 5b320bb409
13 changed files with 158 additions and 49 deletions

View File

@@ -1,9 +1,9 @@
package controllers
import (
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
"github.com/nats-io/nats.go"
)
// VersionController operations for Version
@@ -30,9 +30,7 @@ func (c *VersionController) Status() {
state, code, err := api.GetState()
if state == tools.ALIVE {
state, _, err = api.CheckRemoteAPIs([]string{
"http://" + oclib.LibDataEnum(oclib.BOOKING).String() + oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)),
})
_, err = nats.Connect(tools.GetConfig().NATSUrl)
}
if err != nil {
errStr = err.Error()

View File

@@ -3,11 +3,10 @@ package controllers
import (
"encoding/json"
"errors"
"time"
"fmt"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/models/utils"
w "cloud.o-forge.io/core/oc-lib/models/workflow"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
)
@@ -41,6 +40,9 @@ func (o *WorkflowController) Put() {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/",
tools.DELETE: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/:id",
},
utils.PEER.String(): {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.PEER)) + "/oc",
},
}
// store and return Id or post with UUID
var res map[string]interface{}
@@ -63,6 +65,9 @@ func (o *WorkflowController) Post() {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/",
tools.DELETE: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/:id",
},
utils.PEER.String(): {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.PEER)) + "/oc",
},
}
var res map[string]interface{}
json.Unmarshal(o.Ctx.Input.CopyBody(10000), &res)
@@ -119,6 +124,9 @@ func (o *WorkflowController) Delete() {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/",
tools.DELETE: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/:id",
},
utils.PEER.String(): {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.PEER)) + "/oc",
},
}
id := o.Ctx.Input.Param(":id")
caller := tools.NewHTTPCaller(paths)
@@ -128,15 +136,15 @@ func (o *WorkflowController) Delete() {
// @Title Check
// @Description check booking
// @Param start_date path string "the booking start date" format "2006-01-02T15:04:05"
// @Param end_date path string "the booking end date" format "2006-01-02T15:04:05"
// @Param id path string "the booking workflow id"
// @Param start_date path string "the booking start date format "2006-01-02T15:04:05"
// @Param end_date path string "the booking end date" format 2006-01-02T15:04:05"
// @Success 200 {object} models.object
// @router /check/:start_date/:end_date [get]
// @router /check/:id/:start_date/:end_date [get]
func (o *WorkflowController) Check() {
// store and return Id or post with UUID
date, err := time.Parse("2006-01-02T15:04:05", o.Ctx.Input.Param(":start_date"))
date2, err2 := time.Parse("2006-01-02T15:04:05", o.Ctx.Input.Param(":end_date"))
if err != nil || err2 != nil {
id := o.Ctx.Input.Param(":id")
if id == "" {
o.Data["json"] = map[string]interface{}{
"data": map[string]interface{}{
"is_available": false,
@@ -145,20 +153,34 @@ func (o *WorkflowController) Check() {
"error": errors.New("invalid date format"),
}
} else {
workflow := &w.Workflow{}
workflow.Schedule = &w.WorkflowSchedule{Start: &date, End: &date2}
isAvailable, err := workflow.CheckBooking(oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/check/:start_date/:end_date")
code := 200
if !isAvailable {
code = 409
}
o.Data["json"] = map[string]interface{}{
"data": map[string]interface{}{
"is_available": isAvailable,
},
"code": code,
"error": err,
fmt.Println("id", id)
res := oclib.LoadOne(oclib.LibDataEnum(oclib.WORKFLOW), id)
if res.Code == 200 {
workflow := res.ToWorkflow()
caller := tools.NewHTTPCaller(map[string]map[tools.METHOD]string{
utils.PEER.String(): {
tools.POST: oclib.GetPath(oclib.LibDataEnum(oclib.PEER)) + "/oc",
},
utils.BOOKING.String(): {
tools.GET: oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING)) + "/oc/booking/check/:id/" + o.Ctx.Input.Param(":start_date") + "/" + o.Ctx.Input.Param(":end_date"),
},
})
isAvailable, err := workflow.CheckBooking(caller)
code := 200
if !isAvailable {
code = 409
}
o.Data["json"] = map[string]interface{}{
"data": map[string]interface{}{
"is_available": isAvailable,
},
"code": code,
"error": err,
}
} else {
o.Data["json"] = res
}
}
o.ServeJSON()
}