Example #1
0
        public void Order_WhenSingleOrderInputIsNull_ShouldReturnPrimaryQueryable()
        {
            OrderInput orderInput = null;
            var        queryable  = Mock.QueryableItems.Order(orderInput);

            Assert.Equal(queryable, Mock.QueryableItems);
        }
Example #2
0
        public Hash GetIssueOrderId(OrderInput input)
        {
            var hash1 = Hash.FromMessage(input);
            var hash2 = Context.TransactionId;

            return(Hash.FromTwoHashes(hash1, hash2));
        }
        public Hash GetIssueOrderId(OrderInput input)
        {
            var hash1 = HashHelper.ComputeFrom(input);
            var hash2 = Context.TransactionId;

            return(HashHelper.ConcatAndCompute(hash1, hash2));
        }
        public OrderOutput Update(OrderInput input)
        {
            using (var dbContext = new AllureContext())
            {
                var order = dbContext.Set <Order>().SingleOrDefault(o => o.Id == input.Id);

                if (order == null)
                {
                    throw new HttpException(404, string.Format("order {0} doesn't exist", input.Id.ToString()));
                }

                order.Status              = input.Status;
                order.WillCheck           = input.WillCheck;
                order.CheckAddress        = input.CheckAddress;
                order.CheckTime           = input.CheckTime;
                order.CheckContact        = input.CheckContact;
                order.LogisticCode        = input.LogisticCode;
                order.LogisticOrderNumber = input.LogisticOrderNumber;
                order.Deposit             = input.Deposit;
                order.DepositReceipt      = input.DepositReceipt;
                order.Remaining           = input.Remaining;
                order.RemainingReceipt    = input.RemainingReceipt;
                order.UpdateTime          = DateTime.Now;
                if (order.Deposit.HasValue)
                {
                    order.RealCharge = order.OriginalRealCharge - order.Deposit.Value;
                }

                dbContext.SaveChanges();

                return(Id(order.Id));
            }
        }
Example #5
0
        /// <summary>
        ///     将发货信息同步到租户上
        ///     发货成功时调用,每发货调用一次
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private ServiceResult DeliveryToTenant(OrderInput model)
        {
            if (TenantContext.CurrentTenant == "master")
            {
                var order = Resolve <IOrderService>().GetSingle(model.OrderID);
                if (order != null)
                {
                    order.OrderExtension = order.Extension.ToObject <OrderExtension>();

                    var tenant = Resolve <ITenantService>().GetSingle(r => r.UserId == order.UserId);
                    if (tenant != null)
                    {
                        var apiUrl = tenant.ServiceUrl + "/Api/Order/Delivery";
                        model.OrderID = order.OrderExtension.TenantOrderInfo.OrderId;
                        // 通过Api请求

                        var dicHeader = new Dictionary <string, string>
                        {
                            { "zk-tenant", tenant.Sign }
                        };

                        apiUrl.Post(model.ToJsons(), dicHeader);
                    }
                }
            }

            return(ServiceResult.Success);
        }
