public ResResultModel GetOrderPickedList(OrderSendModel model) { try { if (model.PageIndex < 1) { model.PageIndex = 1; } if (model.PageSize < 1) { model.PageSize = 10; } int totalRecord = 0; var bll = new OrderPicked(); var sb = new StringBuilder(300); var parms = new ParamsHelper(); if (!string.IsNullOrWhiteSpace(model.Keyword)) { sb.Append("and (op.OrderCode like @Keyword) "); var parm = new SqlParameter("@Keyword", SqlDbType.NVarChar, 50); parm.Value = model.Keyword; parms.Add(parm); } var list = bll.GetListByJoin(model.PageIndex, model.PageSize, out totalRecord, sb.ToString(), parms.ToArray()); return(ResResult.Response(true, "", JsonConvert.SerializeObject(list))); } catch (Exception ex) { return(ResResult.Response(false, ex.Message, "")); } }
public async Task GetTracking() { //Arrange var fakeRepo = new Mock <ITrackingRepository>(); List <EventBase> events = new List <EventBase>(); string bookingId = "1e4199f0-907f-4acc-b886-b12b0323c108"; PaymentProcessed paymentProc = new PaymentProcessed(bookingId, "Payment is Completed", Guid.NewGuid(), "PaymentProcessed", DateTime.Now); OrderPicked orderPicked = new OrderPicked(bookingId, "Order is picked from Origin", Guid.NewGuid(), "OrderPicked", DateTime.Now); events.Add(paymentProc); events.Add(orderPicked); Track tracking = new Track(events); fakeRepo.Setup(m => m.GetTrackingAsync(It.IsAny <string>())).Returns(Task.FromResult(tracking)); var sut = new TrackingSerivceWithoutCache(fakeRepo.Object); //Act var result = await sut.FindByIdAsync(bookingId); var jArray = JArray.Parse(result.TrackingHistory); var item = JObject.FromObject(jArray[0]); //Assert result.BookingId.ShouldBe(bookingId); result.ShouldBeOfType <TrackingDTO>(); item.GetValue("Description").ShouldBe("Payment is Completed"); item.GetValue("BookingOrderId").ShouldBe(bookingId); }
private IEnumerable <EventBase> Handle(OrderPicked e) { OrderHistory orderPicked = new OrderHistory(); orderPicked.BookingOrderId = e.BookingId; orderPicked.DateTime = e.Date.ToString(); orderPicked.Description = e.Description; orderPicked.OrderState = typeof(OrderPicked).ToString(); orderHistory.Add(orderPicked); return(new EventBase[] { e }); }
public async Task Handle(OrderPickedIntegrationEvent eventMsg) { List <EventBase> events = new List <EventBase>(); if (eventMsg.Id != Guid.Empty) { try { Track trackings = await _trackingContext.GetEventVersion(eventMsg.BookingId); if (trackings == null) { trackings = new Track(); } var messageType = _assemblyTypes .Where(t => t.Name.Contains("OrderPicked")).FirstOrDefault(). Name.ToString(); OrderPicked orderPicked = new OrderPicked(eventMsg.BookingId, eventMsg.Description, eventMsg.Id , messageType, eventMsg.CreationDate); events.AddRange(trackings.OrderPicked(orderPicked)); trackings.Version = trackings.OriginalVersion + 1; await _trackingContext.SaveTrackingAsync(eventMsg.BookingId, trackings.OriginalVersion, trackings.Version, events); //Publish the event here //Create Integration Event var orderStatusChanged = new OrderStatusChangedIntegrationEvent(eventMsg.BookingId, "OrderPicked"); _eventBus.Publish(orderStatusChanged); } catch (Exception e) { var ExceptionTelemetry = new ExceptionTelemetry(e); ExceptionTelemetry.Properties.Add("OrderPickedIntegrationEvent", eventMsg.BookingId); ExceptionTelemetry.SeverityLevel = SeverityLevel.Critical; telemetry.TrackException(ExceptionTelemetry); throw; //Throw exception for service bus to abandon the message } } }
public PrintOrderInfo GetPrintOrderPick(Guid Id) { var data = new PrintOrderInfo(); data.Title = "拣货单"; data.SPrintDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); var bll = new OrderPicked(); var oInfo = bll.GetModel(Id); data.OrderCode = oInfo.OrderCode; data.PurchaseOrderCode = ""; data.SupplierName = ""; data.SPlanArrivalTime = ""; data.SPlanArrivalTime = ""; var t1 = Task.Factory.StartNew(() => { BarcodeHelper bh = new BarcodeHelper(); data.BarcodeImageUri = bh.CreateBarcode(data.OrderCode); }); var oppBll = new OrderPickProduct(); var sqlWhere = "and opp.OrderPickId = @OrderId "; var parm = new SqlParameter("@OrderId", oInfo.Id); var pList = oppBll.GetListByJoin(sqlWhere, parm); if (pList != null && pList.Count > 0) { var cargoList = new List <PrintOrderCargoInfo>(); foreach (var item in pList) { cargoList.Add(new PrintOrderCargoInfo("", item.ProductCode, item.ProductName, item.CustomerCode, item.CustomerName, "", "", "", item.StayQty, item.Qty, "")); } data.CargoList = cargoList; //data.CargoList = JsonConvert.SerializeObject(cargoList); } t1.Wait(); return(data); }
public async Task UpdateBookingModelInCache(Message msg) { RedisCacheService rCache = new RedisCacheService(); List <EventBase> events = new List <EventBase>(); Track tracking = new Track(); var bookingId = string.Empty; List <OrderHistory> trackingHistory = new List <OrderHistory>(); try { if (msg.Label == "BookingAdd") { BookingAddIntegrationEvent eventMsg = JsonConvert.DeserializeObject <BookingAddIntegrationEvent>(Encoding.UTF8.GetString(msg.Body)); string messageType = "BookingCreated"; BookingCreated bookingCreated = new BookingCreated(eventMsg.BookingId, string.Empty, eventMsg.Id , messageType, eventMsg.CreationDate, eventMsg.Origin, eventMsg.Destination); bookingId = eventMsg.BookingId; tracking.BookingAdd(bookingCreated); } else if (msg.Label == "OrderPicked") { OrderPickedIntegrationEvent eventMsg = JsonConvert.DeserializeObject <OrderPickedIntegrationEvent>(Encoding.UTF8.GetString(msg.Body)); string messageType = "OrderPicked"; OrderPicked orderPicked = new OrderPicked(eventMsg.BookingId, eventMsg.Description, eventMsg.Id , messageType, eventMsg.CreationDate); bookingId = eventMsg.BookingId; tracking.OrderPicked(orderPicked); } else if (msg.Label == "OrderTransit") { OrderTransitIntegrationEvent eventMsg = JsonConvert.DeserializeObject <OrderTransitIntegrationEvent>(Encoding.UTF8.GetString(msg.Body)); string messageType = "OrderInTransit"; OrderInTransit orderInTransit = new OrderInTransit(eventMsg.BookingId, eventMsg.Description, eventMsg.Id , messageType, eventMsg.CreationDate); bookingId = eventMsg.BookingId; tracking.OrderInTransit(orderInTransit); } else if (msg.Label == "OrderDelivered") { OrderDeliveredIntegrationEvent eventMsg = JsonConvert.DeserializeObject <OrderDeliveredIntegrationEvent>(Encoding.UTF8.GetString(msg.Body)); string messageType = "OrderDelivered"; OrderDelivered orderDelivered = new OrderDelivered(eventMsg.BookingId, eventMsg.Description, eventMsg.Id , messageType, eventMsg.CreationDate, eventMsg.SignedBy); bookingId = eventMsg.BookingId; tracking.OrderDelivered(orderDelivered); } else if (msg.Label == "PaymentProcessed") { PaymentProcessedIntegrationEvent eventMsg = JsonConvert.DeserializeObject <PaymentProcessedIntegrationEvent>(Encoding.UTF8.GetString(msg.Body)); string messageType = "PaymentProcessed"; string description = string.Empty; if (eventMsg.PaymentStatus == PaymetStatus.Completed) { description = "Payment Done"; } else if (eventMsg.PaymentStatus == PaymetStatus.Canceled) { description = "Payment Failed"; } else if (eventMsg.PaymentStatus == PaymetStatus.Pending) { description = "Payment Pending"; } PaymentProcessed eventPaymentProcessed = new PaymentProcessed(eventMsg.BookingOrderId, description, eventMsg.Id, messageType, eventMsg.CreationDate); bookingId = eventMsg.BookingOrderId; tracking.PaymentProcessed(eventPaymentProcessed); } //If Booking ID Exists if (!string.IsNullOrEmpty(bookingId)) { if (!string.IsNullOrEmpty(rCache.Get(bookingId))) { trackingHistory = JsonConvert.DeserializeObject <List <OrderHistory> >(rCache.Get(bookingId)); } //Append new event to old events trackingHistory.AddRange(tracking.orderHistory); //Serialze the result var result = JsonConvert.SerializeObject(trackingHistory); await rCache.Remove(bookingId); //Update the Cache if (!string.IsNullOrEmpty(result)) { await rCache.Save(bookingId, result); } } } catch (Exception ex) { throw ex; } }
public IEnumerable <EventBase> OrderPicked(OrderPicked e) { return(HandleEvent(e)); }