diff --git a/buildtime/cmd/main.go b/buildtime/cmd/main.go
index 8aef96a..330f2d2 100644
--- a/buildtime/cmd/main.go
+++ b/buildtime/cmd/main.go
@@ -10,7 +10,7 @@ import (
)
func main() {
- log.Println("Starting XCPQ Editor Service")
+ log.Println("Starting SimplyCPQ Editor Services")
log.Println("Reading configuration")
config := config.InitConfig("config")
log.Println("Initializing database")
@@ -19,5 +19,5 @@ func main() {
httpServer := server.InitHttpServer(config, dbHandler)
httpServer.Start()
- log.Println("XCPQ Editor Service Stopped")
+ log.Println("SimplyCPQ Editor Services Stopped")
}
diff --git a/buildtime/cmd/server/httpServer.go b/buildtime/cmd/server/httpServer.go
index 032a1c3..a43af65 100644
--- a/buildtime/cmd/server/httpServer.go
+++ b/buildtime/cmd/server/httpServer.go
@@ -56,7 +56,7 @@ func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
// static content
router.Static("/static", "../static")
router.GET("/", mainHandler.Home)
- router.GET("/properties/rootnodes", propertyTypeHandler.GetRootPropertyTypeGroups)
+ router.GET("/properties/:id/childs", propertyTypeHandler.GetPropertyTypeGroupContentById)
//router.GET("/properties", handler.PropertiesHandler)
/* old routes
diff --git a/buildtime/internal/handler/propertyTypeHandler.go b/buildtime/internal/handler/propertyTypeHandler.go
index 142504b..e072b29 100644
--- a/buildtime/internal/handler/propertyTypeHandler.go
+++ b/buildtime/internal/handler/propertyTypeHandler.go
@@ -2,6 +2,7 @@ package handlers
import (
"SimplyCPQ2/internal/services"
+ "strconv"
"github.com/gin-gonic/gin"
)
@@ -16,6 +17,40 @@ func NewPropertyTypeHandler(propertyTypeService *services.PropertyTypeService) *
}
}
+// Dummy Methode
func (h *PropertyTypeHandler) GetRootPropertyTypeGroups(ctx *gin.Context) {
// Implement the logic to get root property types groups here
}
+
+func (h *PropertyTypeHandler) GetPropertyTypeGroupContentById(ctx *gin.Context) {
+ idParam := ctx.Param("id")
+ // Convert idParam to an integer
+ id, err := strconv.Atoi(idParam)
+ if err != nil {
+ ctx.JSON(400, gin.H{"error": "Invalid ID"})
+ return
+ }
+
+ // get property type groups by parent ID
+ ptgs, err := h.propertyTypeService.GetPropertyTypeGroupsByParentId(id)
+ if err != nil {
+ ctx.JSON(500, gin.H{"error": "Failed to get property type group content"})
+ return
+ }
+
+ // get property types by parent ID
+ pts, err := h.propertyTypeService.GetPropertyTypesByGroupId(id)
+ if err != nil {
+ ctx.JSON(500, gin.H{"error": "Failed to get property types"})
+ return
+ }
+
+ // template for response
+
+ ctx.JSON(200, gin.H{
+ "propertyTypeGroups": ptgs,
+ "propertyTypes": pts,
+ })
+
+ // Implement the logic to get property type group content by ID here using idParam
+}
diff --git a/buildtime/internal/repositories/propertyRepository.go b/buildtime/internal/repositories/propertyRepository.go
index 01ba48c..bda2728 100644
--- a/buildtime/internal/repositories/propertyRepository.go
+++ b/buildtime/internal/repositories/propertyRepository.go
@@ -128,10 +128,10 @@ func (r *PropertyRepository) GetPropertiesByParentPropertyID(pid int) ([]models.
return properties, nil
}
-func (r *PropertyRepository) GetPropertiesByPropertyTypeID(pid int) ([]models.Property, error) {
+func (r *PropertyRepository) GetPropertyByPropertyTypeID(pid int) (models.Property, error) {
rows, err := r.db.Query("SELECT id, name, description, image_url, parent_property_id, property_type_id, product_groups_id, products_id FROM properties WHERE property_type_id = ?", pid)
if err != nil {
- return nil, err
+ return models.Property{}, err
}
defer rows.Close()
@@ -140,7 +140,7 @@ func (r *PropertyRepository) GetPropertiesByPropertyTypeID(pid int) ([]models.Pr
var property models.Property
err := rows.Scan(&property.Id, &property.Name, &property.Description, &property.ImageURL, &property.ParentPropertyId, &property.PropertyTypeId, &property.ProductGroupId, &property.ProductId)
if err != nil {
- return nil, err
+ return models.Property{}, err
}
if cachedProperty, ok := r.cache[property.Id]; ok {
properties = append(properties, cachedProperty)
@@ -150,7 +150,10 @@ func (r *PropertyRepository) GetPropertiesByPropertyTypeID(pid int) ([]models.Pr
}
}
if err := rows.Err(); err != nil {
- return nil, err
+ return models.Property{}, err
}
- return properties, nil
+ if len(properties) == 0 {
+ return models.Property{}, nil
+ }
+ return properties[0], nil
}
diff --git a/buildtime/internal/repositories/propertyTypeGroupRepository.go b/buildtime/internal/repositories/propertyTypeGroupRepository.go
index bf6f36f..819cd43 100644
--- a/buildtime/internal/repositories/propertyTypeGroupRepository.go
+++ b/buildtime/internal/repositories/propertyTypeGroupRepository.go
@@ -33,6 +33,32 @@ func (r *PropertyTypeGroupRepository) GetPropertyTypeGroupByID(id int) (models.P
return value, nil
}
+func (r *PropertyTypeGroupRepository) GetPropertyTypesByGroupId(gid int) ([]models.PropertyTypeGroup, error) {
+ rows, err := r.db.Query("SELECT id, name, description, parenz_property_typw_goup_id, image_url FROM property_type_groups WHERE parenz_property_typw_goup_id = ?", gid)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+
+ var groups []models.PropertyTypeGroup
+ for rows.Next() {
+ var value models.PropertyTypeGroup
+ err := rows.Scan(&value.Id, &value.Name, &value.Description, &value.ParentPropertyTypeGroupId, &value.ImageURL)
+ if err != nil {
+ return nil, err
+ }
+ if _, ok := r.cache[value.Id]; !ok {
+ r.cache[value.Id] = value
+ }
+
+ groups = append(groups, value)
+ }
+ if err = rows.Err(); err != nil {
+ return nil, err
+ }
+ return groups, nil
+}
+
func (r *PropertyTypeGroupRepository) CreatePropertyTypeGroup(value models.PropertyTypeGroup) (models.PropertyTypeGroup, error) {
result, err := r.db.Exec("INSERT INTO property_type_groups (name) VALUES (?)", value.Name)
if err != nil {
diff --git a/buildtime/internal/services/propertyTypeService.go b/buildtime/internal/services/propertyTypeService.go
index a5cd082..fb4c36c 100644
--- a/buildtime/internal/services/propertyTypeService.go
+++ b/buildtime/internal/services/propertyTypeService.go
@@ -1,18 +1,41 @@
package services
import (
+ "SimplyCPQ2/internal/models"
"SimplyCPQ2/internal/repositories"
)
type PropertyTypeService struct {
// Add any dependencies or fields needed for the service here
+ values_Repository *repositories.ValueRepository
+ Property_Repository *repositories.PropertyRepository
PropertyTypes_Repository *repositories.PropertyTypeRepository
PropertyTypeGroups_Repository *repositories.PropertyTypeGroupRepository
}
-func NewPropertyTypeService(propertyTypesRepo *repositories.PropertyTypeRepository, propertyTypesGroupsRepo *repositories.PropertyTypeGroupRepository) *PropertyTypeService {
+func NewPropertyTypeService(propertyRepo *repositories.PropertyRepository, propertyTypesRepo *repositories.PropertyTypeRepository, propertyTypesGroupsRepo *repositories.PropertyTypeGroupRepository, valuesRepo *repositories.ValueRepository) *PropertyTypeService {
return &PropertyTypeService{
+ Property_Repository: propertyRepo,
PropertyTypes_Repository: propertyTypesRepo,
PropertyTypeGroups_Repository: propertyTypesGroupsRepo,
+ values_Repository: valuesRepo,
}
}
+
+// Getter functions
+
+func (service *PropertyTypeService) GetPropertyTypeGroupsByParentId(parentId int) ([]models.PropertyTypeGroup, error) {
+ return service.PropertyTypeGroups_Repository.GetPropertyTypesByGroupId(parentId)
+}
+
+func (service *PropertyTypeService) GetPropertyTypesByGroupId(id int) ([]models.PropertyType, error) {
+ return service.PropertyTypes_Repository.GetPropertyTypesByGroupID(id)
+}
+
+func (service *PropertyTypeService) GetPropertyByTypeId(id int) (models.Property, error) {
+ return service.Property_Repository.GetPropertyByPropertyTypeID(id)
+}
+
+func (service *PropertyTypeService) GetValuesByPropertyId(id int) ([]models.Value, error) {
+ return service.values_Repository.GetValuesByPropertyId(id)
+}
diff --git a/buildtime/templates/pages/index copy.html b/buildtime/templates/pages/index copy.html
new file mode 100644
index 0000000..b85fa6a
--- /dev/null
+++ b/buildtime/templates/pages/index copy.html
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+ Simply CPQ Material Editor V2
+
+
+
+
+
+
+
+
Property-Type Group
+
+
+
+
+
Values für {PropertyTypeName}
+
+
+
+
+ | ID |
+ Value |
+ Description |
+ Actions |
+
+
+ | 1 |
+ Value 1 |
+ Description 1 |
+
+
+
+
+
+ |
+
+
+ | 2 |
+ Value 2 |
+ Description 2 |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/buildtime/templates/pages/index.html b/buildtime/templates/pages/index.html
index b85fa6a..2a1eafa 100644
--- a/buildtime/templates/pages/index.html
+++ b/buildtime/templates/pages/index.html
@@ -7,6 +7,7 @@
+
Simply CPQ Material Editor V2
@@ -19,15 +20,13 @@