diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index b61f436..b3c4632 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -59,7 +59,10 @@ func (h *ApplicationHandler) VehiclesManagementOverview(w http.ResponseWriter, r } } +<<<<<<< HEAD +======= +>>>>>>> modifyVehicle sort.Sort(sorting.VehiclesByLicencePlate(vehicles)) sort.Sort(sorting.BookingsByStartdate(bookings)) h.Renderer.VehiclesManagementOverview(w, r, vehicles, vehicles_map, bookings) @@ -190,36 +193,10 @@ func (h *ApplicationHandler) VehiclesFleetDisplay(w http.ResponseWriter, r *http w.WriteHeader(http.StatusInternalServerError) return } - // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { - // fmt.Println("lol") - // } - // fmt.Println(resp.Vehicle.ToStorageType().Bookings) + h.Renderer.VehiclesFleetDisplay(w, r, resp.Vehicle.ToStorageType()) } -func (h *ApplicationHandler) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - vehicleid := vars["vehicleid"] - - if r.Method == "POST" { - w.WriteHeader(http.StatusNotFound) - return - } - - request := &fleets.GetVehicleRequest{ - Vehicleid: vehicleid, - } - - resp, err := h.services.GRPC.Fleets.GetVehicle(context.TODO(), request) - if err != nil { - fmt.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - h.Renderer.VehiclesFleetUpdate(w, r, resp.Vehicle.ToStorageType()) -} - func filterVehicle(r *http.Request, v *fleets.Vehicle) bool { g := r.Context().Value(identification.GroupKey) if g == nil { @@ -593,3 +570,87 @@ func (h *ApplicationHandler) UnbookingVehicle(w http.ResponseWriter, r *http.Req } h.Renderer.UnbookingVehicle(w, r, resp.Booking.ToStorageType()) } + +////////////////////////UpdateVehicle/////////////////////// + +func (h *ApplicationHandler) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + vehicleID := vars["vehicleid"] + request := &fleets.GetVehicleRequest{ + Vehicleid: vehicleID, + } + + resp, err := h.services.GRPC.Fleets.GetVehicle(context.TODO(), request) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + namespaceV := resp.Vehicle.Namespace + //typeV := resp.Vehicle.Type + administratorsV := resp.Vehicle.Administrators + + if r.Method == "POST" { + fmt.Print(r.FormValue("vehicle_type")) + if err := r.ParseForm(); err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadRequest) + return + } + dataMap := map[string]any{} + if v := r.FormValue("name"); v != "" { + dataMap["name"] = v + } + if v := r.FormValue("address"); v != "" { + var address map[string]any + err := json.Unmarshal([]byte(v), &address) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + dataMap["address"] = address + } + if v := r.FormValue("informations"); v != "" { + dataMap["informations"] = v + } + if v := r.FormValue("licence_plate"); v != "" { + dataMap["licence_plate"] = v + } + if v := r.FormValue("automatic"); v != "" { + fmt.Println(v) + dataMap["automatic"] = (v == "on") + } + + data, err := structpb.NewValue(dataMap) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + request := &fleets.UpdateVehicleRequest{ + Vehicle: &fleets.Vehicle{ + Id: vehicleID, + Namespace: namespaceV, + Type: r.FormValue("type"), + Administrators: administratorsV, + Data: data.GetStructValue(), + }, + } + + resp, err := h.services.GRPC.Fleets.UpdateVehicle(context.TODO(), request) + + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + http.Redirect(w, r, fmt.Sprintf("/app/vehicles-management/fleet/%s", resp.Vehicle.Id), http.StatusFound) + return + } + vehicles_types := h.config.GetStringSlice("modules.fleets.vehicle_types") + h.Renderer.VehiclesFleetUpdate(w, r, resp.Vehicle.ToStorageType(), vehicles_types) +} + diff --git a/renderer/vehicle-management.go b/renderer/vehicle-management.go index 77e8dc5..eda9d35 100644 --- a/renderer/vehicle-management.go +++ b/renderer/vehicle-management.go @@ -53,11 +53,12 @@ func (renderer *Renderer) VehiclesFleetDisplay(w http.ResponseWriter, r *http.Re renderer.Render("fleet display vehicle", w, r, files, state) } -func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request, vehicle any) { +func (renderer *Renderer) VehiclesFleetUpdate(w http.ResponseWriter, r *http.Request, vehicle any, vehicle_types []string) { files := renderer.ThemeConfig.GetStringSlice("views.vehicles_management.fleet_update.files") state := NewState(r, renderer.ThemeConfig, vehiclesmanagementMenu) state.ViewState = map[string]any{ - "vehicle": vehicle, + "vehicle": vehicle, + "vehicle_types": vehicle_types, } renderer.Render("fleet display vehicle", w, r, files, state)