Example #6
0
        public void AddPrchase(PurchaseOrder order, OrderInput orderInput)     //新建入库订单
        {
            try
            {
                SQLiteConnection con = new SQLiteConnection(@"Data Source=SQL\GREE.db");
                con.Open();
                string sql = "INSERT INTO main.PurchaseOrder " +
                             "(totalNumber,subunitNumber,machineTypeName,machineTypeNumber," +
                             "machineTypeClass,quantity,purchasePrice,totalPrice," +
                             "orderDate,remarks,state)VALUES(" +
                             "\'" + order.TNVal + "\'" + "," +
                             "\'" + order.SNVal + "\'" + "," +
                             "\'" + order.MTNameVal + "\'" + "," +
                             "\'" + order.MTNumberVal + "\'" + "," +
                             "\'" + order.MTClassVal + "\'" + "," +
                             "\'" + order.QuantityVal + "\'" + "," +
                             "\'" + order.PurchasePriceVal + "\'" + "," +
                             "\'" + order.TotalPriceVal + "\'" + "," +
                             "\'" + order.OrderDateVal + "\'" + "," +
                             "\'" + order.RemarksVal + "\'" + "," +
                             "'待入库'" +
                             ");";

                SQLiteCommand command = new SQLiteCommand(sql, con);
                command.ExecuteNonQuery();
                func.MessageBox_OrderInput(orderInput, true);
                command.Dispose();
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void CreateOrder(OrderInput input)
        {
            if (input.Details == null || !input.Details.Any())
            {
                throw new KnownException("订单错误找不到详情");
            }
            var header  = _mapper.Map <OrderHeader>(input);
            var details = _mapper.Map <List <Data.OrderDetail> >(input.Details);

            details.ForEach(x => x.ParentId = header.Id);
            header.Amount = details.Sum(x => x.Price * x.Quantity);
            var msg = _mapper.Map <OrderCreatedEvent>(header);

            msg.Details = _mapper.Map <List <Message.OrderDetail> >(details);
            var dbMessage = new MqMessage()
            {
                Body = JsonConvert.SerializeObject(msg, new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver(),
                    DateFormatString = "yyyy-MM-dd hh:mm:ss"
                }),
                MessageAssemblyName  = typeof(OrderCreatedEvent).Assembly.GetName().Name,
                MessageClassFullName = msg.GetType().FullName
            };

            _dbContext.Add(dbMessage);
            _dbContext.Add(header);
            _dbContext.AddRange(details);
            _dbContext.SaveChanges();
        }
Example #8
0
        public JsonResult ConfirmFinish(OrderInput orderInput)
        {
            string msg;

            orderInput.OperationID = HttpContext.Session.GetString("UserId");
            _orderManageService.confirmFinish(orderInput, out msg);
            return(Json(msg));
        }
Example #9
0
        public static IOrderedQueryable <T> Ordering <T>(IQueryable <T> input, OrderInput orderInput)
        {
            var parameter = Expression.Parameter(typeof(T), "p");

            return(orderInput.Order == OrderTypeEnum.Asc
                 ? OrderingHelper.OrderBy(input, orderInput.Property, parameter)
                 : OrderingHelper.OrderByDescending(input, orderInput.Property, parameter));
        }
Example #10
0
        private AddOrderRecordCommand GenerateOrder(OrderInput input, GoodsInfoDto goods, double discount)
        {
            var orderNo         = OrderHelper.GenerateOrderNo(OrderType.Order, input.SellType);
            var orderOriginCost = input.Count * input.UnitPrice;
            var orderCost       = orderOriginCost * discount;

            return(new AddOrderRecordCommand(Guid.NewGuid().ToString(), orderNo, goods.Id, goods.AuthRankId, _lotterySession.SystemTypeId, OrderSourceType.V1,
                                             input.Count, input.UnitPrice, orderOriginCost, orderCost, input.SellType, _lotterySession.UserId));
        }
Example #11
0
        public void Add(OrderInput orderInput)
        {
            var order = CreateOrder(orderInput);
            var lines = CreateLine(orderInput.Lines);

            order.AddLine(lines);

            _orderRepository.Add(order);
            _lineRepository.Add(lines);
        }
        /// <summary>
        /// Creates given Order. Requires authentication.
        /// </summary>
        /// <param name="orderInput">Order to be created</param>
        /// <returns>An object of OrderOutPut for the created order information</returns>
        public async Task <ReturnModel <OrderOutput> > CreateOrder(OrderInput orderInput)
        {
            const string requestUrl = "api/v1/order";

            var response = await SendRequest(HttpVerbs.Post, requestUrl, orderInput, requiresAuthentication : true);

            var returnModel = response.ToReturnModel <OrderOutput>();

            return(returnModel);
        }
Example #13
0
        public ApiResult Delivery([FromBody] OrderInput model)
        {
            var result = Resolve <IOrderService>().Deliver(model);

            if (result.Succeeded)
            {
                return(ApiResult.Success());
            }

            return(ApiResult.Failure(result.ReturnMessage));
        }
Example #14
0
        public Orders AddOrders([FromBody] OrderInput Input)
        {
            var modelInput = new Orders
            {
                UserId    = Input.UserId,
                ProductId = Input.ProductId
            };
            var result = _ordersService.AddOrders(modelInput);

            return(result);
        }
        public OrdersForm(IOrderService service)
        {
            InitializeComponent();

            _service = service;
            Order    = new OrderInput();
            Lines    = new ObservableCollection <LineInput>();

            FillControls();
            SignEvents();
        }
Example #16
0
        // public ActionResult<OrderOutput> Post([FromBody] OrderInput orderInput)
        public async Task <IActionResult> Register([FromBody] OrderInput orderInput)
        {
            var register = _registerServiceLocator.GetService(orderInput.OrderType);
            // var register = _serviceLocator.GetService<IRegister>(orderInput.OrderType);
            var orderBaseInfo = _map.Map <OrderBaseInfo>(orderInput);
            var orderInfo     = await register.Execute(orderBaseInfo);

            var orderOutput = _map.Map <OrderOutput>(orderInfo);

            return(Ok(orderOutput));
        }
Example #17
0
        public async Task <string> Order(OrderInput input)
        {
            if (input == null)
            {
                return("Nothing");
            }

            var order = new Order
            {
                Email = input.email
            };

            var ordered = _context.Orders.Add(order);
            int result  = await _context.SaveChangesAsync();

            if (result == 0)
            {
                return("Failed");
            }

            var orderedItems = new List <OrderedItems>();

            foreach (var movie in input.Movies)
            {
                orderedItems.Add(new OrderedItems
                {
                    Genre   = movie.Genre,
                    Price   = movie.Price,
                    Title   = movie.Title,
                    OrderId = ordered.Entity.Id
                });
            }

            foreach (var item in orderedItems)
            {
                _context.OrderItems.Add(item);
            }

            int check = await _context.SaveChangesAsync();

            if (check == 0)
            {
                return("Failed");
            }

            if (result == 1)
            {
                return("Success");
            }

            return("Nothing Happened");
        }
Example #18
0
        public async Task <IActionResult> Post([FromBody] OrderInput orderInput)
        {
            try
            {
                var response = await orderManager.PlaceOrder(orderInput);

                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Example #19
0
        /// <summary>
        ///     发货
        ///     只更改订单状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ServiceResult Deliver(OrderInput model)
        {
            var order = Resolve <IOrderService>().GetSingle(u => u.Id == model.OrderID);

            if (order == null)
            {
                return(ServiceResult.FailedMessage("订单有误"));
            }

            if (order.OrderStatus != OrderStatus.WaitingSellerSendGoods)
            {
                if (order.OrderStatus != OrderStatus.Remited)
                {
                    return(ServiceResult.FailedWithMessage("只有待发货的商品可以发货"));
                }
            }

            try
            {
                order.OrderStatus = OrderStatus.WaitingReceiptProduct;
                var deliverRes = Resolve <IOrderService>().Update(order);

                if (deliverRes)
                {
                    var store = Resolve <IStoreService>().GetSingle(order.StoreId);

                    //添加订单操作记录
                    var orderAction = new OrderAction
                    {
                        OrderId         = order.Id,
                        OrderActionType = OrderActionType.AdminDelivery,
                        ActionUserId    = order.UserId,
                        Intro           = $"{store.Name}已发货"
                    };
                    var rsAddAction = Resolve <IOrderActionService>().Add(orderAction);

                    order.OrderExtension = order.Extension.ToObject <OrderExtension>();
                    // 存在关联TenantOrder才执行.
                    if (rsAddAction && order?.OrderExtension?.TenantOrderInfo?.OrderId > 0)
                    {
                        DeliveryToTenant(model);
                    }
                }
            }
            catch (Exception e)
            {
                return(ServiceResult.FailedWithMessage(e.ToString()));
            }

            return(ServiceResult.Success);
        }
Example #20
0
        public void Order_WhenSingleOrderInputIsPassed_ShouldReturnOrderedQueryable()
        {
            var orderInput = new OrderInput
            {
                Property = "Date",
                Order    = OrderTypeEnum.Desc
            };

            var filteredResult = Mock.QueryableItems.Order(orderInput);

            var normalResult = Mock.QueryableItems.OrderByDescending(p => p.Date);

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
        public ContentResult AddOrder(OrderInput inputData)
        {
            try
            {
                var order = new Order()
                {
                    OrderId    = Guid.NewGuid(),
                    ProductId  = inputData.ProductId,
                    CustomerId = inputData.CustomerId,
                    Quantity   = inputData.Quantity,
                    IsCancel   = false,
                };

                dbContext.Orders.Add(order);

                var getProduct = dbContext.Products.Where(x => x.ProductId == inputData.ProductId).FirstOrDefault();

                if (getProduct is null || inputData.Quantity > getProduct.Quantity)
                {
                    return(new ContentResult
                    {
                        Content = JsonConvert.SerializeObject("Product Unavailable"),
                        ContentType = "application/json",
                        StatusCode = 204
                    });
                }
                else
                {
                    getProduct.Quantity -= inputData.Quantity; //Reduced Product Quantity
                    dbContext.Products.Update(getProduct);     //Update Product

                    var result = dbContext.SaveChanges();

                    if (result is 2)
                    {
                        return(new ContentResult
                        {
                            Content = JsonConvert.SerializeObject("Success"),
                            ContentType = "application/json",
                            StatusCode = 200
                        });
                    }
                    return(new ContentResult
                    {
                        Content = JsonConvert.SerializeObject("Fail"),
                        ContentType = "application/json",
                        StatusCode = 204
                    });
                }
            }
        public OrdersForm(IOrderService service, OrderInput order)
        {
            InitializeComponent();

            _service = service;
            Order    = order;
            Lines    = new ObservableCollection <LineInput>();
            foreach (var line in order.Lines)
            {
                Lines.Add(line);
            }

            FillControls();
            SignEvents();
        }
Example #23
0
        public void TestAddOrderExpectTrue()
        {
            var order = new OrderInput()
            {
                OrderId    = Guid.NewGuid(),
                ProductId  = Guid.Parse("157771ae-67a0-46c8-8453-0eafcdf4006a"),
                CustomerId = Guid.Parse("a663a20c-4b0d-4e46-88b4-b6d9d932b7b5"),
                Quantity   = 20
            };

            var addProduct = orderService.AddOrder(order);
            var valConv    = JsonConvert.DeserializeObject(addProduct.Content.ToString());
            var _result    = valConv.ToString() == "Success" ? true : false;

            Assert.True(_result);
        }
Example #24
0
        /// <summary>
        /// 订单添加
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task AddHouserOrder(OrderInput input)
        {
            var         query       = _houseRepository.FirstOrDefault(a => a.Id == input.Houseid);
            HOrderInput hOrderInput = new HOrderInput
            {
                UserId     = input.Userid,
                houseTitle = query.FloorName,
                ImgHeard   = query.ImgHeader,
                Houseid    = input.Houseid,
                HousePrice = query.FloorPrice,
                HouseType  = true
            };
            var houseorder = ObjectMapper.Map <HOrderInput, HouseOrder>(hOrderInput);

            houseorder.Id = GuidGenerator.Create();
            await _OrderRepository.InsertAsync(houseorder);
        }
Example #25
0
        public override Empty IssueOrder(OrderInput input)
        {
            //sent token to contract first
            var hash = GetIssueOrderId(input);

            //transfer from
            State.TokenContract.TransferFrom.Send(new TransferFromInput
            {
                Symbol = input.SymbolPaid,
                Amount = input.BalancePaid,
                From   = Context.Sender,
                To     = Context.Self,
                Memo   = "issue new order"
            });

            State.AllOrders[hash] = new OrderInfo
            {
                OrderId         = hash,
                Issuer          = Context.Sender,
                SymbolPaid      = input.SymbolPaid,
                SymbolObtain    = input.SymbolObtain,
                BalancePaid     = input.BalancePaid,
                BalanceObtain   = input.BalanceObtain,
                BalanceAchieved = 0,
                Status          = OrderStatus.Created
            };

            Context.Fire(new OrderIssued
            {
                Issuer        = Context.Sender,
                SymbolPaid    = input.SymbolPaid,
                SymbolObtain  = input.SymbolObtain,
                BalancePaid   = input.BalancePaid,
                BalanceObtain = input.BalanceObtain
            });

            Context.Fire(new Transferred
            {
                From   = Context.Sender,
                To     = Context.Self,
                Symbol = input.SymbolPaid,
                Amount = input.BalancePaid,
                Memo   = "Same name event for test" //same with token event transfer
            });
            return(new Empty());
        }
        public virtual ActionResult Save(OrderInput input)
        {
            using (var context = new AllureContext())
            {
                var order = context.Set <Order>()
                            .Include(o => o.Details)
                            .AsNoTracking()
                            .SingleOrDefault(o => o.Id == input.Id);

                if (order == null)
                {
                    throw new Exception(string.Format("order {0} doesn't exist", input.Id.ToString()));
                }

                var ids      = input.Details.Select(d => d.ProductId).ToArray();
                var products = context.Set <Product>().Where(p => ids.Contains(p.Id)).ToDictionary(p => p.Id);

                var details = input.Details.Where(d => d.Count > 0).Select(d => new OrderDetail
                {
                    ProductId = d.ProductId,
                    Count     = d.Count,
                    Discount  = 0m
                });

                order.WillCheck          = input.WillCheck;
                order.CheckTime          = input.WillCheck ? input.CheckTime : null;
                order.CheckContact       = input.CheckContact;
                order.CheckAddress       = input.CheckAddress;
                order.ReceiverName       = input.ReceiverName;
                order.ReceiverAddress    = input.ReceiverAddress;
                order.ReceiverPostCode   = input.ReceiverPostCode;
                order.ReceiverContact    = input.ReceiverContact;
                order.Details            = details.ToList();
                order.OriginalRealCharge = order.Details.Sum(d => d.RealCharge);
                order.RealCharge         = order.OriginalRealCharge;
                order.UpdateTime         = DateTime.Now;

                context.UpdateGraph(order, o => o.OwnedCollection(oo => oo.Details));
                context.SaveChanges();

                return(Json("ok"));
            }
        }
Example #27
0
        // GET: Books
        //[UnitOfWork]//启用工作单元
        public async Task <ActionResult> Index(string SeachText, string currentFilter, string sortOrder, int?page)
        {
            ViewBag.NameSortParm = sortOrder;
            var pageSize = 3;//页大小

            if (SeachText != null)
            {
                page = 1;
            }
            else
            {
                SeachText = currentFilter;
            }

            var pageNumber = page ?? 1;//第几页


            ViewBag.CurrentFilter = SeachText;

            PageInput pageInput = new PageInput()
            {
                pageIndex = pageNumber,
                pageMax   = pageSize
            };
            SeachInput seachInput = new SeachInput()
            {
                SeachBookName = SeachText
            };
            OrderInput orderInput = new OrderInput()
            {
                OrderName = ViewBag.NameSortParm
            };
            var BookList = await _bookAppService.GetAllAsync(pageInput, seachInput, orderInput);

            var onePageOfBook = new StaticPagedList <BookListoutput>(BookList.Items, pageNumber, pageSize, BookList.TotalCount); //将分页结果放入ViewBag供View使用 ViewBag.OnePageOfTasks = onePageOfTasks;

            //pageNumber, pageSize, counts  页索引  页大小  总数

            ViewBag.OnePageOfTasks = onePageOfBook;

            return(View());
        }
Example #28
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="orderInput"></param>
        /// <returns></returns>
        public async Task CreateOrder(OrderInput orderInput)
        {
            var order = new Order
            {
                Address = orderInput.Address,
                Code    = orderInput.Code,
                Price   = 1
            };

            var product = await _productRepository.GetAsync(1);

            if (product != null)
            {
                product.Quantity -= 1;
            }

            await _productRepository.UnitOfWork.BeginOrUseTransactionAsync();

            await _productRepository.UpdateAsync(product);

            _productRepository.UnitOfWork.Commit();
        }
        public async Task <ApiResponse <Order> > PlaceOrder(OrderInput orderInput)
        {
            List <PizzaMaking.Pizza> pizzas = new List <PizzaMaking.Pizza>();

            if (orderInput.PizzaInputs != null && orderInput.PizzaInputs.Any())
            {
                foreach (var pizzaInput in orderInput.PizzaInputs)
                {
                    var basePizza = await itemService.GetAsync(pizzaInput.PizzaId);

                    var pizzaCrust = await crustManager.GetAsync(pizzaInput.CrustId);

                    var toppings = await toppingManager.QueryAsync(pizzaInput.ToppingIds);

                    var pizza = pizzaMaker.StartWith(basePizza)
                                .ChangeCrust(pizzaCrust, pizzaInput.Size)
                                .AddToppings(toppings)
                                .Build();

                    pizzas.Add(pizza);
                }
            }

            var nonPizzaItems = orderInput.NonPizzaItemInputs?.Select(x => x.ItemId).ToList();
            var otherItems    = await itemService.GetByIds(nonPizzaItems);

            var orderPlaced = await orderService.PlaceOrderAsync(pizzas, otherItems, orderInput.CustomerId);

            ApiResponse <Order> apiResponse = new ApiResponse <Order>
            {
                Result = new ApiResult <Order>
                {
                    Data = orderPlaced
                }
            };

            return(apiResponse);
        }
Example #30
0
        public void Update(OrderInput orderInput)
        {
            var order           = _orderRepository.Get(orderInput.Id);
            var lines           = _lineRepository.GetByOrder(orderInput.Id);
            var businessPartner = new BusinessPartner(orderInput.CardCode, orderInput.CardName);

            var linesInputToAdd    = orderInput.Lines.Where(c => !lines.Any(x => x.Id.ToString().Equals(c.Id))).ToList();
            var linesInputToUpdate = orderInput.Lines.Where(c => lines.Any(x => x.Id.ToString().Equals(c.Id))).ToList();
            var linesToRemove      = lines.Where(c => !orderInput.Lines.Any(x => x.Id.Equals(x.Id.ToString()))).ToList();

            var linesToAdd    = CreateLine(linesInputToAdd);
            var linesToUpdate = CreateLine(linesInputToUpdate);

            linesToUpdate.ForEach(l => l.Update(l));
            order.AddLine(linesToAdd);
            order.RemoveLine(linesToRemove);

            order.Update(businessPartner);
            _lineRepository.Update(linesToUpdate);
            _lineRepository.Add(linesToAdd);
            _lineRepository.Delete(linesToRemove);
            _orderRepository.Update(order);
        }