Skip to content
Snippets Groups Projects
partnersInfo.go 2.54 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"`
    	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.sqlClient.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/animator/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.sqlClient.First(&updatedPartnersInfo).Error
    
    	if err != nil {
    		w.WriteHeader(http.StatusInternalServerError)
    		return
    	}
    
    	updatedPartnersInfo.GRDFFailure = partnersInfo.GRDFFailure
    	updatedPartnersInfo.EnedisFailure = partnersInfo.EnedisFailure
    	updatedPartnersInfo.EGLFailure = partnersInfo.EGLFailure
    	updatedPartnersInfo.NotificationActivated = partnersInfo.NotificationActivated
    
    
    	dh.sqlClient.Save(&updatedPartnersInfo)
    
    
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(partnersInfo)
    	log.Printf("| updated partnersInfo | %v", r.RemoteAddr)
    
    }