From 1aeb6d50efa5c1cf952e53f544a8a40e6edc7669 Mon Sep 17 00:00:00 2001 From: soukainna Date: Fri, 12 May 2023 12:59:16 +0200 Subject: [PATCH] add logic fuction to update vehicles --- handlers/application/vehicles-management.go | 142 ++++++++++++-------- 1 file changed, 83 insertions(+), 59 deletions(-) diff --git a/handlers/application/vehicles-management.go b/handlers/application/vehicles-management.go index 29201ad..2e61335 100644 --- a/handlers/application/vehicles-management.go +++ b/handlers/application/vehicles-management.go @@ -52,14 +52,6 @@ func (h *ApplicationHandler) VehiclesManagementOverview(w http.ResponseWriter, r } } - // vehiicles := []fleetsstorage.Vehicle{} - // for i, vehiicle := range resp.Vehicles { - // if len(resp.Vehicles[i].Bookings) == 0 { - // v := vehiicle.ToStorageType() - // vehiicles = append(vehiicles, v) - // } - // } - //fmt.Println(vehiicles) sort.Sort(sorting.VehiclesByLicencePlate(vehicles)) sort.Sort(sorting.BookingsByStartdate(bookings)) h.Renderer.VehiclesManagementOverview(w, r, vehicles, vehicles_map, bookings) @@ -190,36 +182,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 { @@ -467,27 +433,85 @@ func (h ApplicationHandler) VehiclesFleetMakeUnavailable(w http.ResponseWriter, http.Redirect(w, r, fmt.Sprintf("/app/vehicles-management/fleet/%s", vehicleid), http.StatusFound) } -// func (h *ApplicationHandler) UnbookingVehicles(w http.ResponseWriter, r *http.Request) { -// request := &fleets.GetVehiclesRequest{ -// Namespaces: []string{"parcoursmob"}, -// } -// resp, err := h.services.GRPC.Fleets.GetVehicles(context.TODO(), request) -// if err != nil { -// fmt.Println(err) -// w.WriteHeader(http.StatusInternalServerError) -// } -// vehicles := []fleetsstorage.Vehicle{} -// fmt.Println(resp.Vehicles[0].Bookings) -// for i, vehicle := range resp.Vehicles { -// if len(resp.Vehicles[i].Bookings) == 0 { -// v := vehicle.ToStorageType() -// vehicles = append(vehicles, v) -// } -// } -// // if len(resp.Vehicle.ToStorageType().Bookings) == 0 { -// // h.Renderer.UnbookingVehicles(w, r, resp.Vehicle.ToStorageType()) -// // } -// // fmt.Println(resp.Vehicle.ToStorageType().Bookings) -// fmt.Println(vehicles) -// h.Renderer.UnbookingVehicles(w, r, vehicles) -// } +////////////////////////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) +}