package dashboard import ( "fmt" "net/http" ) type validatorsPageData struct { PageData Items []validatorDTO } func (s *Server) handleValidatorsPage(w http.ResponseWriter, r *http.Request) { items, err := s.CA.ListValidators(r.Context()) data := validatorsPageData{Items: items} data.ActiveNav = "validators" data.Banner = bannerFor(err) s.renderPage(w, r, "validators_page", data) } func (s *Server) renderValidatorsTable(w http.ResponseWriter, r *http.Request, actionErr error) { items, listErr := s.CA.ListValidators(r.Context()) if actionErr == nil { actionErr = listErr } s.renderFragment(w, "validators_table", validatorsPageData{Items: items}, actionErr) } func (s *Server) handleValidatorCreate(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { s.renderValidatorsTable(w, r, fmt.Errorf("invalid form: %w", err)) return } id := r.PostFormValue("validator_id") osPortID := r.PostFormValue("os_port_id") if id == "" { s.renderValidatorsTable(w, r, &apiErr{Status: http.StatusBadRequest, Message: "validator_id обязателен"}) return } err := s.CA.CreateValidator(r.Context(), id, osPortID) s.renderValidatorsTable(w, r, err) } func (s *Server) handleValidatorUpdate(w http.ResponseWriter, r *http.Request) { id := r.PathValue("id") if err := r.ParseForm(); err != nil { s.renderValidatorsTable(w, r, fmt.Errorf("invalid form: %w", err)) return } err := s.CA.UpdateValidator(r.Context(), id, r.PostFormValue("os_port_id")) s.renderValidatorsTable(w, r, err) } func (s *Server) handleValidatorDelete(w http.ResponseWriter, r *http.Request) { id := r.PathValue("id") err := s.CA.DeleteValidator(r.Context(), id) s.renderValidatorsTable(w, r, err) }