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(); }
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); }
/// <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()); } }