public void ModelFactory_Contract_ContractWithProductsAndFees_IsConverted()
        {
            Contract contractModel = TestData.ContractModelWithProductsAndTransactionFees;

            ModelFactory modelFactory = new ModelFactory();

            ContractResponse contractResponse = modelFactory.ConvertFrom(contractModel);

            contractResponse.ShouldNotBeNull();
            contractResponse.EstateId.ShouldBe(contractModel.EstateId);
            contractResponse.OperatorId.ShouldBe(contractModel.OperatorId);
            contractResponse.ContractId.ShouldBe(contractModel.ContractId);
            contractResponse.Description.ShouldBe(contractModel.Description);
            contractResponse.Products.ShouldNotBeNull();
            contractResponse.Products.ShouldHaveSingleItem();
            
            ContractProduct contractProduct = contractResponse.Products.Single();
            Product expectedContractProduct = contractModel.Products.Single();

            contractProduct.ProductId.ShouldBe(expectedContractProduct.ProductId);
            contractProduct.Value.ShouldBe(expectedContractProduct.Value);
            contractProduct.DisplayText.ShouldBe(expectedContractProduct.DisplayText);
            contractProduct.Name.ShouldBe(expectedContractProduct.Name);
            contractProduct.TransactionFees.ShouldNotBeNull();
            contractProduct.TransactionFees.ShouldHaveSingleItem();

            ContractProductTransactionFee productTransactionFee = contractProduct.TransactionFees.Single();
            ContractProductTransactionFee expectedProductTransactionFee = contractProduct.TransactionFees.Single();

            productTransactionFee.TransactionFeeId.ShouldBe(expectedProductTransactionFee.TransactionFeeId);
            productTransactionFee.Value.ShouldBe(expectedProductTransactionFee.Value);
            productTransactionFee.CalculationType.ShouldBe(expectedProductTransactionFee.CalculationType);
            productTransactionFee.Description.ShouldBe(expectedProductTransactionFee.Description);
        }
        public void ContractEntities_ConvertFrom_EmptyProductTransactionFees_ContractConverted()
        {
            ContractEntity contract = TestData.ContractEntity;
            List <ContractProductEntity> contractProducts = new List <ContractProductEntity>
            {
                TestData.ContractProductEntity
            };
            List <ContractProductTransactionFeeEntity> contractProductsTransactionFees = new List <ContractProductTransactionFeeEntity>();

            ModelFactory modelFactory = new ModelFactory();

            ContractModel contractModel = modelFactory.ConvertFrom(contract, contractProducts, contractProductsTransactionFees);

            contractModel.ShouldNotBeNull();
            contractModel.EstateId.ShouldBe(contract.EstateId);
            contractModel.ContractId.ShouldBe(contract.ContractId);
            contractModel.OperatorId.ShouldBe(contract.OperatorId);
            contractModel.Description.ShouldBe(contract.Description);
            contractModel.Products.ShouldNotBeNull();
            contractModel.Products.ShouldHaveSingleItem();

            Product         contractProduct         = contractModel.Products.Single();
            ContractProduct expectedContractProduct = contractProducts.Single();

            contractProduct.ProductId.ShouldBe(expectedContractProduct.ProductId);
            contractProduct.DisplayText.ShouldBe(expectedContractProduct.DisplayText);
            contractProduct.Name.ShouldBe(expectedContractProduct.ProductName);
            contractProduct.Value.ShouldBe(expectedContractProduct.Value);
            contractProduct.TransactionFees.ShouldBeEmpty();
        }
Ejemplo n.º 3
0
        public ContractResponse ConvertFrom(Contract contract)
        {
            if (contract == null)
            {
                return(null);
            }

            ContractResponse contractResponse = new ContractResponse
            {
                ContractId   = contract.ContractId,
                EstateId     = contract.EstateId,
                OperatorId   = contract.OperatorId,
                OperatorName = contract.OperatorName,
                Description  = contract.Description
            };

            if (contract.Products != null && contract.Products.Any())
            {
                contractResponse.Products = new List <ContractProduct>();

                contract.Products.ForEach(p =>
                {
                    ContractProduct contractProduct = new ContractProduct
                    {
                        ProductId   = p.ProductId,
                        Value       = p.Value,
                        DisplayText = p.DisplayText,
                        Name        = p.Name
                    };
                    if (p.TransactionFees != null && p.TransactionFees.Any())
                    {
                        contractProduct.TransactionFees = new List <ContractProductTransactionFee>();
                        p.TransactionFees.ForEach(tf =>
                        {
                            ContractProductTransactionFee transactionFee = new ContractProductTransactionFee
                            {
                                TransactionFeeId = tf.TransactionFeeId,
                                Value            = tf.Value,
                                Description      = tf.Description,
                            };
                            transactionFee.CalculationType =
                                Enum.Parse <CalculationType>(tf.CalculationType.ToString());

                            contractProduct.TransactionFees.Add(transactionFee);
                        });
                    }

                    contractResponse.Products.Add(contractProduct);
                });
            }

            return(contractResponse);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 添加/制作 合同单
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="makeUserId"></param>
        /// <param name="expireTime"></param>
        /// <param name="bProductDetailModel"></param>
        /// <returns></returns>
        public BReturnModel AddContractOrder(Guid orderId, Guid makeUserId, DateTime expireTime, IList <BProductDetailModel> bProductDetailModel)
        {
            var isHave = baseDal.GetListQuery(item => item.OrderId == orderId).Count();

            if (isHave > 0)
            {
                return(BReturnModel.ReturnError("当前流程单 已经存在对应的合同订单 不可重复提交"));
            }

            var userOrderModel = userOrderDal.GetItemById(orderId);

            if (userOrderModel == null)
            {
                return(BReturnModel.ReturnError("未找到 对应的流程订单"));
            }

            ContractOrder contractOrder = new ContractOrder()
            {
                Id                 = Guid.NewGuid(),
                CreateTime         = DateTime.Now,
                Flag               = (int)BusinessOrderFlag.Undetermined,
                ExpireTime         = expireTime,
                OrderId            = orderId,
                ContractMakeUserId = makeUserId,
                UserId             = userOrderModel.UserId
            };

            baseDal.Add(contractOrder);

            decimal totalPrice = 0;

            foreach (var item in bProductDetailModel)
            {
                ContractProduct contractProduct = new ContractProduct()
                {
                    Id = Guid.NewGuid(),
                    ContractOrderId = contractOrder.Id,
                    Count           = item.Count,
                    Price           = item.Price,
                    ProductName     = item.ProductName,
                    Remarks         = item.Remarks,
                    Specifications  = item.Specifications,
                    Manufactor      = item.Manufactor
                };
                totalPrice += (decimal)contractProduct.Price * (int)contractProduct.Count;
                contractProductDal.Add(contractProduct);
            }

            UserOrder userOrder = new UserOrder()
            {
                Id = orderId,
                CurrentStateTime = DateTime.Now,
                Flag             = (int)OrderStateFlag.Contract,
                OriginalPrice    = totalPrice,

                RealisticPrice = totalPrice  //现价  需要减去用户红包金额
            };

            userOrderDal.UpdateItemSelect(userOrder, new string[] { UserOrderPropertiesConfig.Flag, UserOrderPropertiesConfig.CurrentStateTime, UserOrderPropertiesConfig.OriginalPrice, UserOrderPropertiesConfig.RealisticPrice });

            int count = DBContent.SaveChanges();

            if (count > 0)
            {
                return(BReturnModel.ReturnOk());
            }
            else
            {
                return(BReturnModel.ReturnError());
            }
        }