Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

104 рядки
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. }