Language changes in all 3 api : GWM

This commit is contained in:
Gowtham M 2025-01-27 16:00:40 +05:30
parent b6d8c51394
commit f7f87ef47d
3 changed files with 72 additions and 28 deletions

100
main.go
View File

@ -405,6 +405,8 @@ func main() {
e.Router.GET("/api/getDataSet", func(c echo.Context) error {
dataset := c.QueryParam("dataset")
language := c.QueryParam("language")
langKey := "value_" + language
if dataset == "" {
return c.JSON(http.StatusBadRequest, map[string]string{"error": "dataset is required"})
}
@ -474,9 +476,10 @@ func main() {
chartData = filterDynamicChartData(chartData, keyToFilter, valueToExclude)
}
langKey := "value_en"
cRes := utils.ProcessChartData(chartData, languageSourceConverted, langKey)
chartHeadingKey := "chart_heading_" + language
tabHeadingKey := "tab_heading_" + language
// Prepare the structure with URL and its response
recordResult := map[string]interface{}{
"url": apiURL,
@ -488,7 +491,8 @@ func main() {
"chart_type": record.GetString("chart_type"),
"response": cRes,
"group_by": record.GetString("group_by"),
"chart_heading": record.GetString("chart_heading"),
"chart_heading": record.GetString(chartHeadingKey),
"tab_heading": record.GetString(tabHeadingKey),
"unset_value": record.Get("unset_value"),
}
@ -496,6 +500,7 @@ func main() {
aggregatedResponse = append(aggregatedResponse, recordResult)
}
//--------------------
// get all filter based on kpi
var dataSetKpis []struct {
@ -513,7 +518,7 @@ func main() {
filterData, err := fetchfilterJSON(kpi)
// Translate filter data using the desired dataset and language key
fRes, err := TranslateFilters(app, dataset, filterData, "value_en")
fRes, err := TranslateFilters(app, dataset, filterData, langKey)
if err != nil {
log.Fatalf("Error translating filters: %v", err)
}
@ -521,12 +526,10 @@ func main() {
aggregatedFilterResponse[kpi] = fRes
}
temp, err := fetchfilterJSON(dataset)
//--------------------
// Create the response structure
response := map[string]interface{}{
"filter_data": temp,
"new_filter_data": aggregatedFilterResponse,
"data": aggregatedResponse,
}
@ -540,18 +543,21 @@ func main() {
e.Router.GET("/api/getHomePageData", func(c echo.Context) error {
language := c.QueryParam("language")
// Define the struct for holding the query results
mainTopics := []struct {
MainTopic string `db:"main_topic" json:"main_topic"`
MainTopicEn string `db:"main_topic_en" json:"main_topic_en"`
MainTopicAr string `db:"main_topic_ar" json:"main_topic_ar"`
MainTopicListOrder string `db:"main_topic_list_order" json:"main_topic_list_order"`
ColorPattern string `db:"color_pattern" json:"color_pattern"`
}{}
// Execute the query
err := app.DB().
Select("main_topic", "main_topic_list_order", "color_pattern").
Select("main_topic_en", "main_topic_ar", "main_topic_list_order", "color_pattern").
From("home_screen").
GroupBy("main_topic", "color_pattern").
GroupBy("main_topic_en", "main_topic_ar", "color_pattern").
OrderBy("main_topic_list_order ASC").
All(&mainTopics)
@ -579,10 +585,12 @@ func main() {
DataSetListOrder string `db:"data_set_list_order" json:"data_set_list_order"`
}{}
languageSpecificColumn := "data_set_tile_heading_" + language
query := ` SELECT data_set,` + languageSpecificColumn + ` AS data_set_tile_heading,value_source,value, data_set_list_order FROM home_screen WHERE main_topic_en = {:topic}`
err := app.DB().
NewQuery("SELECT data_set, data_set_tile_heading, value_source, value, data_set_list_order FROM home_screen WHERE main_topic={:topic} ").
NewQuery(query).
Bind(dbx.Params{
"topic": mainTopic.MainTopic,
"topic": mainTopic.MainTopicEn,
}).
All(&dataSets)
@ -591,9 +599,16 @@ func main() {
continue
}
var MainTopic string
if language == "en" {
MainTopic = mainTopic.MainTopicEn
} else {
MainTopic = mainTopic.MainTopicAr
}
// Add the main topic and its sub-topics to the result
result = append(result, map[string]interface{}{
"main_topic": mainTopic.MainTopic,
"main_topic": MainTopic,
"main_topic_list_order": mainTopic.MainTopicListOrder,
"color_pattern": mainTopic.ColorPattern,
"tile_data": dataSets,
@ -607,18 +622,21 @@ func main() {
e.Router.GET("/api/getUAENumbersData", func(c echo.Context) error {
language := c.QueryParam("language")
// Define the struct for holding the query results
mainTopics := []struct {
MainTopic string `db:"main_topic" json:"main_topic"`
MainTopicEn string `db:"main_topic_en" json:"main_topic_en"`
MainTopicAr string `db:"main_topic_ar" json:"main_topic_ar"`
MainTopicListOrder string `db:"main_topic_list_order" json:"main_topic_list_order"`
ColorPattern string `db:"color_pattern" json:"color_pattern"`
}{}
// Execute the query
err := app.DB().
Select("main_topic", "main_topic_list_order", "color_pattern").
Select("main_topic_en", "main_topic_ar", "main_topic_list_order", "color_pattern").
From("uae_numbers_screen").
GroupBy("main_topic", "color_pattern").
GroupBy("main_topic_en", "main_topic_ar", "color_pattern").
OrderBy("main_topic_list_order ASC").
All(&mainTopics)
@ -637,22 +655,24 @@ func main() {
// Loop through main topics and fetch sub-topic data for each
for _, mainTopic := range mainTopics {
subTopics := []struct {
SubTopic string `db:"sub_topic" json:"sub_topic"`
SubTopicEn string `db:"sub_topic_en" json:"sub_topic_en"`
SubTopicAr string `db:"sub_topic_ar" json:"sub_topic_ar"`
SubTopicListOrder string `db:"sub_topic_list_order" json:"sub_topic_list_order"`
}{}
// Query to get sub-topics for the current main topic
err := app.DB().
Select("sub_topic", "sub_topic_list_order").
Select("sub_topic_en", "sub_topic_ar", "sub_topic_list_order").
From("uae_numbers_screen").
Where(dbx.HashExp{"main_topic": mainTopic.MainTopic}).
GroupBy("sub_topic").
Where(dbx.HashExp{"main_topic_en": mainTopic.MainTopicEn}).
GroupBy("sub_topic_en", "sub_topic_ar").
OrderBy("sub_topic_list_order ASC").
All(&subTopics)
if err != nil {
log.Printf("Failed to fetch sub-topics for main topic %s: %v", mainTopic.MainTopic, err)
log.Printf("Failed to fetch sub-topics for main topic %s: %v", mainTopic.MainTopicEn, err)
continue
}
@ -668,29 +688,53 @@ func main() {
DataSetListOrder string `db:"data_set_list_order" json:"data_set_list_order"`
}{}
// Query to get data-set for the current sub topic
languageSpecificColumn := "data_set_tile_heading_" + language
query := ` SELECT data_set,` + languageSpecificColumn + ` AS data_set_tile_heading,value_source,value, data_set_list_order FROM uae_numbers_screen WHERE sub_topic_en = {:topic}`
err := app.DB().
Select("data_set", "data_set_tile_heading", "value_source", "value", "data_set_list_order").
From("uae_numbers_screen").
Where(dbx.HashExp{"sub_topic": subTopic.SubTopic}).
OrderBy("data_set_list_order ASC").
NewQuery(query).
Bind(dbx.Params{
"topic": subTopic.SubTopicEn,
}).
All(&dataSets)
// languageSpecificColumn := "data_set_tile_heading_" + language
// // Query to get data-set for the current sub topic
// err := app.DB().
// Select("data_set", languageSpecificColumn, "value_source", "value", "data_set_list_order").
// From("uae_numbers_screen").
// Where(dbx.HashExp{"sub_topic_en": subTopic.SubTopicEn}).
// OrderBy("data_set_list_order ASC").
// All(&dataSets)
if err != nil {
log.Printf("Failed to fetch data-set for sub topic %s: %v", subTopic.SubTopic, err)
log.Printf("Failed to fetch data-set for sub topic %s: %v", subTopic.SubTopicEn, err)
continue
}
var SubTopic string
if language == "en" {
SubTopic = subTopic.SubTopicEn
} else {
SubTopic = subTopic.SubTopicAr
}
result2 = append(result2, map[string]interface{}{
"sub_topic": subTopic.SubTopic,
"sub_topic": SubTopic,
"sub_topic_list_order": subTopic.SubTopicListOrder,
"tile_data": dataSets,
})
}
var MainTopic string
if language == "en" {
MainTopic = mainTopic.MainTopicEn
} else {
MainTopic = mainTopic.MainTopicAr
}
// Add the main topic and its sub-topics to the result
result = append(result, map[string]interface{}{
"main_topic": mainTopic.MainTopic,
"main_topic": MainTopic,
"main_topic_list_order": mainTopic.MainTopicListOrder,
"color_pattern": mainTopic.ColorPattern,
"sub_topics": result2,

Binary file not shown.

Binary file not shown.