From 023f5c735d568379b818b81dce4d30d5ecb75d3e Mon Sep 17 00:00:00 2001 From: Nicolas CARON Date: Mon, 10 Feb 2025 12:47:41 +0100 Subject: [PATCH 1/3] add Diagdate --- go.mod | 2 +- go.sum | 2 ++ handlers/application/diags.go | 14 +++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index c8aa416..d1074fa 100755 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( require ( ariga.io/atlas v0.12.0 // indirect - git.coopgo.io/coopgo-platform/diags v0.0.0-20241120133550-917ed8705c73 + git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63 github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/coreos/go-semver v0.3.0 // indirect diff --git a/go.sum b/go.sum index 504ad42..019071a 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ git.coopgo.io/coopgo-platform/agenda v1.0.0 h1:rTHgva1JKKO0wAPlINegifMkHm+xOg3IW git.coopgo.io/coopgo-platform/agenda v1.0.0/go.mod h1:/hToSla0p6SeWn1zo1MDrfxdmo7RBdZDkbLqCVituIM= git.coopgo.io/coopgo-platform/diags v0.0.0-20241120133550-917ed8705c73 h1:Xyc2Xuf7VnaOVD7sro2GPD1gzwo+R9lyfkWjyrTYlqY= git.coopgo.io/coopgo-platform/diags v0.0.0-20241120133550-917ed8705c73/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63 h1:BvNTshj4TToGptaheeAzEmaNeuqPCR/NIH6TGePd54A= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= git.coopgo.io/coopgo-platform/emailing v0.0.0-20241119141913-9836b30191c1 h1:gAhJ9wwlitMiETmnD4U2L6xLnVd5xE4hPX72IJ5s7+I= git.coopgo.io/coopgo-platform/emailing v0.0.0-20241119141913-9836b30191c1/go.mod h1:EXy6NRvFfpW6yIHoZUixldkXrj1qzjCbTHpumDvzaKI= git.coopgo.io/coopgo-platform/fleets v0.0.0-20230310144446-feb935f8bf4e h1:eHahRTKlC8aBWYCd6LbXNcX8HoQhuZj31OFWrw0EL0U= diff --git a/handlers/application/diags.go b/handlers/application/diags.go index e737f27..f03138a 100644 --- a/handlers/application/diags.go +++ b/handlers/application/diags.go @@ -10,7 +10,7 @@ import ( "net/http" // "strconv" "strings" - // "time" + "time" "git.coopgo.io/coopgo-apps/parcoursmob/services" "git.coopgo.io/coopgo-apps/parcoursmob/utils/identification" @@ -25,7 +25,7 @@ import ( "github.com/gorilla/mux" "github.com/rs/zerolog/log" "google.golang.org/protobuf/types/known/structpb" - // "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/timestamppb" ) type DiagsForm struct { @@ -35,12 +35,12 @@ type DiagsForm struct { UiSchema string `json:"ui_schema"` Data map[string]any `json:"data"` Deleted bool `json:"deleted"` + Diagdate *time.Time `json:"diagdate"` } func (h *ApplicationHandler) DiagsHome(w http.ResponseWriter, r *http.Request) { resp, err := h.services.GRPC.Diags.GetDiags(context.TODO(), &diags.GetDiagsRequest{ Namespaces: []string{"parcoursmob_beneficiaries", "parcoursmob_diagnostiques", "parcoursmob_vehicles", "parcoursmob_bookings"}, - // Mindate: timestamppb.New(time.Now().Add(-24 * time.Hour)), }) if err != nil { @@ -61,7 +61,6 @@ func (h *ApplicationHandler) DiagsHome(w http.ResponseWriter, r *http.Request) { func (h *ApplicationHandler) DiagsHistory(w http.ResponseWriter, r *http.Request) { resp, err := h.services.GRPC.Diags.GetDiags(context.TODO(), &diags.GetDiagsRequest{ Namespaces: []string{"parcoursmob_beneficiaries", "parcoursmob_diagnostiques", "parcoursmob_vehicles", "parcoursmob_bookings"}, - //Maxdate: timestamppb.New(time.Now().Add(24 * time.Hour)), }) if err != nil { @@ -125,6 +124,7 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h UiSchema: diagForm.UiSchema, Data: data, Deleted: diagForm.Deleted, + Diagdate: timestamppb.New(time.Now()), }, } @@ -186,6 +186,7 @@ func (h *ApplicationHandler) VehiclesCreateDiag(w http.ResponseWriter, r *http.R UiSchema: diagForm.UiSchema, Data: data, Deleted: diagForm.Deleted, + Diagdate: timestamppb.New(time.Now()), }, } @@ -247,6 +248,7 @@ func (h *ApplicationHandler) BookingsCreateDiag(w http.ResponseWriter, r *http.R UiSchema: diagForm.UiSchema, Data: data, Deleted: diagForm.Deleted, + Diagdate: timestamppb.New(time.Now()), }, } @@ -308,6 +310,7 @@ func (h *ApplicationHandler) VehicleBookingsCreateDiag(w http.ResponseWriter, r UiSchema: diagForm.UiSchema, Data: data, Deleted: diagForm.Deleted, + Diagdate: timestamppb.New(time.Now()), }, } @@ -417,7 +420,7 @@ func (h *ApplicationHandler) DiagUpdate(w http.ResponseWriter, r *http.Request) JsonSchema: diagForm.JsonSchema, UiSchema: diagForm.UiSchema, Data: data, - + Diagdate: timestamppb.New(time.Now()), }, } @@ -461,6 +464,7 @@ func (h *ApplicationHandler) DiagDelete(w http.ResponseWriter, r *http.Request) UiSchema: resp.Diag.UiSchema, Data: resp.Diag.Data, Deleted: true, + Diagdate: resp.Diag.Diagdate, }, } From d0fc96f8bba85a2a75208cc0f4f1869b0f1d693f Mon Sep 17 00:00:00 2001 From: Nicolas CARON Date: Mon, 10 Feb 2025 16:17:20 +0100 Subject: [PATCH 2/3] Add documents on diags --- handlers/application/diags.go | 106 +++++++++++++++++++++++++++++++++- main.go | 2 + renderer/diags.go | 10 +++- utils/storage/files.go | 1 + 4 files changed, 115 insertions(+), 4 deletions(-) diff --git a/handlers/application/diags.go b/handlers/application/diags.go index f03138a..cc30549 100644 --- a/handlers/application/diags.go +++ b/handlers/application/diags.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "io" // "io" "net/http" @@ -14,6 +15,8 @@ import ( "git.coopgo.io/coopgo-apps/parcoursmob/services" "git.coopgo.io/coopgo-apps/parcoursmob/utils/identification" + filestorage "git.coopgo.io/coopgo-apps/parcoursmob/utils/storage" + // filestorage "git.coopgo.io/coopgo-apps/parcoursmob/utils/storage" diags "git.coopgo.io/coopgo-platform/diags/grpcapi" diagsstorage "git.coopgo.io/coopgo-platform/diags/storage" @@ -22,6 +25,7 @@ import ( // "git.coopgo.io/coopgo-platform/groups-management/storage" // mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" // "github.com/google/uuid" + "github.com/google/uuid" "github.com/gorilla/mux" "github.com/rs/zerolog/log" "google.golang.org/protobuf/types/known/structpb" @@ -135,11 +139,46 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h return } + contentType := r.Header.Get("Content-Type") + if strings.HasPrefix(contentType, "multipart/form-data") { + err = r.ParseMultipartForm(100 * 1024 * 1024) // 100 MB limit + if err != nil { + log.Error().Err(err).Msg("Error parsing multipart form") + w.WriteHeader(http.StatusBadRequest) + return + } + + file, header, err := r.FormFile("file-upload") + if err == nil { + defer file.Close() + + document_type := r.FormValue("file_type") + document_name := r.FormValue("file_name") + + fileid := uuid.NewString() + + metadata := map[string]string{ + "file_type": document_type, + "file_name": document_name, + } + + if err := h.filestorage.Put(file, filestorage.PREFIX_DIAGS, fmt.Sprintf("%s/%s_%s", resp.Diag.Id, fileid, header.Filename), header.Size, metadata); err != nil { + log.Error().Err(err).Msg("Error uploading file") + w.WriteHeader(http.StatusInternalServerError) + return + } + } else if err != http.ErrMissingFile { + log.Error().Err(err).Msg("Error retrieving file") + w.WriteHeader(http.StatusInternalServerError) + return + } + } + http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", resp.Diag.Id), http.StatusFound) return } - h.Renderer.BeneficiariesCreateDiag(w, r, beneficiaryID) + h.Renderer.BeneficiariesCreateDiag(w, r, beneficiaryID, h.config.GetStringSlice("modules.diags.documents_types"), h.config.GetStringMapString("storage.files.file_types"), nil) } func (h *ApplicationHandler) VehiclesCreateDiag(w http.ResponseWriter, r *http.Request) { @@ -351,7 +390,12 @@ func (h *ApplicationHandler) DiagsDisplayDiag(w http.ResponseWriter, r *http.Req } - h.Renderer.DiagsDisplayDiag(w, r, resp.Diag.ToStorageType()) + documents := h.filestorage.List(filestorage.PREFIX_DIAGS + "/" + diagid) + + events_file_types := h.config.GetStringSlice("modules.diags.documents_types") + file_types_map := h.config.GetStringMapString("storage.files.file_types") + + h.Renderer.DiagsDisplayDiag(w, r, resp.Diag.ToStorageType(), events_file_types, file_types_map, documents) } func parseDiagsForm(r *http.Request) (*DiagsForm, error) { @@ -498,3 +542,61 @@ func (h *ApplicationHandler) DiagsHistoryDiag(w http.ResponseWriter, r *http.Req h.Renderer.DiagsHistoryDiag(w, r, resp.Diag.ToStorageType()) } + +// //// ADD DOCUMENTS ////// +func (h *ApplicationHandler) DiagsDocuments(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + diagID := vars["diagid"] + + //r.ParseForm() + r.ParseMultipartForm(100 * 1024 * 1024) + + document_type := r.FormValue("type") + document_name := r.FormValue("name") + + file, header, err := r.FormFile("file-upload") + if err != nil { + log.Error().Err(err).Msg("") + return + } + defer file.Close() + + fileid := uuid.NewString() + + metadata := map[string]string{ + "type": document_type, + "name": document_name, + } + + if err := h.filestorage.Put(file, filestorage.PREFIX_DIAGS, fmt.Sprintf("%s/%s_%s", diagID, fileid, header.Filename), header.Size, metadata); err != nil { + log.Error().Err(err).Msg("") + w.WriteHeader(http.StatusInternalServerError) + return + } + + http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", diagID), http.StatusFound) + +} + +func (h *ApplicationHandler) DiagsDocumentDownload(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + diagID := vars["diagid"] + document := vars["document"] + + file, info, err := h.filestorage.Get(filestorage.PREFIX_DIAGS, fmt.Sprintf("%s/%s", diagID, document)) + if err != nil { + log.Error().Err(err).Msg("") + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", info.ContentType) + if _, err = io.Copy(w, file); err != nil { + log.Error().Err(err).Msg("") + w.WriteHeader(http.StatusInternalServerError) + return + } + + http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", diagID), http.StatusFound) + +} \ No newline at end of file diff --git a/main.go b/main.go index dfae212..9c37c42 100755 --- a/main.go +++ b/main.go @@ -200,6 +200,8 @@ func main() { application.HandleFunc("/vehicles/bookings/{bookingid}/create-diag", applicationHandler.VehicleBookingsCreateDiag) //////////////////Diags//////////////////////// application.HandleFunc("/diags/", applicationHandler.DiagsHome) + application.HandleFunc("/diags/{diagid}/documents", applicationHandler.DiagsDocuments) + application.HandleFunc("/diags/{diagid}/documents/{document}", applicationHandler.DiagsDocumentDownload) application.HandleFunc("/diags/{diagid}", applicationHandler.DiagsDisplayDiag) application.HandleFunc("/diags/{diagid}/update", applicationHandler.DiagUpdate) application.HandleFunc("/diags/{diagid}/delete", applicationHandler.DiagDelete) diff --git a/renderer/diags.go b/renderer/diags.go index e5eea8a..7e2aaa2 100644 --- a/renderer/diags.go +++ b/renderer/diags.go @@ -28,11 +28,14 @@ func (renderer *Renderer) DiagsHistory(w http.ResponseWriter, r *http.Request, d renderer.Render("diags history", w, r, files, state) } -func (renderer *Renderer) BeneficiariesCreateDiag(w http.ResponseWriter, r *http.Request, beneficiary string) { +func (renderer *Renderer) BeneficiariesCreateDiag(w http.ResponseWriter, r *http.Request, beneficiary string, diags_file_types []string, file_types_map map[string]string, documents any) { state := NewState(r, renderer.ThemeConfig, diagsMenu) files := renderer.ThemeConfig.GetStringSlice("views.beneficiaries.create_diag.files") state.ViewState = map[string]any{ "beneficiary": beneficiary, + "diags_file_types": diags_file_types, + "file_types_map": file_types_map, + "documents": documents, } renderer.Render("diag create for beneficiary", w, r, files, state) } @@ -64,12 +67,15 @@ func (renderer *Renderer) VehicleBookingsCreateDiag(w http.ResponseWriter, r *ht 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, diags_file_types []string, file_types_map map[string]string, documents any) { files := renderer.ThemeConfig.GetStringSlice("views.diags.display_diag.files") state := NewState(r, renderer.ThemeConfig, diagsMenu) state.ViewState = map[string]any{ "diag": diag, + "diags_file_types": diags_file_types, + "file_types_map": file_types_map, + "documents": documents, } renderer.Render("diags create diag", w, r, files, state) diff --git a/utils/storage/files.go b/utils/storage/files.go index b976bdc..168b08c 100755 --- a/utils/storage/files.go +++ b/utils/storage/files.go @@ -11,6 +11,7 @@ const ( PREFIX_BENEFICIARIES = "beneficiaries" PREFIX_BOOKINGS = "fleets_bookings" PREFIX_AGENDA = "event_files" + PREFIX_DIAGS = "diags" ) type FileInfo struct { From 0a690cadf12f0fa16f1bdbb6fb3d82dc5887db82 Mon Sep 17 00:00:00 2001 From: Nicolas CARON Date: Wed, 12 Feb 2025 10:42:26 +0100 Subject: [PATCH 3/3] Add check in Diags home if its the same groupID --- go.mod | 2 +- go.sum | 6 ++-- handlers/application/diags.go | 54 ++++++++++++++++++++++++++++++----- renderer/diags.go | 3 +- 4 files changed, 54 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index d1074fa..0767cf2 100755 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( require ( ariga.io/atlas v0.12.0 // indirect - git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63 + git.coopgo.io/coopgo-platform/diags v0.0.0-20250212093351-64da61495c9d github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/coreos/go-semver v0.3.0 // indirect diff --git a/go.sum b/go.sum index 019071a..8f42c6e 100644 --- a/go.sum +++ b/go.sum @@ -2,10 +2,12 @@ ariga.io/atlas v0.12.0 h1:jDfjxT3ppKhzqLS26lZv9ni7p9TVNrhy7SQquaF7bPs= ariga.io/atlas v0.12.0/go.mod h1:+TR129FJZ5Lvzms6dvCeGWh1yR6hMvmXBhug4hrNIGk= git.coopgo.io/coopgo-platform/agenda v1.0.0 h1:rTHgva1JKKO0wAPlINegifMkHm+xOg3IWW4yQRy334w= git.coopgo.io/coopgo-platform/agenda v1.0.0/go.mod h1:/hToSla0p6SeWn1zo1MDrfxdmo7RBdZDkbLqCVituIM= -git.coopgo.io/coopgo-platform/diags v0.0.0-20241120133550-917ed8705c73 h1:Xyc2Xuf7VnaOVD7sro2GPD1gzwo+R9lyfkWjyrTYlqY= -git.coopgo.io/coopgo-platform/diags v0.0.0-20241120133550-917ed8705c73/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63 h1:BvNTshj4TToGptaheeAzEmaNeuqPCR/NIH6TGePd54A= git.coopgo.io/coopgo-platform/diags v0.0.0-20250210110754-726bb4643c63/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250211082457-291671c295e6 h1:McRGfPLueD+wcx8yf19a31uei4Ha0ugiDtnYtHYErrg= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250211082457-291671c295e6/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250212093351-64da61495c9d h1:fBxVvik4Cb/6d4+HAXZi9e8x8P9UBCJt8JcWgqnNjsE= +git.coopgo.io/coopgo-platform/diags v0.0.0-20250212093351-64da61495c9d/go.mod h1:diyq11WNkgJ0kYHdT7SphXPMQUyoq4lRk7T6IgM5yPA= git.coopgo.io/coopgo-platform/emailing v0.0.0-20241119141913-9836b30191c1 h1:gAhJ9wwlitMiETmnD4U2L6xLnVd5xE4hPX72IJ5s7+I= git.coopgo.io/coopgo-platform/emailing v0.0.0-20241119141913-9836b30191c1/go.mod h1:EXy6NRvFfpW6yIHoZUixldkXrj1qzjCbTHpumDvzaKI= git.coopgo.io/coopgo-platform/fleets v0.0.0-20230310144446-feb935f8bf4e h1:eHahRTKlC8aBWYCd6LbXNcX8HoQhuZj31OFWrw0EL0U= diff --git a/handlers/application/diags.go b/handlers/application/diags.go index cc30549..8d0bda4 100644 --- a/handlers/application/diags.go +++ b/handlers/application/diags.go @@ -21,8 +21,8 @@ import ( diags "git.coopgo.io/coopgo-platform/diags/grpcapi" diagsstorage "git.coopgo.io/coopgo-platform/diags/storage" - // groupsmanagement "git.coopgo.io/coopgo-platform/groups-management/grpcapi" - // "git.coopgo.io/coopgo-platform/groups-management/storage" + groupsmanagement "git.coopgo.io/coopgo-platform/groups-management/grpcapi" + "git.coopgo.io/coopgo-platform/groups-management/storage" // mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" // "github.com/google/uuid" "github.com/google/uuid" @@ -40,9 +40,12 @@ type DiagsForm struct { Data map[string]any `json:"data"` Deleted bool `json:"deleted"` Diagdate *time.Time `json:"diagdate"` + Owners []string `json:"owners"` } func (h *ApplicationHandler) DiagsHome(w http.ResponseWriter, r *http.Request) { + groupID := r.Context().Value(identification.GroupKey).(storage.Group).ID + resp, err := h.services.GRPC.Diags.GetDiags(context.TODO(), &diags.GetDiagsRequest{ Namespaces: []string{"parcoursmob_beneficiaries", "parcoursmob_diagnostiques", "parcoursmob_vehicles", "parcoursmob_bookings"}, }) @@ -55,11 +58,35 @@ func (h *ApplicationHandler) DiagsHome(w http.ResponseWriter, r *http.Request) { responses := []diagsstorage.Diag{} + groupids := []string{} for _, e := range resp.Diags { + groupids = append(groupids, e.Owners...) responses = append(responses, e.ToStorageType()) } - h.Renderer.DiagsHome(w, r, responses) + groupsresp, err := h.services.GRPC.GroupsManagement.GetGroupsBatch(context.TODO(), &groupsmanagement.GetGroupsBatchRequest{ + Groupids: groupids, + }) + groups := map[string]any{} + + if err == nil { + for _, g := range groupsresp.Groups { + groups[g.Id] = g.ToStorageType() + } + } + + filteredDiags := []diagsstorage.Diag{} + for _, diag := range responses { + for _, owner := range diag.Owners { + if string(owner) == groupID { + filteredDiags = append(filteredDiags, diag) + log.Debug().Msgf("Diag %s added to filtered list", diag.ID) + break + } + } + } + + h.Renderer.DiagsHome(w, r, filteredDiags, groups) } func (h *ApplicationHandler) DiagsHistory(w http.ResponseWriter, r *http.Request) { @@ -102,6 +129,8 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h return } + group := g.(storage.Group) + diagForm, err := parseDiagsForm(r) if err != nil { log.Error().Err(err).Msg("Invalid form data") @@ -109,8 +138,6 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h return } - log.Debug().Interface("diagForm", diagForm).Msg("Form data parsed") - data, err := structpb.NewStruct(map[string]any{ "beneficiary": beneficiaryID, }) @@ -129,6 +156,7 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h Data: data, Deleted: diagForm.Deleted, Diagdate: timestamppb.New(time.Now()), + Owners: []string{group.ID}, }, } @@ -173,7 +201,7 @@ func (h *ApplicationHandler) BeneficiariesCreateDiag(w http.ResponseWriter, r *h return } } - + http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", resp.Diag.Id), http.StatusFound) return } @@ -217,6 +245,8 @@ func (h *ApplicationHandler) VehiclesCreateDiag(w http.ResponseWriter, r *http.R return } + group := g.(storage.Group) + request := &diags.CreateDiagRequest{ Diag: &diags.Diag{ Name: diagForm.Name, @@ -226,6 +256,7 @@ func (h *ApplicationHandler) VehiclesCreateDiag(w http.ResponseWriter, r *http.R Data: data, Deleted: diagForm.Deleted, Diagdate: timestamppb.New(time.Now()), + Owners: []string{group.ID}, }, } @@ -279,6 +310,8 @@ func (h *ApplicationHandler) BookingsCreateDiag(w http.ResponseWriter, r *http.R return } + group := g.(storage.Group) + request := &diags.CreateDiagRequest{ Diag: &diags.Diag{ Name: diagForm.Name, @@ -288,6 +321,7 @@ func (h *ApplicationHandler) BookingsCreateDiag(w http.ResponseWriter, r *http.R Data: data, Deleted: diagForm.Deleted, Diagdate: timestamppb.New(time.Now()), + Owners: []string{group.ID}, }, } @@ -341,6 +375,8 @@ func (h *ApplicationHandler) VehicleBookingsCreateDiag(w http.ResponseWriter, r return } + group := g.(storage.Group) + request := &diags.CreateDiagRequest{ Diag: &diags.Diag{ Name: diagForm.Name, @@ -350,6 +386,7 @@ func (h *ApplicationHandler) VehicleBookingsCreateDiag(w http.ResponseWriter, r Data: data, Deleted: diagForm.Deleted, Diagdate: timestamppb.New(time.Now()), + Owners: []string{group.ID}, }, } @@ -447,6 +484,8 @@ func (h *ApplicationHandler) DiagUpdate(w http.ResponseWriter, r *http.Request) return } + group := g.(storage.Group) + diagForm, err := parseDiagsForm(r) if err != nil { log.Error().Err(err).Msg("") @@ -465,6 +504,7 @@ func (h *ApplicationHandler) DiagUpdate(w http.ResponseWriter, r *http.Request) UiSchema: diagForm.UiSchema, Data: data, Diagdate: timestamppb.New(time.Now()), + Owners: []string{group.ID}, }, } @@ -599,4 +639,4 @@ func (h *ApplicationHandler) DiagsDocumentDownload(w http.ResponseWriter, r *htt http.Redirect(w, r, fmt.Sprintf("/app/diags/%s", diagID), http.StatusFound) -} \ No newline at end of file +} diff --git a/renderer/diags.go b/renderer/diags.go index 7e2aaa2..0ef0a1e 100644 --- a/renderer/diags.go +++ b/renderer/diags.go @@ -8,11 +8,12 @@ import ( const diagsMenu = "diags" -func (renderer *Renderer) DiagsHome(w http.ResponseWriter, r *http.Request, diags []diagsstorage.Diag) { +func (renderer *Renderer) DiagsHome(w http.ResponseWriter, r *http.Request, diags []diagsstorage.Diag, groups map[string]any) { files := renderer.ThemeConfig.GetStringSlice("views.diags.list.files") state := NewState(r, renderer.ThemeConfig, diagsMenu) state.ViewState = map[string]any{ "diags": diags, + "groups": groups, } renderer.Render("diags home", w, r, files, state)