diff --git a/handlers/application/beneficiaries.go b/handlers/application/beneficiaries.go index ad4f22a..026de00 100755 --- a/handlers/application/beneficiaries.go +++ b/handlers/application/beneficiaries.go @@ -534,7 +534,7 @@ func parseBeneficiariesForm(r *http.Request) (map[string]any, error) { if err != nil { return nil, err } - date = &d + date = &d } formData := BeneficiariesForm{ diff --git a/handlers/application/solidarity_service.go b/handlers/application/solidarity_service.go index 67b3866..c7024b0 100644 --- a/handlers/application/solidarity_service.go +++ b/handlers/application/solidarity_service.go @@ -1,44 +1,102 @@ package application -// import ( -// "context" -// "fmt" -// "net/http" -// "time" +import ( + "context" + "fmt" + "net/http" + "time" -// solidarity_service "git.coopgo.io/coopgo-apps/silvermobi/servers/grpcapi/proto" -// "google.golang.org/protobuf/types/known/timestamppb" -// ) + solidarity_service "git.coopgo.io/sbouaram/solidarity-service/servers/grpc/proto" + geojson "github.com/paulmach/go.geojson" + "google.golang.org/protobuf/types/known/timestamppb" +) + +func (h *ApplicationHandler) DriversJourney(w http.ResponseWriter, r *http.Request) { + + if r.Method == "POST" { + + // firstname := r.FormValue("first_name") + // lastname := r.FormValue("last_name") + departure := r.FormValue("departure") + destination := r.FormValue("destination") + //date := r.FormValue("date") + + var ( + departuregeo *geojson.Feature + destinationgeo *geojson.Feature + ) + + departureTime := time.Now() + + timestamp := timestamppb.New(departureTime) + + if departure != "" && destination != "" { + // searched = true + + var err error + + departuregeo, err = geojson.UnmarshalFeature([]byte(departure)) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadRequest) + return + } + + destinationgeo, err = geojson.UnmarshalFeature([]byte(destination)) + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusBadRequest) + return + } + + fmt.Println(departuregeo, destinationgeo, "departuregeo") + } - -// func (h *ApplicationHandler) DriversJourney(w http.ResponseWriter, r *http.Request) { - -// if r.Method == "POST" { - -// departureTime := time.Now() - -// timestamp := timestamppb.New(departureTime) - -// request := &solidarity_service.DriverJourneysRequest{ -// DepartureDate: timestamp, -// Departure: &solidarity_service.Feature{ -// Lat: 0, -// Long: 0, -// Address: "7 rue D", -// }, -// } -// _, err := h.services.GRPC.SolidarityService.DriverJourneys(context.TODO(), request) - -// if err != nil { -// fmt.Println(err) -// w.WriteHeader(http.StatusInternalServerError) -// return -// } -// } - -// h.Renderer.SolidarityServiceBookingList(w, r) -// } + request := &solidarity_service.DriverJourneysRequest{ + DepartureDate: timestamp, + Departure: &solidarity_service.Feature{ + Lat: departuregeo.Geometry.Point[0], + Long: departuregeo.Geometry.Point[1], + Address: departure, + }, + } + drivers, err := h.services.GRPC.SolidarityService.DriverJourneys(context.TODO(), request) + + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + fmt.Println("drivers: ", drivers) + h.Renderer.SolidarityServiceBookingList(w, r, drivers) + + } else { + departureTime := time.Now() + + timestamp := timestamppb.New(departureTime) + + request := &solidarity_service.DriverJourneysRequest{ + DepartureDate: timestamp, + Departure: &solidarity_service.Feature{ + Lat: 0, + Long: 0, + Address: "Null Island (default)", + }, + } + drivers, err := h.services.GRPC.SolidarityService.DriverJourneys(context.TODO(), request) + + if err != nil { + fmt.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + h.Renderer.SolidarityServiceBookingList(w, r, drivers) + + } + +} diff --git a/main.go b/main.go index 2af7afe..2c8970d 100755 --- a/main.go +++ b/main.go @@ -138,7 +138,7 @@ func main() { /*********************** CODE GROUP **************************/ //=================================silvermobi==================================== - //application.HandleFunc("/solidarity_service/", applicationHandler.DriversJourney) + application.HandleFunc("/solidarity_service/", applicationHandler.DriversJourney) appGroup := application.PathPrefix("/group_module").Subrouter() appGroup.HandleFunc("/", applicationHandler.Groups) diff --git a/renderer/beneficiaries.go b/renderer/beneficiaries.go index 770587e..163c3a8 100755 --- a/renderer/beneficiaries.go +++ b/renderer/beneficiaries.go @@ -23,7 +23,7 @@ func (s BeneficiariesListState) JSON() template.JS { } func (s BeneficiariesListState) JSONWithLimits(a int, b int) template.JS { - if b < len(s.Beneficiaries) { + if b < len(s.Beneficiaries) { s.Beneficiaries = s.Beneficiaries[a:b] } return s.JSON() diff --git a/renderer/solidarity_service.go b/renderer/solidarity_service.go index 849c7b6..465129a 100644 --- a/renderer/solidarity_service.go +++ b/renderer/solidarity_service.go @@ -1,25 +1,25 @@ package renderer import ( - "fmt" "net/http" + solidarity_service "git.coopgo.io/sbouaram/solidarity-service/servers/grpc/proto" ) const solidarityserviceMenu = "solidarity_service" -func (renderer *Renderer) SolidarityServiceBookingList( w http.ResponseWriter, r *http.Request) { - files:= renderer.ThemeConfig.GetStringSlice("views.solidarity_service.list.files") +func (renderer *Renderer) SolidarityServiceBookingList(w http.ResponseWriter, r *http.Request, drivers *solidarity_service.DriverJourneysResponse) { + files := renderer.ThemeConfig.GetStringSlice("views.solidarity_service.list.files") + state := NewState(r, renderer.ThemeConfig, solidarityserviceMenu) + state.ViewState = map[string]any{ + "drivers": drivers, + } + + renderer.Render("solidarity_service", w, r, files, state) +} + +func (renderer *Renderer) SolidarityServiceBookingCreate(w http.ResponseWriter, r *http.Request) { + files := renderer.ThemeConfig.GetStringSlice("views.solidarity_service.list.files") state := NewState(r, renderer.ThemeConfig, solidarityserviceMenu) renderer.Render("solidarity_service", w, r, files, state) - } - -func (renderer *Renderer) SolidarityServiceBookingCreate( w http.ResponseWriter, r *http.Request) { - files:= renderer.ThemeConfig.GetStringSlice("views.solidarity_service.list.files") - state := NewState(r, renderer.ThemeConfig, solidarityserviceMenu) - - renderer.Render("solidarity_service", w, r, files, state) - fmt.Println("renderer") -} - \ No newline at end of file