public CarConfigUserConfiguration Add(CarConfigUserConfiguration userConfiguration, string code) { using var connection = new SqlConnection(ConnectionString); if (Get(code) != null) { throw new Exception("There's already an entry for this code."); } // Delete old product selection for this configuration var insertId = connection.ExecuteScalar <int>( @"INSERT INTO CarConfigUserConfiguration (Code, ModelEAN) output INSERTED.ID VALUES (@code, @carModelEAN);", new { code, carModelEAN = userConfiguration.ModelEAN }); if (insertId <= 0) { throw new Exception("Unknown error while saving the user configuration."); } var newUserConfiguration = GetById(insertId); // Add new selected products InsertProducts(newUserConfiguration.Id, userConfiguration.Products); return(GetById(newUserConfiguration.Id)); }
/// <summary> /// Save a user car model configuration. /// </summary> /// <param name="summary"></param> /// <returns></returns> private CarConfigUserConfiguration SaveConfiguration(CarConfiguratorSummary summary) { var carModelProduct = _productRepository.GetByEAN(summary.SelectedModelEAN); if (carModelProduct == null || carModelProduct.IsOptionProduct) { throw new Exception("Unknown car model."); } var configurationProducts = summary.SelectedOptionProducts.Select(keyValuePair => { var optionId = keyValuePair.Key; var selectedProduct = keyValuePair.Value; var product = _productRepository.GetByEAN(selectedProduct.EAN); return(new CarConfigUserConfigurationProduct(carModelProduct.Id, optionId, product.Id)); }).ToList(); CarConfigUserConfiguration userConfiguration; if (summary.Code != null) { userConfiguration = _carConfigUserConfigurationRepository.Get(summary.Code); userConfiguration.Products = configurationProducts; userConfiguration = _carConfigUserConfigurationRepository.Update(userConfiguration); return(userConfiguration); } var code = Guid.NewGuid().ToString("N"); userConfiguration = new CarConfigUserConfiguration( carModelProduct.EAN, configurationProducts ); userConfiguration = _carConfigUserConfigurationRepository.Add(userConfiguration, code); return(userConfiguration); }
public CarConfigUserConfiguration Update(CarConfigUserConfiguration userConfiguration) { var currentUserConfiguration = Get(userConfiguration.Code); if (currentUserConfiguration == null) { return(null); } using var connection = new SqlConnection(ConnectionString); // Delete old product selection for this configuration connection.Execute( "DELETE FROM CarConfigUserConfigurationProduct WHERE CarConfigUserConfigurationId=@carConfigUserConfigurationId", new { carConfigUserConfigurationId = currentUserConfiguration.Id }); // Add new selected products InsertProducts(currentUserConfiguration.Id, userConfiguration.Products); return(Get(currentUserConfiguration.Code)); }