Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
 /// <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);
 }
Ejemplo n.º 6
0
        /// <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;
        }
Ejemplo n.º 7
0
 public void UpdateProductSpecification(string description, IEnumerable <KeyValuePair <int, string> > specificationValues)
 {
     ProductSpecification = new ProductSpecification(description, specificationValues);
 }
Ejemplo n.º 8
0
        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
            });
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
 public void RemoveSpecification(ProductSpecification productSpecification)
 {
     _productSpecifications.Remove(productSpecification);
 }
Ejemplo n.º 11
0
        /// <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;
        }
Ejemplo n.º 12
0
        /// <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;
        }
Ejemplo n.º 13
0
 /// <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)
     });
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 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;
        }