public void AddProductGoodsUseCaseEqualTest()
        {
            AddProductGoodsRequest addProductGoodsRequest = new AddProductGoodsRequest
                                                                (unit, tareChange, count, provider, datetime, category, class_, expDate,
                                                                allPurchasePrice, allSalePrice, department, seller, returned, returnedDate, writenOff);

            IRepositoryFactory      repositoryFactory      = new RepositoryFactory(new DBContext());
            IActivityFactory        activityFactory        = new ActivityFactory(repositoryFactory, new ValidationRuleFactory());
            IUseCaseFactory         useCaseFactory         = new UseCaseFactory(activityFactory);
            AddProductGoodsResponse addroductGoodsResponse = useCaseFactory.Create <IUseCase <AddProductGoodsRequest, AddProductGoodsResponse> >().Execute(addProductGoodsRequest);

            Assert.AreEqual(addroductGoodsResponse.Products[4].Unit, unit);
            Assert.AreEqual(addroductGoodsResponse.Products[4].Returned, returned);
            Assert.AreEqual(addroductGoodsResponse.Products[4].Count, int.Parse(count));
        }
        public void AddProductGoodsUseCaseNotEqualTest()
        {
            Exception exception = null;

            try
            {
                IRepositoryFactory     repositoryFactory      = new RepositoryFactory(new DBContext());
                IActivityFactory       activityFactory        = new ActivityFactory(repositoryFactory, new ValidationRuleFactory());
                IUseCaseFactory        useCaseFactory         = new UseCaseFactory(activityFactory);
                AddProductGoodsRequest addProductGoodsRequest = new AddProductGoodsRequest
                                                                    (unit, tareChange, "", provider, datetime, category, class_, expDate,
                                                                    allPurchasePrice, allSalePrice, department, seller, returned, returnedDate, writenOff);
                AddProductGoodsResponse addProductGoodsResponse = useCaseFactory.Create <IUseCase <AddProductGoodsRequest, AddProductGoodsResponse> >().Execute(addProductGoodsRequest);
            }
            catch (Exception ex)
            {
                exception = ex;
            }

            Assert.AreEqual(exception.Message, "Count must have digits only");
        }
        public async Task <OperationStatusInfo> AddProductGoods(object addedProduct, object addedArrivedGoods)
        {
            return(await Task.Run(() =>
            {
                Dictionary <Type, object> collection = new Dictionary <Type, object>();
                OperationStatusInfo operationStatusInfo = new OperationStatusInfo(operationStatus: OperationStatus.Done);

                string attachedProductObjectText = addedProduct.ToString();
                string attachedArrivedGoodsObjectText = addedArrivedGoods.ToString();
                Product newProduct = JsonConvert.DeserializeObject <Product>(attachedProductObjectText);
                ArrivedGoods newArrivedGoods = JsonConvert.DeserializeObject <ArrivedGoods>(attachedArrivedGoodsObjectText);
                AddProductGoodsRequest addProductGoodsRequest = new AddProductGoodsRequest(newProduct.Unit, newProduct.TareChange,
                                                                                           newArrivedGoods.Count.ToString(), newArrivedGoods.Provider, newArrivedGoods.DateTime.ToString(), newProduct.Category,
                                                                                           newProduct.Class, newProduct.ExpirationDate.ToString(), newArrivedGoods.AllPurchasePrice.ToString(),
                                                                                           newArrivedGoods.AllSalesPrice.ToString(), newArrivedGoods.Department, newArrivedGoods.Seller,
                                                                                           newProduct.Returned, newProduct.ReturnedDate.ToString(), newProduct.WritenOff);

                try
                {
                    AddProductGoodsResponse addProductGoodsResponse = hubEnvironment.UseCaseFactory
                                                                      .Create <IUseCase <AddProductGoodsRequest, AddProductGoodsResponse> >()
                                                                      .Execute(addProductGoodsRequest);
                    collection.Add(typeof(List <ArrivedGoods>), addProductGoodsResponse.ArrivedGoods);
                    collection.Add(typeof(List <Product>), addProductGoodsResponse.Products);
                    operationStatusInfo.AttachedObject = collection;
                    operationStatusInfo.AttachedInfo = "Product is added!";
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    operationStatusInfo.OperationStatus = OperationStatus.Cancelled;
                    operationStatusInfo.AttachedInfo = ex.Message;
                }

                return operationStatusInfo;
            }));
        }