public void TestActiveAtSpecificationSameEndDate() { var productSpecification1 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-5), ActiveUntil = DateTime.MaxValue }; var productSpecification2 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-4), ActiveUntil = DateTime.MaxValue }; var productSpecification3 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-3), ActiveUntil = DateTime.MaxValue }; var product = new Product { ProductSpecifications = new Collection<ProductSpecification> { productSpecification1, productSpecification2, productSpecification3 } }; var actual = product.ActiveAt(DateTime.Now.AddDays(-4)); Assert.AreEqual(productSpecification2, actual); }
public void TestAttributesCanBeRetrievedDynamicallyWithSpaces() { var expected = 2.80M.ToString(CultureInfo.CurrentCulture); var productSpecification = new ProductSpecification { ProductAttributes = new Collection<ProductAttribute> { new ProductAttribute { AttributeType = new ProductAttributeType { Name = "Price GBP" }, Value = expected } } }; var actual = productSpecification.Attributes.PriceGBP; Assert.AreEqual(expected, actual); }
public void TestActiveAtSpecification() { var productSpecification1 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-3), ActiveUntil = DateTime.Now.AddDays(3) }; var productSpecification2 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-6), ActiveUntil = DateTime.Now.AddDays(-3) }; var productSpecification3 = new ProductSpecification { ActiveFrom = DateTime.Now.AddDays(-9), ActiveUntil = DateTime.Now.AddDays(-6) }; var product = new Product { ProductSpecifications = new Collection<ProductSpecification> { productSpecification1, productSpecification2, productSpecification3 } }; var actual = product.ActiveAt(DateTime.Now.AddDays(-8)); Assert.AreEqual(productSpecification3, actual); }
public void TestCreateProduct() { var fakeCategory = new ProductCategory(); var fakeSpecification = new ProductSpecification(); var actual = this._target.CreateProduct(fakeSpecification, fakeCategory); Assert.IsNotNull(actual); Assert.AreEqual(fakeCategory, actual.Category); Assert.IsTrue(actual.ProductSpecifications.Any(ps => ps == fakeSpecification)); Assert.IsTrue(this._products.Any()); }
/// <summary> /// Initializes a new instance of the <see cref="ProductBaseData"/> class. /// </summary> /// <param name="specificationKeys">The specification keys.</param> public ProductBaseData(IEnumerable<string> specificationKeys) { this.specifications = new ProductSpecification(specificationKeys); }
/// <summary> /// Find and return the unique Item object. By executing SELECT command. /// </summary> /// <param name="itemId">Unique item id</param> /// <returns>Item object</returns> public Item retrieveItem(int itemId) { string query = "SELECT p.name, p.manufacture, p.description, i.price " + "FROM Item AS i " + "LEFT JOIN ProdSpec AS p " + "ON i.specid = p.specid " + "WHERE i.itemId = " + itemId; //Create a list to store the result List<string>[] list = new List<string>[4]; for (int i = 0; i < 4; i++) list[i] = new List<string>(); //Open connection if (this.OpenConnection() == true) { //Create Command MySqlCommand cmd = new MySqlCommand(query, connection); //Create a data reader and Execute the command using (MySqlDataReader dataReader = cmd.ExecuteReader()) { //Read the data and store them in the list while (dataReader.Read()) { list[0].Add(dataReader["name"] + ""); list[1].Add(dataReader["manufacture"] + ""); list[2].Add(dataReader["description"] + ""); list[3].Add(dataReader["price"] + ""); } } //close Connection this.CloseConnection(); } if (list[0].Count == 0 || list[0].Count > 1) { MessageBox.Show("Invalid item id."); return null; } ProductSpecification spec = new ProductSpecification(list[0][0], list[1][0], list[2][0]); Item item = new Item(itemId, spec, Convert.ToDecimal(list[3][0])); return item; }
public void UpdateProductSpecification(string description, IEnumerable <KeyValuePair <int, string> > specificationValues) { ProductSpecification = new ProductSpecification(description, specificationValues); }
public object InsertUpdateProductSpecification(ProductSpecification productSpecification) { SqlParameter outputStatus, outputCode = null; try { using (SqlConnection con = _databaseFactory.GetDBConnection()) { using (SqlCommand cmd = new SqlCommand()) { if (con.State == ConnectionState.Closed) { con.Open(); } cmd.Connection = con; cmd.CommandText = "[PSA].[InsertUpdateProductSpecification]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@IsUpdate", SqlDbType.Bit).Value = productSpecification.IsUpdate; if (productSpecification.Code == 0) { cmd.Parameters.AddWithValue("@Code", DBNull.Value); } else { cmd.Parameters.Add("@Code", SqlDbType.Int).Value = productSpecification.Code; } cmd.Parameters.Add("@Description", SqlDbType.VarChar, 200).Value = productSpecification.Description; cmd.Parameters.Add("@CreatedBy", SqlDbType.NVarChar, 250).Value = productSpecification.PSASysCommon.CreatedBy; cmd.Parameters.Add("@CreatedDate", SqlDbType.DateTime).Value = productSpecification.PSASysCommon.CreatedDate; cmd.Parameters.Add("@UpdatedBy", SqlDbType.NVarChar, 250).Value = productSpecification.PSASysCommon.UpdatedBy; cmd.Parameters.Add("@UpdatedDate", SqlDbType.DateTime).Value = productSpecification.PSASysCommon.UpdatedDate; outputStatus = cmd.Parameters.Add("@Status", SqlDbType.SmallInt); outputStatus.Direction = ParameterDirection.Output; outputCode = cmd.Parameters.Add("@CodeOut", SqlDbType.VarChar, 5); outputCode.Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); } } switch (outputStatus.Value.ToString()) { case "0": throw new Exception(productSpecification.IsUpdate ? _appConst.UpdateFailure : _appConst.InsertFailure); case "1": productSpecification.Code = int.Parse(outputCode.Value.ToString()); return(new { Code = outputCode.Value.ToString(), Status = outputStatus.Value.ToString(), Message = productSpecification.IsUpdate ? _appConst.UpdateSuccess : _appConst.InsertSuccess }); } } catch (Exception ex) { throw ex; } return(new { Code = outputCode.Value.ToString(), Status = outputStatus.Value.ToString(), Message = productSpecification.IsUpdate ? _appConst.UpdateSuccess : _appConst.InsertSuccess }); }
protected override async void HandlingBarcode(string barcode) { if (string.IsNullOrEmpty(barcode)) { return; } try { IRepository <SerialNumber> serialNumberRepository = new SqlSerialNumberRepository(); bool isSerialNumber = await serialNumberRepository.AnyAsync( where : SerialNumberSpecification.GetSerialNumbersValue(barcode)); MovementGoodsInfo temp = MovementGoodsInfosList .FirstOrDefault(m => m.Product.SerialNumbersCollection.Any(s => string.IsNullOrEmpty(s.Value))); if (temp != null && !isSerialNumber) { throw new Exception("Сначала нужно указать серийный номер к товару: \"" + temp.Product.Title + "\".\nЕсли это был серийный номер попробуйте указать его еще раз, использовать другой серийный номер, или ввести вручную"); } if (temp != null) { temp.Product.SerialNumbersCollection.FirstOrDefault(s => string.IsNullOrEmpty(s.Value)).Value = barcode; return; } MovementGoodsInfo movementGoodsInfo; if (isSerialNumber) { SerialNumberViewModel serialNumber = new SerialNumberViewModel( await serialNumberRepository.GetItemAsync( where : SerialNumberSpecification.GetSerialNumbersValue(barcode), include: (s => s.Product, new Expression <Func <object, object> >[] { p => ((Product)p).UnitStorage })), MovementGoodsReport.IdDisposalStore); movementGoodsInfo = MovementGoodsInfosList.FirstOrDefault(m => m.IdProduct == serialNumber.IdProduct); if (movementGoodsInfo == null) { movementGoodsInfo = await CreateMovementGoodInfoAsync(serialNumber.Product); MovementGoodsInfosList.Add(movementGoodsInfo); } serialNumber.Product = movementGoodsInfo.Product; movementGoodsInfo.Product.SerialNumbersCollection.Add(serialNumber); movementGoodsInfo.Count++; movementGoodsInfo.Product.SerialNumbersCollection.Last().Value = movementGoodsInfo.Product.SerialNumbersCollection.Last().Value; return; } IRepository <Product> productRepository = new SqlProductRepository(); Product product = await productRepository.GetItemAsync( where : ProductSpecification.GetProductsByBarcode(barcode), include : (p => p.UnitStorage, null)); if (product == null) { throw new Exception("Товар не найден"); } movementGoodsInfo = MovementGoodsInfosList.FirstOrDefault(m => m.IdProduct == product.Id); if (movementGoodsInfo == null) { movementGoodsInfo = await CreateMovementGoodInfoAsync(product); MovementGoodsInfosList.Add(movementGoodsInfo); } if (!product.UnitStorage.IsWeightGoods) { movementGoodsInfo.Count++; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } }
public void RemoveSpecification(ProductSpecification productSpecification) { _productSpecifications.Remove(productSpecification); }
/// <summary> /// Build a new <see cref="Product"/> and save it. /// </summary> /// <param name="productSpecification">The attributes of the new <see cref="Product"/>.</param> /// <param name="category">The parent <see cref="ProductCategory"/> of the new <see cref="Product"/>.</param> /// <returns>The new <see cref="Product"/>.</returns> public Product CreateProduct(ProductSpecification productSpecification, ProductCategory category) { var product = new Product { ProductSpecifications = new Collection<ProductSpecification> { productSpecification }, Category = category }; this._persistence.Add(product); this._persistence.Commit(); return product; }
/// <summary> /// Concatenate an updated <see cref="ProductSpecification"/> to a given <paramref name="product"/>. /// </summary> /// <param name="product">The <see cref="Product"/> to update.</param> /// <param name="updatedSpecification">The updated <see cref="ProductSpecification"/>.</param> /// <returns>The updated <paramref name="product"/>.</returns> public Product UpdateProduct(Product product, ProductSpecification updatedSpecification) { var productToUpdate = this.GetProduct(product.Id); productToUpdate.ProductSpecifications.Add(updatedSpecification); this._persistence.Commit(); return productToUpdate; }
/// <summary> /// /// </summary> /// <returns></returns> public override IFeature DeepClone() { return(new NauticalProducts { FeatureName = FeatureName == null ? new[] { new FeatureName() } : Array.ConvertAll(FeatureName, fn => fn.DeepClone() as IFeatureName), FixedDateRange = FixedDateRange == null ? new DateRange() : FixedDateRange.DeepClone() as IDateRange, Id = Id, PeriodicDateRange = PeriodicDateRange == null ? new DateRange[0] : Array.ConvertAll(PeriodicDateRange, p => p.DeepClone() as IDateRange), SourceIndication = SourceIndication == null ? new SourceIndication() : SourceIndication.DeepClone() as ISourceIndication, TextContent = TextContent == null ? new TextContent[0] : Array.ConvertAll(TextContent, t => t.DeepClone() as ITextContent), Geometry = Geometry, Classification = Classification, Copyright = Copyright, MaximumDisplayScale = MaximumDisplayScale, HorizontalDatumReference = HorizontalDatumReference, HorizontalDatumValue = HorizontalDatumValue, VerticalDatum = VerticalDatum, SoundingDatum = SoundingDatum, ProductType = ProductType, MinimumDisplayScale = MinimumDisplayScale, IssueDate = IssueDate, Purpose = Purpose, Information = Information == null ? new Information[0] : Array.ConvertAll(Information, i => i.DeepClone() as IInformation), Price = Price == null ? new Price[0] : Array.ConvertAll(Price, p => p.DeepClone() as IPrice), ProducingAgency = ProducingAgency == null ? new ProducingAgency() : ProducingAgency.DeepClone() as IProducingAgency, PublicationNumber = PublicationNumber, DataSetName = DataSetName, Version = Version, ServiceStatus = ServiceStatus, Keywords = Keywords, ProductSpecification = ProductSpecification == null ? new ReferenceSpecification() : ProductSpecification.DeepClone() as IReferenceSpecification, OnlineResource = OnlineResource == null ? new OnlineResource() : OnlineResource.DeepClone() as IOnlineResource, ServiceSpecification = ServiceSpecification == null ? new ReferenceSpecification() : ServiceSpecification.DeepClone() as IReferenceSpecification, ServiceDesign = ServiceDesign == null ? new ReferenceSpecification() : ServiceDesign.DeepClone() as IReferenceSpecification, Links = Links == null ? new Link[0] : Array.ConvertAll(Links, l => l.DeepClone() as ILink) }); }
public void TestUpdateProduct() { var fakeProduct = new Product { ProductSpecifications = new Collection<ProductSpecification>() }; var commitWasCalled = false; this._fakePersistenceManager.Setup( pm => pm.Find(It.IsAny<PersistenceSearcher<Product>>())) .Returns(fakeProduct); this._fakePersistenceManager.Setup( pm => pm.Commit()) .Callback(() => commitWasCalled = true); var expected = new ProductSpecification(); var actual = this._target.UpdateProduct(fakeProduct, expected); Assert.IsTrue(actual.ProductSpecifications.Contains(expected)); Assert.IsTrue(commitWasCalled); }
public Item(int itemId, ProductSpecification spec, decimal price) { this.itemId = itemId; this.productSpec = spec; this.price = price; }
public void TestBaseIsCalledIfNoAttributesExist() { var productSpecification = new ProductSpecification { ProductAttributes = new Collection<ProductAttribute> { new ProductAttribute { AttributeType = new ProductAttributeType { Name = "Price" } } } }; var actual = productSpecification.Attributes.IDontExist; }