Пример #1
0
func (av *AcesVehicle) getCurtVehicles(configMap map[int]interface{}) (products.Lookup, error) { //get CURT vehicles
	var l products.Lookup
	var err error
	db, err := sql.Open("mysql", database.ConnectionString())
	if err != nil {
		return l, err
	}
	defer db.Close()
	stmt, err := db.Prepare(getCurtVehiclesPreConfig)
	if err != nil {
		return l, err
	}
	defer stmt.Close()
	res, err := stmt.Query(av.AAIABaseVehicleID, av.AAIASubmodelID)
	if err != nil {
		return l, err
	}

	var sub, configKey, configValue *string
	var subID, configKeyID, configValueID, acesConfigValID *int
	var cv CurtVehicle

	// var pco products.ConfigurationOption
	var vehicleConfig products.Configuration

	// pcoMap := make(map[string][]string)

	for res.Next() {

		err = res.Scan(
			&cv.ID,
			&cv.BaseVehicle.ModelID,
			&cv.BaseVehicle.ModelName,
			&cv.BaseVehicle.MakeID,
			&cv.BaseVehicle.MakeName,
			&cv.BaseVehicle.YearID,
			&subID,
			&sub,
			&configKey,
			&configKeyID,
			&configValue,
			&configValueID,
			&acesConfigValID,
		)
		if subID != nil {
			cv.Submodel.ID = *subID
		}
		if sub != nil {
			cv.Submodel.Name = *sub
		}
		if configKey != nil {
			cv.Configuration.Type = *configKey
		}
		if configValue != nil {
			cv.Configuration.Value = *configValue
		}
		if configKeyID != nil {
			cv.Configuration.TypeID = *configKeyID
		}
		if configValueID != nil {
			cv.Configuration.ValueID = *configValueID
		}
		if acesConfigValID != nil {
			cv.Configuration.AcesValueID = *acesConfigValID
		}

		// log.Print(configMap)

		// //configs - assign to map, flag
		// configValFlag := true
		// if vs, ok := pcoMap[cv.Configuration.Type]; ok {
		// 	for _, v := range vs {
		// 		if v == cv.Configuration.Value {
		// 			configValFlag = false
		// 		}
		// 	}
		// }
		// if configValFlag == true {
		// 	if name, ok := configMap[cv.Configuration.TypeID]; ok {
		// 		//configMap contains this config type

		// 		if cv.Configuration.AcesValueID == name {
		// 			pcoMap[cv.Configuration.Type] = append(pcoMap[cv.Configuration.Type], cv.Configuration.Value)

		// 			//vehicleConfigs (not l.ConfugurationOption)
		// 			vehicleConfig.Key = cv.Configuration.Type
		// 			vehicleConfig.Value = cv.Configuration.Value
		// 			l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig)
		// 		}
		// 	} else {
		// 		pcoMap[cv.Configuration.Type] = append(pcoMap[cv.Configuration.Type], cv.Configuration.Value)

		// 		//vehicleConfigs (not l.ConfugurationOption)
		// 		vehicleConfig.Key = cv.Configuration.Type
		// 		vehicleConfig.Value = cv.Configuration.Value
		// 		l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig)
		// 	}

		// }

		l.Vehicle.Base.Make = cv.BaseVehicle.MakeName
		l.Vehicle.Base.Model = cv.BaseVehicle.ModelName
		l.Vehicle.Base.Year = cv.BaseVehicle.YearID
		l.Vehicle.Submodel = cv.Submodel.Name

	} //end scan loop
	defer res.Close()

	//assign configs
	// for key, val := range pcoMap {
	// 	pco.Type = key
	// 	pco.Options = val
	// 	l.Configurations = append(l.Configurations, pco)
	// }

	//NEW
	curtConfigMap, err := getCurtConfigMapFromAcesConfigMap(configMap)
	if err != nil {
		return l, err
	}
	for configType, config := range curtConfigMap {
		vehicleConfig.Key = configType
		vehicleConfig.Value = config
		l.Vehicle.Configurations = append(l.Vehicle.Configurations, vehicleConfig)
	}

	l.Makes = append(l.Makes, l.Vehicle.Base.Make)
	l.Models = append(l.Models, l.Vehicle.Base.Model)
	l.Years = append(l.Years, l.Vehicle.Base.Year)
	l.Submodels = append(l.Submodels, l.Vehicle.Submodel)

	return l, err
}