You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 line
3.4KB

  1. package buildsvc
  2. import "strings"
  3. type GlobalDataInput struct {
  4. CompanyName string
  5. BusinessType string
  6. Username string
  7. Email string
  8. Phone string
  9. OrgNumber string
  10. StartDate string
  11. Mission string
  12. DescriptionShort string
  13. DescriptionLong string
  14. SiteLanguage string
  15. AddressLine1 string
  16. AddressLine2 string
  17. AddressCity string
  18. AddressRegion string
  19. AddressZIP string
  20. AddressCountry string
  21. }
  22. func BuildGlobalData(input GlobalDataInput) map[string]any {
  23. globalData := map[string]any{}
  24. setIfNotEmpty(globalData, "companyName", input.CompanyName)
  25. setIfNotEmpty(globalData, "businessType", input.BusinessType)
  26. setIfNotEmpty(globalData, "username", input.Username)
  27. setIfNotEmpty(globalData, "email", input.Email)
  28. setIfNotEmpty(globalData, "phone", input.Phone)
  29. setIfNotEmpty(globalData, "orgNumber", input.OrgNumber)
  30. setIfNotEmpty(globalData, "startDate", input.StartDate)
  31. setIfNotEmpty(globalData, "mission", input.Mission)
  32. setIfNotEmpty(globalData, "descriptionShort", input.DescriptionShort)
  33. setIfNotEmpty(globalData, "descriptionLong", input.DescriptionLong)
  34. setIfNotEmpty(globalData, "siteLanguage", input.SiteLanguage)
  35. address := map[string]any{}
  36. setIfNotEmpty(address, "line1", input.AddressLine1)
  37. setIfNotEmpty(address, "line2", input.AddressLine2)
  38. setIfNotEmpty(address, "city", input.AddressCity)
  39. setIfNotEmpty(address, "region", input.AddressRegion)
  40. setIfNotEmpty(address, "zip", input.AddressZIP)
  41. setIfNotEmpty(address, "country", input.AddressCountry)
  42. if len(address) > 0 {
  43. globalData["address"] = address
  44. }
  45. return globalData
  46. }
  47. func FilterGlobalData(input map[string]any) map[string]any {
  48. if len(input) == 0 {
  49. return map[string]any{}
  50. }
  51. globalData := map[string]any{}
  52. setStringIfPresent(globalData, "companyName", input["companyName"])
  53. setStringIfPresent(globalData, "businessType", input["businessType"])
  54. setStringIfPresent(globalData, "username", input["username"])
  55. setStringIfPresent(globalData, "email", input["email"])
  56. setStringIfPresent(globalData, "phone", input["phone"])
  57. setStringIfPresent(globalData, "orgNumber", input["orgNumber"])
  58. setStringIfPresent(globalData, "startDate", input["startDate"])
  59. setStringIfPresent(globalData, "mission", input["mission"])
  60. setStringIfPresent(globalData, "descriptionShort", input["descriptionShort"])
  61. setStringIfPresent(globalData, "descriptionLong", input["descriptionLong"])
  62. setStringIfPresent(globalData, "siteLanguage", input["siteLanguage"])
  63. address := map[string]any{}
  64. if rawAddress, ok := input["address"]; ok {
  65. if sourceAddress, ok := rawAddress.(map[string]any); ok {
  66. setStringIfPresent(address, "line1", sourceAddress["line1"])
  67. setStringIfPresent(address, "line2", sourceAddress["line2"])
  68. setStringIfPresent(address, "city", sourceAddress["city"])
  69. setStringIfPresent(address, "region", sourceAddress["region"])
  70. setStringIfPresent(address, "zip", sourceAddress["zip"])
  71. setStringIfPresent(address, "country", sourceAddress["country"])
  72. }
  73. }
  74. if len(address) > 0 {
  75. globalData["address"] = address
  76. }
  77. return globalData
  78. }
  79. func setIfNotEmpty(m map[string]any, key, value string) {
  80. if strings.TrimSpace(value) == "" {
  81. return
  82. }
  83. m[key] = strings.TrimSpace(value)
  84. }
  85. func setStringIfPresent(target map[string]any, key string, raw any) {
  86. value, ok := raw.(string)
  87. if !ok {
  88. return
  89. }
  90. setIfNotEmpty(target, key, value)
  91. }