...

Source file src/edge-infra.dev/pkg/edge/api/graph/mapper/mapper_bsl.go

Documentation: edge-infra.dev/pkg/edge/api/graph/mapper

     1  package mapper
     2  
     3  import (
     4  	"edge-infra.dev/pkg/edge/api/bsl/types"
     5  	"edge-infra.dev/pkg/edge/api/graph/model"
     6  	"edge-infra.dev/pkg/edge/api/utils"
     7  	"edge-infra.dev/pkg/edge/bsl"
     8  )
     9  
    10  const (
    11  	// DefaultLatitude default coordinate latitude value for BSL Site p.s. import cycle import from services
    12  	DefaultLatitude = 90.0
    13  	// DefaultLongitude default coordinate longitude value for BSL Site p.s. import cycle import from services
    14  	DefaultLongitude = 180.0
    15  )
    16  
    17  func ToStoreSiteInfo(site *bsl.BSLInfo) *model.StoreSiteInfo {
    18  	dayparts := make([]*model.Dayparts, 0)
    19  	customAttributeSets := make([]*model.CustomAttributeSets, 0)
    20  	enterpriseSettings := make([]*model.EnterpriseSettings, 0)
    21  	hours := make([]*model.Hours, 0)
    22  	contacts := make([]*model.Contacts, 0)
    23  	for _, daypart := range site.DayParts {
    24  		daypartRef := daypart
    25  		dayparts = append(dayparts, &model.Dayparts{
    26  			Name:        &daypartRef.Name,
    27  			Day:         &daypartRef.Day,
    28  			Description: &daypartRef.Description,
    29  			StartTime:   &daypartRef.StartTime,
    30  			EndTime:     &daypartRef.EndTime,
    31  		})
    32  	}
    33  	for _, customAttributeSet := range site.CustomAttributeSets {
    34  		customAttributeSetRef := customAttributeSet
    35  		attributes := make([]*model.Attributes, 0)
    36  		for _, attribute := range customAttributeSetRef.Attributes {
    37  			attribute := attribute
    38  			attributes = append(attributes, &model.Attributes{
    39  				Key:   &attribute.Key,
    40  				Value: &attribute.Value,
    41  			})
    42  		}
    43  		customAttributeSets = append(customAttributeSets, &model.CustomAttributeSets{
    44  			TypeName:   &customAttributeSetRef.TypeName,
    45  			Attributes: attributes,
    46  		})
    47  	}
    48  	if len(site.EnterpriseSettings) > 0 {
    49  		configurationSettings := make([]*model.ConfigurationSettings, 0)
    50  		for _, enterpriseSetting := range site.EnterpriseSettings {
    51  			enterpriseSettingRef := enterpriseSetting
    52  			if len(enterpriseSettingRef.ConfigurationSettings) > 0 {
    53  				for _, configurationSetting := range enterpriseSettingRef.ConfigurationSettings {
    54  					configurationSetting := configurationSetting
    55  					configurationSettings = append(configurationSettings, &model.ConfigurationSettings{
    56  						Key:   &configurationSetting.Key,
    57  						Value: &configurationSetting.Value,
    58  					})
    59  				}
    60  			}
    61  			enterpriseSettings = append(enterpriseSettings, &model.EnterpriseSettings{
    62  				EnterpriseUnitID: &enterpriseSettingRef.EnterpriseUnitID,
    63  				ConfigurationSetID: &model.ConfigurationSetID{
    64  					Name: &enterpriseSettingRef.ConfigurationSetID.Name,
    65  				},
    66  				ConfigurationSettings: configurationSettings,
    67  			})
    68  		}
    69  	}
    70  	for _, hour := range site.Hours {
    71  		hourRef := hour
    72  		hours = append(hours, &model.Hours{
    73  			Close: &model.Close{
    74  				Day:  &hourRef.Close.Day,
    75  				Time: &hourRef.Close.Time,
    76  			},
    77  			Open: &model.Open{
    78  				Day:  &hourRef.Open.Day,
    79  				Time: &hourRef.Open.Time,
    80  			},
    81  		})
    82  	}
    83  	for k, v := range site.Contacts {
    84  		contacts = append(contacts, &model.Contacts{
    85  			Identifier: k,
    86  			Details: &model.Contact{
    87  				Email:                  &v.Email,
    88  				ContactPerson:          &v.ContactPerson,
    89  				PhoneNumber:            &v.PhoneNumber,
    90  				PhoneNumberCountryCode: &v.PhoneNumberCountryCode,
    91  			},
    92  		},
    93  		)
    94  	}
    95  	return &model.StoreSiteInfo{
    96  		SiteName:           site.SiteName,
    97  		Status:             site.Status,
    98  		EnterpriseUnitName: site.EnterpriseUnitName,
    99  		Coordinates: &model.Coordinates{
   100  			Latitude:  site.Coordinates.Latitude,
   101  			Longitude: site.Coordinates.Longitude,
   102  		},
   103  		Description:            &site.Description,
   104  		ID:                     &site.ID,
   105  		ReferenceID:            &site.ReferenceID,
   106  		TimeZone:               &site.TimeZone,
   107  		ParentEnterpriseUnitID: &site.ParentEnterpriseUnitID,
   108  		OrganizationName:       &site.OrganizationName,
   109  		Locked:                 &site.Locked,
   110  		LastModifiedOn:         &site.LastModifiedOn,
   111  		DeactivatedOn:          &site.DeactivatedOn,
   112  		CreatedOn:              &site.CreatedOn,
   113  		Currency:               &site.Currency,
   114  		Contact: &model.Contact{
   115  			ContactPerson:          &site.Contact.ContactPerson,
   116  			PhoneNumberCountryCode: &site.Contact.PhoneNumberCountryCode,
   117  			PhoneNumber:            &site.Contact.PhoneNumber,
   118  		},
   119  		Contacts: contacts,
   120  		Address: &model.Address{
   121  			Street:     &site.Address.Street,
   122  			City:       &site.Address.City,
   123  			State:      &site.Address.State,
   124  			PostalCode: &site.Address.PostalCode,
   125  			Country:    &site.Address.Country,
   126  		},
   127  		Dayparts:            dayparts,
   128  		CustomAttributeSets: customAttributeSets,
   129  		EnterpriseSettings:  enterpriseSettings,
   130  		Hours:               hours,
   131  	}
   132  }
   133  
   134  func ToBSLInfo(site *model.StoreSiteInfo) *bsl.BSLInfo { //nolint gocyclo
   135  	defaultValue := ""
   136  	defaultBool := false
   137  	dayparts := make([]bsl.DayParts, 0)
   138  	customAttributeSets := make([]bsl.CustomAttributeSet, 0)
   139  	enterpriseSettings := make([]bsl.EnterpriseSetting, 0)
   140  	hours := make([]bsl.Hours, 0)
   141  	contacts := make(map[string]bsl.Contact)
   142  	if utils.IsNullOrEmpty(site.ID) {
   143  		site.ID = &defaultValue
   144  	}
   145  	if utils.IsNullOrEmpty(site.Description) {
   146  		site.Description = &defaultValue
   147  	}
   148  	if utils.IsNullOrEmpty(site.OrganizationName) {
   149  		site.OrganizationName = &defaultValue
   150  	}
   151  	if utils.IsNullOrEmpty(site.ParentEnterpriseUnitID) {
   152  		site.ParentEnterpriseUnitID = &defaultValue
   153  	}
   154  	if utils.IsNullOrEmpty(site.ReferenceID) {
   155  		site.ReferenceID = &defaultValue
   156  	}
   157  	if len(site.Dayparts) > 0 { //nolint nestif
   158  		for _, daypart := range site.Dayparts {
   159  			daypartRef := daypart
   160  			if utils.IsNullOrEmpty(daypartRef.Day) {
   161  				daypartRef.Day = &defaultValue
   162  			}
   163  			if utils.IsNullOrEmpty(daypartRef.Description) {
   164  				daypartRef.Description = &defaultValue
   165  			}
   166  			if utils.IsNullOrEmpty(daypartRef.Name) {
   167  				daypartRef.Name = &defaultValue
   168  			}
   169  			if utils.IsNullOrEmpty(daypartRef.StartTime) {
   170  				daypartRef.StartTime = &defaultValue
   171  			}
   172  			if utils.IsNullOrEmpty(daypartRef.EndTime) {
   173  				daypartRef.EndTime = &defaultValue
   174  			}
   175  			dayparts = append(dayparts, bsl.DayParts{
   176  				Name:        *daypartRef.Name,
   177  				Description: *daypartRef.Description,
   178  				Day:         *daypartRef.Day,
   179  				StartTime:   *daypartRef.StartTime,
   180  				EndTime:     *daypartRef.EndTime,
   181  			})
   182  		}
   183  	}
   184  	if site.Coordinates == nil {
   185  		site.Coordinates = &model.Coordinates{
   186  			Latitude:  DefaultLatitude,
   187  			Longitude: DefaultLongitude,
   188  		}
   189  	}
   190  	if site.Address != nil && utils.IsNullOrEmpty(site.Address.Street) {
   191  		site.Address.Street = &defaultValue
   192  	}
   193  	if site.Address != nil && utils.IsNullOrEmpty(site.Address.City) {
   194  		site.Address.City = &defaultValue
   195  	}
   196  	if site.Address != nil && utils.IsNullOrEmpty(site.Address.State) {
   197  		site.Address.State = &defaultValue
   198  	}
   199  	if site.Address != nil && utils.IsNullOrEmpty(site.Address.Country) {
   200  		site.Address.Country = &defaultValue
   201  	}
   202  	if site.Address != nil && utils.IsNullOrEmpty(site.Address.PostalCode) {
   203  		site.Address.PostalCode = &defaultValue
   204  	}
   205  	if site.Address == nil {
   206  		site.Address = &model.Address{
   207  			City:       &defaultValue,
   208  			Street:     &defaultValue,
   209  			State:      &defaultValue,
   210  			Country:    &defaultValue,
   211  			PostalCode: &defaultValue,
   212  		}
   213  	}
   214  	if site.Contact != nil && utils.IsNullOrEmpty(site.Contact.ContactPerson) {
   215  		site.Contact.ContactPerson = &defaultValue
   216  	}
   217  	if site.Contact != nil && utils.IsNullOrEmpty(site.Contact.PhoneNumber) {
   218  		site.Contact.PhoneNumber = &defaultValue
   219  	}
   220  	if site.Contact != nil && utils.IsNullOrEmpty(site.Contact.PhoneNumberCountryCode) {
   221  		site.Contact.PhoneNumberCountryCode = &defaultValue
   222  	}
   223  	if site.Contact == nil {
   224  		site.Contact = &model.Contact{
   225  			ContactPerson:          &defaultValue,
   226  			PhoneNumber:            &defaultValue,
   227  			PhoneNumberCountryCode: &defaultValue,
   228  		}
   229  	}
   230  	if utils.IsNullOrEmpty(site.Currency) {
   231  		site.Currency = &defaultValue
   232  	}
   233  	if utils.IsNullOrEmpty(site.DeactivatedOn) {
   234  		site.DeactivatedOn = &defaultValue
   235  	}
   236  	if utils.IsNullOrEmpty(site.LastModifiedOn) {
   237  		site.LastModifiedOn = &defaultValue
   238  	}
   239  	if site.Locked == nil {
   240  		site.Locked = &defaultBool
   241  	}
   242  	if utils.IsNullOrEmpty(site.CreatedOn) {
   243  		site.CreatedOn = &defaultValue
   244  	}
   245  	if utils.IsNullOrEmpty(site.TimeZone) {
   246  		site.TimeZone = &defaultValue
   247  	}
   248  	if len(site.CustomAttributeSets) > 0 { //nolint nestif
   249  		for _, _customAttributeSet := range site.CustomAttributeSets {
   250  			customAttributeSetRef := _customAttributeSet
   251  			customAttribute := make([]bsl.Attribute, 0)
   252  			if utils.IsNullOrEmpty(customAttributeSetRef.TypeName) {
   253  				customAttributeSetRef.TypeName = &defaultValue
   254  			}
   255  			if len(customAttributeSetRef.Attributes) > 0 {
   256  				for _, attribute := range customAttributeSetRef.Attributes {
   257  					attributeRef := attribute
   258  					if utils.IsNullOrEmpty(attributeRef.Key) {
   259  						attributeRef.Key = &defaultValue
   260  					}
   261  					if utils.IsNullOrEmpty(attributeRef.Value) {
   262  						attributeRef.Value = &defaultValue
   263  					}
   264  					customAttribute = append(customAttribute, bsl.Attribute{
   265  						Key:   *attributeRef.Key,
   266  						Value: *attributeRef.Value,
   267  					})
   268  				}
   269  			}
   270  			customAttributeSets = append(customAttributeSets, bsl.CustomAttributeSet{
   271  				TypeName:   *customAttributeSetRef.TypeName,
   272  				Attributes: customAttribute,
   273  			})
   274  		}
   275  	}
   276  	if len(site.EnterpriseSettings) > 0 { //nolint nestif
   277  		for _, enterpriseSetting := range site.EnterpriseSettings {
   278  			configurationSettings := make([]bsl.ConfigurationSetting, 0)
   279  			if utils.IsNullOrEmpty(enterpriseSetting.EnterpriseUnitID) {
   280  				enterpriseSetting.EnterpriseUnitID = &defaultValue
   281  			}
   282  			if enterpriseSetting.ConfigurationSetID != nil && utils.IsNullOrEmpty(enterpriseSetting.ConfigurationSetID.Name) {
   283  				enterpriseSetting.ConfigurationSetID.Name = &defaultValue
   284  			}
   285  			if enterpriseSetting.ConfigurationSetID == nil {
   286  				enterpriseSetting.ConfigurationSetID = &model.ConfigurationSetID{
   287  					Name: &defaultValue,
   288  				}
   289  			}
   290  			if len(enterpriseSetting.ConfigurationSettings) > 0 {
   291  				for _, configurationSetting := range enterpriseSetting.ConfigurationSettings {
   292  					configurationSettingRef := configurationSetting
   293  					if utils.IsNullOrEmpty(configurationSettingRef.Key) {
   294  						configurationSettingRef.Key = &defaultValue
   295  					}
   296  					if utils.IsNullOrEmpty(configurationSettingRef.Value) {
   297  						configurationSettingRef.Value = &defaultValue
   298  					}
   299  					configurationSettings = append(configurationSettings, bsl.ConfigurationSetting{
   300  						Key:   *configurationSettingRef.Key,
   301  						Value: *configurationSettingRef.Value,
   302  					})
   303  				}
   304  			}
   305  			enterpriseSettings = append(enterpriseSettings, bsl.EnterpriseSetting{
   306  				EnterpriseUnitID: *enterpriseSetting.EnterpriseUnitID,
   307  				ConfigurationSetID: bsl.ConfigurationSetID{
   308  					Name: *enterpriseSetting.ConfigurationSetID.Name,
   309  				},
   310  				ConfigurationSettings: configurationSettings,
   311  			})
   312  		}
   313  	}
   314  	if len(site.Hours) > 0 { //nolint nestif
   315  		for _, hour := range site.Hours {
   316  			hourRef := hour
   317  			if hourRef.Close != nil && utils.IsNullOrEmpty(hourRef.Close.Day) {
   318  				hourRef.Close.Day = &defaultValue
   319  			}
   320  			if hourRef.Close != nil && utils.IsNullOrEmpty(hourRef.Close.Time) {
   321  				hourRef.Close.Time = &defaultValue
   322  			}
   323  			if hourRef.Close == nil {
   324  				hourRef.Close = &model.Close{}
   325  			}
   326  			if hourRef.Open != nil && utils.IsNullOrEmpty(hourRef.Open.Day) {
   327  				hourRef.Open.Day = &defaultValue
   328  			}
   329  			if hourRef.Open != nil && utils.IsNullOrEmpty(hourRef.Open.Time) {
   330  				hourRef.Open.Time = &defaultValue
   331  			}
   332  			if hourRef.Open == nil {
   333  				hourRef.Open = &model.Open{}
   334  			}
   335  			hours = append(hours, bsl.Hours{
   336  				Close: bsl.SiteHours{
   337  					Day:  *hourRef.Close.Day,
   338  					Time: *hourRef.Close.Time,
   339  				},
   340  				Open: bsl.SiteHours{
   341  					Day:  *hourRef.Open.Day,
   342  					Time: *hourRef.Open.Time,
   343  				},
   344  			})
   345  		}
   346  	}
   347  	for _, contact := range site.Contacts {
   348  		if contact != nil && contact.Details != nil {
   349  			contacts[contact.Identifier] = bsl.Contact{
   350  				Email:                  *contact.Details.Email,
   351  				ContactPerson:          *contact.Details.ContactPerson,
   352  				PhoneNumber:            *contact.Details.PhoneNumber,
   353  				PhoneNumberCountryCode: *contact.Details.PhoneNumberCountryCode,
   354  			}
   355  		}
   356  	}
   357  	return &bsl.BSLInfo{
   358  		ID:                     *site.ID,
   359  		SiteName:               site.SiteName,
   360  		EnterpriseUnitName:     site.EnterpriseUnitName,
   361  		Description:            *site.Description,
   362  		OrganizationName:       *site.OrganizationName,
   363  		ParentEnterpriseUnitID: *site.ParentEnterpriseUnitID,
   364  		ReferenceID:            *site.ReferenceID,
   365  		DayParts:               dayparts,
   366  		Coordinates: bsl.Coordinates{
   367  			Latitude:  site.Coordinates.Latitude,
   368  			Longitude: site.Coordinates.Longitude,
   369  		},
   370  		Address: bsl.Address{
   371  			Street:     *site.Address.Street,
   372  			City:       *site.Address.City,
   373  			State:      *site.Address.State,
   374  			Country:    *site.Address.Country,
   375  			PostalCode: *site.Address.PostalCode,
   376  		},
   377  		Contact: bsl.Contact{
   378  			ContactPerson:          *site.Contact.ContactPerson,
   379  			PhoneNumber:            *site.Contact.PhoneNumber,
   380  			PhoneNumberCountryCode: *site.Contact.PhoneNumberCountryCode,
   381  		},
   382  		Contacts:            contacts,
   383  		Currency:            *site.Currency,
   384  		DeactivatedOn:       *site.DeactivatedOn,
   385  		LastModifiedOn:      *site.LastModifiedOn,
   386  		Locked:              *site.Locked,
   387  		Status:              site.Status,
   388  		CreatedOn:           *site.CreatedOn,
   389  		TimeZone:            *site.TimeZone,
   390  		CustomAttributeSets: customAttributeSets,
   391  		EnterpriseSettings:  enterpriseSettings,
   392  		Hours:               hours,
   393  	}
   394  }
   395  
   396  // ToBSLSite2 converts and maps a model site to a types bslsite2.
   397  func ToBSLSite(site *model.Site, currentSite *types.BslSite) *types.BslSite {
   398  	updatedSite := types.BslSite{
   399  		SiteName:               currentSite.SiteName,
   400  		Status:                 currentSite.Status,
   401  		EnterpriseUnitName:     currentSite.EnterpriseUnitName,
   402  		Coordinates:            currentSite.Coordinates,
   403  		Description:            currentSite.Description,
   404  		ReferenceID:            currentSite.ReferenceID,
   405  		TimeZone:               currentSite.TimeZone,
   406  		ParentEnterpriseUnitID: currentSite.ParentEnterpriseUnitID,
   407  		Locked:                 currentSite.Locked,
   408  		Currency:               currentSite.Currency,
   409  		Address:                currentSite.Address,
   410  		Contact:                currentSite.Contact,
   411  		Dayparts:               currentSite.Dayparts,
   412  		CustomAttributeSets:    currentSite.CustomAttributeSets,
   413  		Hours:                  currentSite.Hours,
   414  		Contacts:               currentSite.Contacts,
   415  	}
   416  
   417  	if site.SiteName != nil {
   418  		updatedSite.SiteName = *site.SiteName
   419  	}
   420  	if site.Status != nil {
   421  		updatedSite.Status = *site.Status
   422  	}
   423  	if site.EnterpriseUnitName != nil {
   424  		updatedSite.EnterpriseUnitName = *site.EnterpriseUnitName
   425  	}
   426  	if site.Coordinates != nil {
   427  		updatedSite.Coordinates = types.Coordinates(*site.Coordinates)
   428  	}
   429  	if site.Description != nil {
   430  		if *site.Description == "" {
   431  			updatedSite.Description = nil
   432  		} else {
   433  			updatedSite.Description = site.Description
   434  		}
   435  	}
   436  	if site.ReferenceID != nil {
   437  		if *site.ReferenceID == "" {
   438  			updatedSite.ReferenceID = nil
   439  		} else {
   440  			updatedSite.ReferenceID = site.ReferenceID
   441  		}
   442  	}
   443  	if site.TimeZone != nil {
   444  		updatedSite.TimeZone = site.TimeZone
   445  	}
   446  	if site.ParentEnterpriseUnitID != nil {
   447  		updatedSite.ParentEnterpriseUnitID = site.ParentEnterpriseUnitID
   448  	}
   449  	if site.Locked != nil {
   450  		updatedSite.Locked = site.Locked
   451  	}
   452  	if site.Currency != nil {
   453  		updatedSite.Currency = site.Currency
   454  	}
   455  	if site.Address != nil {
   456  		updatedSite.Address = toTypeAddress(site.Address)
   457  	}
   458  	if site.Contact != nil {
   459  		updatedSite.Contact = toTypeContact(site.Contact)
   460  	}
   461  	if site.Dayparts != nil {
   462  		updatedSite.Dayparts = toTypeDayparts(site.Dayparts)
   463  	}
   464  	if site.CustomAttributeSets != nil {
   465  		updatedSite.CustomAttributeSets = toTypeCustomAttributeSets(site.CustomAttributeSets)
   466  	}
   467  	if site.Hours != nil {
   468  		updatedSite.Hours = toTypeHours(site.Hours)
   469  	}
   470  	for _, contact := range site.Contacts {
   471  		if contact != nil {
   472  			c := &types.Contact{}
   473  			if contact.Contact.ContactPerson != nil {
   474  				c.ContactPerson = contact.Contact.ContactPerson
   475  			}
   476  			if contact.Contact.Email != nil {
   477  				c.Email = contact.Contact.Email
   478  			}
   479  			if contact.Contact.PhoneNumber != nil {
   480  				c.PhoneNumber = contact.Contact.PhoneNumber
   481  			}
   482  			if contact.Contact.PhoneNumberCountryCode != nil {
   483  				c.PhoneNumberCountryCode = contact.Contact.PhoneNumberCountryCode
   484  			}
   485  			updatedSite.Contacts[contact.Identifier] = c
   486  		}
   487  	}
   488  	return &updatedSite
   489  }
   490  
   491  // toTypeContact converts a model contact input to a type contact.
   492  func toTypeContact(contact *model.ContactInput) *types.Contact {
   493  	return &types.Contact{
   494  		ContactPerson:          contact.ContactPerson,
   495  		PhoneNumber:            contact.PhoneNumber,
   496  		PhoneNumberCountryCode: contact.PhoneNumberCountryCode,
   497  		Email:                  contact.Email,
   498  	}
   499  }
   500  
   501  // toTypeAddress converts model address input to types address.
   502  func toTypeAddress(address *model.AddressInput) *types.Address {
   503  	return &types.Address{
   504  		Street:     address.Street,
   505  		City:       address.City,
   506  		State:      address.State,
   507  		Country:    address.Country,
   508  		PostalCode: address.PostalCode,
   509  	}
   510  }
   511  
   512  // toTypeDayparts converts a model dayparts input to a types dayparts.
   513  func toTypeDayparts(dayparts []*model.DaypartsInput) []*types.Dayparts {
   514  	typeDayparts := make([]*types.Dayparts, 0)
   515  	defaultVal := ""
   516  	if len(dayparts) > 0 { //nolint complexity
   517  		for _, daypart := range dayparts {
   518  			if utils.IsNullOrEmpty(daypart.Day) {
   519  				daypart.Day = &defaultVal
   520  			}
   521  			if utils.IsNullOrEmpty(daypart.Description) {
   522  				daypart.Description = &defaultVal
   523  			}
   524  			if utils.IsNullOrEmpty(daypart.Name) {
   525  				daypart.Name = &defaultVal
   526  			}
   527  			if utils.IsNullOrEmpty(daypart.StartTime) {
   528  				daypart.StartTime = &defaultVal
   529  			}
   530  			if utils.IsNullOrEmpty(daypart.EndTime) {
   531  				daypart.EndTime = &defaultVal
   532  			}
   533  			typeDayparts = append(typeDayparts, &types.Dayparts{
   534  				Day:         daypart.Day,
   535  				Description: daypart.Description,
   536  				Name:        daypart.Name,
   537  				StartTime:   daypart.StartTime,
   538  				EndTime:     daypart.EndTime,
   539  			})
   540  		}
   541  	}
   542  	return typeDayparts
   543  }
   544  
   545  // toTypeCustomAttributeSets converts model custom attribute sets to types custom attribute sets.
   546  func toTypeCustomAttributeSets(customAttributeSets []*model.CustomAttributeSetsInput) []*types.CustomAttributeSets {
   547  	typeCustomAttributeSets := make([]*types.CustomAttributeSets, 0)
   548  	defaultVal := ""
   549  	if len(customAttributeSets) > 0 { //nolint complexity
   550  		for _, customAttributeSet := range customAttributeSets {
   551  			typeAttributes := make([]*types.Attributes, 0)
   552  			if len(customAttributeSet.Attributes) > 0 {
   553  				for _, customAttributeSetVal := range customAttributeSet.Attributes {
   554  					if utils.IsNullOrEmpty(customAttributeSetVal.Key) {
   555  						customAttributeSetVal.Key = &defaultVal
   556  					}
   557  					if utils.IsNullOrEmpty(customAttributeSetVal.Value) {
   558  						customAttributeSetVal.Value = &defaultVal
   559  					}
   560  					typeAttributes = append(typeAttributes, &types.Attributes{
   561  						Key:   customAttributeSetVal.Key,
   562  						Value: customAttributeSetVal.Value,
   563  					})
   564  				}
   565  			}
   566  			typeCustomAttributeSets = append(typeCustomAttributeSets, &types.CustomAttributeSets{
   567  				TypeName:   customAttributeSet.TypeName,
   568  				Attributes: typeAttributes,
   569  			})
   570  		}
   571  	}
   572  	return typeCustomAttributeSets
   573  }
   574  
   575  // toTypeHours converts model hour input to type hour without setting default values.
   576  func toTypeHours(hours []*model.HoursInput) []*types.Hours {
   577  	typeHours := make([]*types.Hours, 0)
   578  	if len(hours) > 0 {
   579  		for _, hour := range hours {
   580  			hour := hour
   581  			typeHours = append(typeHours, &types.Hours{
   582  				Close: &types.Close{
   583  					Day:  hour.Close.Day,
   584  					Time: hour.Close.Time,
   585  				},
   586  				Open: &types.Open{
   587  					Day:  hour.Open.Day,
   588  					Time: hour.Open.Time,
   589  				},
   590  			})
   591  		}
   592  	}
   593  	return typeHours
   594  }
   595  

View as plain text