Add BookingsCreateDiag
This commit is contained in:
parent
1162f2faf2
commit
1f265ba4bd
|
@ -201,6 +201,67 @@ func (h *ApplicationHandler) VehiclesCreateDiag(w http.ResponseWriter, r *http.R
|
||||||
h.Renderer.VehiclesCreateDiag(w, r, vehicleID)
|
h.Renderer.VehiclesCreateDiag(w, r, vehicleID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *ApplicationHandler) BookingsCreateDiag(w http.ResponseWriter, r *http.Request) {
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
bookingID := vars["bookingid"]
|
||||||
|
|
||||||
|
if h.services == nil || (h.services.GRPC == services.GRPCServices{}) || h.services.GRPC.Diags == nil {
|
||||||
|
log.Error().Msg("Diags service is not initialized")
|
||||||
|
http.Error(w, "Internal server error", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if r.Method == http.MethodPost {
|
||||||
|
g := r.Context().Value(identification.GroupKey)
|
||||||
|
if g == nil {
|
||||||
|
http.Error(w, "Missing group information", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
diagForm, err := parseDiagsForm(r)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Invalid form data")
|
||||||
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Debug().Interface("diagForm", diagForm).Msg("Form data parsed")
|
||||||
|
|
||||||
|
data, err := structpb.NewStruct(map[string]any{
|
||||||
|
"booking": bookingID,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to create protobuf struct")
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
request := &diags.CreateDiagRequest{
|
||||||
|
Diag: &diags.Diag{
|
||||||
|
Name: diagForm.Name,
|
||||||
|
Namespace: diagForm.Namespace,
|
||||||
|
JsonSchema: diagForm.JsonSchema,
|
||||||
|
UiSchema: diagForm.UiSchema,
|
||||||
|
Data: data,
|
||||||
|
Deleted: diagForm.Deleted,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := h.services.GRPC.Diags.CreateDiag(context.TODO(), request)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to create diagnostic")
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", resp.Diag.Id), http.StatusFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
h.Renderer.BookingsCreateDiag(w, r, bookingID)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *ApplicationHandler) DiagsDisplayDiag(w http.ResponseWriter, r *http.Request) {
|
func (h *ApplicationHandler) DiagsDisplayDiag(w http.ResponseWriter, r *http.Request) {
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
diagid := vars["diagid"]
|
diagid := vars["diagid"]
|
||||||
|
|
|
@ -200,7 +200,6 @@ func (h *ApplicationHandler) VehiclesFleetDisplay(w http.ResponseWriter, r *http
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
diag := []diagsstorage.Diag{}
|
diag := []diagsstorage.Diag{}
|
||||||
|
|
||||||
diagsrequest := &diags.GetDiagsRequest{
|
diagsrequest := &diags.GetDiagsRequest{
|
||||||
|
@ -358,7 +357,32 @@ func (h ApplicationHandler) VehicleManagementBookingDisplay(w http.ResponseWrite
|
||||||
documents := h.filestorage.List(filestorage.PREFIX_BOOKINGS + "/" + bookingid)
|
documents := h.filestorage.List(filestorage.PREFIX_BOOKINGS + "/" + bookingid)
|
||||||
file_types_map := h.config.GetStringMapString("storage.files.file_types")
|
file_types_map := h.config.GetStringMapString("storage.files.file_types")
|
||||||
|
|
||||||
h.Renderer.VehicleManagementBookingDisplay(w, r, booking, booking.Vehicle, beneficiary, groupresp.Group.ToStorageType(), documents, file_types_map, alternatives)
|
diag := []diagsstorage.Diag{}
|
||||||
|
|
||||||
|
diagsrequest := &diags.GetDiagsRequest{
|
||||||
|
Namespaces: []string{"parcoursmob_bookings"},
|
||||||
|
}
|
||||||
|
|
||||||
|
diagsresp, err := h.services.GRPC.Diags.GetDiags(context.TODO(), diagsrequest)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("")
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, d := range diagsresp.Diags {
|
||||||
|
diagData := d.Data.AsMap()
|
||||||
|
if booking, ok := diagData["booking"].(string); ok && booking == bookingid {
|
||||||
|
diag = append(diag, d.ToStorageType())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diagsAny := make([]any, len(diag))
|
||||||
|
for i, d := range diag {
|
||||||
|
diagsAny[i] = d
|
||||||
|
}
|
||||||
|
|
||||||
|
h.Renderer.VehicleManagementBookingDisplay(w, r, booking, booking.Vehicle, beneficiary, groupresp.Group.ToStorageType(), documents, file_types_map, alternatives, diagsAny)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h ApplicationHandler) VehicleManagementBookingChangeVehicle(w http.ResponseWriter, r *http.Request) {
|
func (h ApplicationHandler) VehicleManagementBookingChangeVehicle(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
2
main.go
2
main.go
|
@ -194,6 +194,8 @@ func main() {
|
||||||
application.HandleFunc("/vehicles-management/fleet/{vehicleid}/diags", applicationHandler.DiagsHome)
|
application.HandleFunc("/vehicles-management/fleet/{vehicleid}/diags", applicationHandler.DiagsHome)
|
||||||
application.HandleFunc("/vehicles-management/fleet/{vehicleid}/diags/{diagid}", applicationHandler.DiagsDisplayDiag)
|
application.HandleFunc("/vehicles-management/fleet/{vehicleid}/diags/{diagid}", applicationHandler.DiagsDisplayDiag)
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////Diag in bookings////////////////////////
|
||||||
|
application.HandleFunc("/vehicles-management/bookings/{bookingid}/create-diag", applicationHandler.BookingsCreateDiag)
|
||||||
//////////////////Diags////////////////////////
|
//////////////////Diags////////////////////////
|
||||||
application.HandleFunc("/diags/", applicationHandler.DiagsHome)
|
application.HandleFunc("/diags/", applicationHandler.DiagsHome)
|
||||||
application.HandleFunc("/diags/{diagid}", applicationHandler.DiagsDisplayDiag)
|
application.HandleFunc("/diags/{diagid}", applicationHandler.DiagsDisplayDiag)
|
||||||
|
|
|
@ -39,13 +39,22 @@ func (renderer *Renderer) BeneficiariesCreateDiag(w http.ResponseWriter, r *http
|
||||||
|
|
||||||
func (renderer *Renderer) VehiclesCreateDiag(w http.ResponseWriter, r *http.Request, vehicle string) {
|
func (renderer *Renderer) VehiclesCreateDiag(w http.ResponseWriter, r *http.Request, vehicle string) {
|
||||||
state := NewState(r, renderer.ThemeConfig, diagsMenu)
|
state := NewState(r, renderer.ThemeConfig, diagsMenu)
|
||||||
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.create_diag.files")
|
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.create_vehicle_diag.files")
|
||||||
state.ViewState = map[string]any{
|
state.ViewState = map[string]any{
|
||||||
"vehicle": vehicle,
|
"vehicle": vehicle,
|
||||||
}
|
}
|
||||||
renderer.Render("diag create for vehicle", w, r, files, state)
|
renderer.Render("diag create for vehicle", w, r, files, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (renderer *Renderer) BookingsCreateDiag(w http.ResponseWriter, r *http.Request, booking string) {
|
||||||
|
state := NewState(r, renderer.ThemeConfig, diagsMenu)
|
||||||
|
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.create_booking_diag.files")
|
||||||
|
state.ViewState = map[string]any{
|
||||||
|
"booking": booking,
|
||||||
|
}
|
||||||
|
renderer.Render("diag create for booking", w, r, files, state)
|
||||||
|
}
|
||||||
|
|
||||||
func (renderer *Renderer) DiagsDisplayDiag(w http.ResponseWriter, r *http.Request, diag any) {
|
func (renderer *Renderer) DiagsDisplayDiag(w http.ResponseWriter, r *http.Request, diag any) {
|
||||||
files := renderer.ThemeConfig.GetStringSlice("views.diags.display_diag.files")
|
files := renderer.ThemeConfig.GetStringSlice("views.diags.display_diag.files")
|
||||||
state := NewState(r, renderer.ThemeConfig, diagsMenu)
|
state := NewState(r, renderer.ThemeConfig, diagsMenu)
|
||||||
|
|
|
@ -254,7 +254,7 @@ func NewState(r *http.Request, themeConfig *viper.Viper, menuState string) Rende
|
||||||
}
|
}
|
||||||
if modules["diags"] != nil && modules["diags"].(bool) {
|
if modules["diags"] != nil && modules["diags"].(bool) {
|
||||||
ls.MenuItems = append(ls.MenuItems, MenuItem{
|
ls.MenuItems = append(ls.MenuItems, MenuItem{
|
||||||
Title: "Diagnostiques",
|
Title: "Diagnostics",
|
||||||
Link: "/app/diags/",
|
Link: "/app/diags/",
|
||||||
Active: menuState == diagsMenu,
|
Active: menuState == diagsMenu,
|
||||||
Icon: "hero:outline/document-text",
|
Icon: "hero:outline/document-text",
|
||||||
|
|
|
@ -68,7 +68,7 @@ func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Req
|
||||||
renderer.Render("fleet display vehicle", w, r, files, state)
|
renderer.Render("fleet display vehicle", w, r, files, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string, alternative_vehicles []any) {
|
func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter, r *http.Request, booking any, vehicle any, beneficiary any, group any, documents []filestorage.FileInfo, file_types_map map[string]string, alternative_vehicles []any, diags []any) {
|
||||||
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.booking_display.files")
|
files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.booking_display.files")
|
||||||
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
|
state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu)
|
||||||
state.ViewState = map[string]any{
|
state.ViewState = map[string]any{
|
||||||
|
@ -79,6 +79,7 @@ func (renderer *Renderer) VehicleManagementBookingDisplay(w http.ResponseWriter,
|
||||||
"documents": documents,
|
"documents": documents,
|
||||||
"file_types_map": file_types_map,
|
"file_types_map": file_types_map,
|
||||||
"alternative_vehicles": alternative_vehicles,
|
"alternative_vehicles": alternative_vehicles,
|
||||||
|
"diags": diags,
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.Render("vehicles search", w, r, files, state)
|
renderer.Render("vehicles search", w, r, files, state)
|
||||||
|
|
Loading…
Reference in New Issue