public void OnOrderCancel(ResturantPlatformType platformType, OrderCancelInfo orderInfo) { using (Way.Lib.CLog log = new Way.Lib.CLog("取消订单")) { log.LogJson(orderInfo); } }
/// <summary> /// Executes Discontinue Order operation. /// Checks if order is in progress, then executes if it is. /// Otherwise, throws a WorkflowException. /// </summary> /// <param name="order"></param> /// <param name="info"></param> public void Execute(Order order, OrderCancelInfo info) { if (order.Status == OrderStatus.IP) order.Discontinue(info); else throw new WorkflowException(string.Format("Order with status {0} cannot be discontinued.", order.Status)); }
public UnmergeOrderResponse UnmergeOrder(UnmergeOrderRequest request) { Platform.CheckForNullReference(request, "request"); Platform.CheckMemberIsSet(request.OrderRef, "OrderRef"); // reason is not required for dry run, but otherwise it is if (!request.DryRun && request.UnmergeReason == null) { throw new ArgumentNullException("UnmergeReason"); } DryRunHelper(request.DryRun, delegate { var destinationOrder = this.PersistenceContext.Load <Order>(request.OrderRef); var sourceOrders = destinationOrder.MergeSourceOrders; if (sourceOrders.Count == 0) { throw new RequestValidationException("This order does not have any orders to un-merge."); } // load the reason; if reason is null (eg dry run), just get the first available reason var reason = request.UnmergeReason == null ? CollectionUtils.FirstElement(PersistenceContext.GetBroker <IEnumBroker>().Load <OrderCancelReasonEnum>(false)) : EnumUtils.GetEnumValue <OrderCancelReasonEnum>(request.UnmergeReason, PersistenceContext); var cancelInfo = new OrderCancelInfo(reason, this.CurrentUserStaff, "Un-merged"); var accBroker = PersistenceContext.GetBroker <IAccessionNumberBroker>(); // do unmerge UnmergeHelper(sourceOrders, cancelInfo, accBroker); }); return(new UnmergeOrderResponse()); }
private void UnmergeHelper(IEnumerable <Order> sourceOrders, OrderCancelInfo cancelInfo, IAccessionNumberBroker accBroker) { foreach (var order in sourceOrders) { string failureReason; if (!order.CanUnmerge(cancelInfo, out failureReason)) { throw new RequestValidationException(failureReason); } var result = order.Unmerge(cancelInfo, accBroker.GetNext()); var replacementOrder = result.ReplacementOrder; PersistenceContext.Lock(replacementOrder, DirtyState.New); // sync state so that ghost procedures get OIDs, prior to queuing ghost HL7 events PersistenceContext.SynchState(); // notify HL7 of cancelled procedures (now existing as ghosts on dest order) foreach (var procedure in result.GhostProcedures) { LogicalHL7Event.ProcedureCancelled.EnqueueEvents(procedure); } // if the replacement order is not terminated if (!replacementOrder.IsTerminated) { // notify HL7 of replacement LogicalHL7Event.OrderCreated.EnqueueEvents(replacementOrder); // recur on items that were merged into this order UnmergeHelper(replacementOrder.MergeSourceOrders, cancelInfo, accBroker); } } }
public void Test_Execute_Scheduling() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); DiscontinueOrderOperation op = new DiscontinueOrderOperation(); Assert.AreEqual(OrderStatus.SC, order.Status); op.Execute(order, info); }
/// <summary> /// Executes Cancel Order operation. /// Checks if order is in scheduling state, then executes if it is. /// Otherwise, throws a WorkflowException. /// </summary> /// <param name="order"></param> /// <param name="info"></param> public void Execute(Order order, OrderCancelInfo info) { if (order.Status == OrderStatus.SC) { order.Cancel(info); } else { throw new WorkflowException(string.Format("Order with status {0} cannot be cancelled.", order.Status)); } }
public void Test_Execute_Cancel() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); order.Cancel(new OrderCancelInfo()); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CA, order.Status); op.Execute(order, info); }
public void Test_Execute() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Assert.AreEqual(OrderStatus.SC, order.Status); op.Execute(order, info); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CA, order.Status); }
public void Test_Execute_InProgress() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); Assert.AreEqual(OrderStatus.IP, order.Status); op.Execute(order, info); }
public void Test_Execute_Complete() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); DiscontinueOrderOperation op = new DiscontinueOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); procedure.Complete(DateTime.Now); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CM, order.Status); op.Execute(order, info); }
public TaskStatus Handle(IHttpProxy httpHandler) { httpHandler.ResponseContentType = "application/json"; var forms = httpHandler.Form.ToObject <SortedDictionary <string, string> >(); try { if (forms.Count > 0) { //验证sign var config = new Config(ResturantFactory.ResturantListener.OnGetPlatformConfigXml(ResturantPlatformType.Meituan)); if (forms["sign"] != MeituanHelper.Sign(forms, config.SignKey)) { throw new Exception("签名验证失败"); } OrderCancelInfo info = new OrderCancelInfo(); info.ErpStoreID = int.Parse(forms["ePoiId"]); var orderCancelObj = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(forms["orderCancel"]); info.OrderID = orderCancelObj.Value <string>("orderId"); info.Reason = orderCancelObj.Value <string>("reason"); new Thread(() => { try { ResturantFactory.ResturantListener.OnOrderCancel(ResturantPlatformType.Meituan, info); } catch { } }).Start(); } } catch (Exception ex) { using (Log log = new Log("美团CancelOrderCallback解析错误")) { log.Log(ex.ToString()); } } httpHandler.ResponseWrite("{\"data\":\"OK\"}"); return(TaskStatus.Completed); }
private static void CancelOrderHelper(Order order, OrderCancelInfo info) { var operation = new CancelOrDiscontinueOrderOperation(); operation.Execute(order, info); }
public void OnOrderCancel(ResturantPlatformType platformType, OrderCancelInfo orderInfo) { }
public void Test_Execute_Cancel() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); DiscontinueOrderOperation op = new DiscontinueOrderOperation(); order.Cancel(new OrderCancelInfo()); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CA, order.Status); op.Execute(order, info); }
public void OnOrderCancel(ResturantPlatformType platformType, OrderCancelInfo orderInfo) { throw new NotImplementedException(); }