Skip to content
Snippets Groups Projects
partnersInfo.go 2.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • package models
    
    import (
    	"encoding/json"
    	"errors"
    	"log"
    	"net/http"
    
    	"gorm.io/gorm"
    )
    
    type PartnersInfo struct {
    	ID                    uint   `gorm:"<-:create"`
    	Message               string `json:"message"`
    	GRDFFailure           bool   `json:"grdf_failure"`
    	EnedisFailure         bool   `json:"enedis_failure"`
    	EGLFailure            bool   `json:"egl_failure"`
    	NotificationActivated bool   `json:"notification_activated"`
    }
    
    // GetPartnersInfo godoc
    // @Summary Give status of partners' services
    // @Description Give status of partners' services
    // @Tags partnersInfo
    // @Produce  json
    // @Success 200 {object} PartnersInfo
    // @Failure 404 {string} string "Not found"
    // @Router /api/common/partnersInfo [get]
    func (dh *DataHandler) GetPartnersInfo(w http.ResponseWriter, r *http.Request) {
    	var partnersInfo PartnersInfo
    	err := dh.db.First(&partnersInfo).Error
    
    	if errors.Is(err, gorm.ErrRecordNotFound) {
    		http.Error(w, "partners status not found", http.StatusNotFound)
    		return
    	}
    
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(partnersInfo)
    	log.Printf("| get partnersInfo | %v", r.RemoteAddr)
    }
    
    // SavePartnersInfo godoc
    // @Summary Update partnersInfo' content
    // @Description Update partnersInfo' content
    // @Tags partnersInfo
    // @Accept json
    // @Produce json
    // @Success 200 {object} PartnersInfo "Updated successfully"
    // @Failure 400 {string} string "Bad Request"
    // @Failure 500 {string} string "Internal server error"
    // @Param partnersInfo body PartnersInfo true "PartnersInfo to create/update with new content"
    // @Router /api/admin/partnersInfo [put]
    func (dh *DataHandler) SavePartnersInfo(w http.ResponseWriter, r *http.Request) {
    	if r.Body == http.NoBody {
    		http.Error(w, "request body is empty", http.StatusBadRequest)
    		return
    	}
    
    	decoder := json.NewDecoder(r.Body)
    	var partnersInfo PartnersInfo
    	err := decoder.Decode(&partnersInfo)
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    
    	var updatedPartnersInfo PartnersInfo
    
    	err = dh.db.First(&updatedPartnersInfo).Error
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    
    	updatedPartnersInfo.Message = partnersInfo.Message
    	updatedPartnersInfo.GRDFFailure = partnersInfo.GRDFFailure
    	updatedPartnersInfo.EnedisFailure = partnersInfo.EnedisFailure
    	updatedPartnersInfo.EGLFailure = partnersInfo.EGLFailure
    	updatedPartnersInfo.NotificationActivated = partnersInfo.NotificationActivated
    
    	dh.db.Save(&updatedPartnersInfo)
    
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(partnersInfo)
    	log.Printf("| updated partnersInfo | %v", r.RemoteAddr)
    
    }