public void UpdateTrackingInfo(Guid orderId) { var order = _orderRepository.Get(orderId); Validate.Found(order, "Orderan"); var getTrackingInputDto = new GetTrackingInputDto() { AirWayBill = order.Shipment.AirWaybill, ExpeditionService = order.Shipment.ExpeditionService }; var result = _rajaOngkirService.Tracking(getTrackingInputDto); var shipmentDateSplited = result.WayBillDate.Split("-"); var shipmentTimeSplited = result.WayBillTime.Split(":"); var shipmentDateTime = new DateTime(Convert.ToInt32(shipmentDateSplited[0]), Convert.ToInt32(shipmentDateSplited[1]), Convert.ToInt32(shipmentDateSplited[2]), Convert.ToInt32(shipmentTimeSplited[0]), Convert.ToInt32(shipmentTimeSplited[1]), 0); if (result.ProofOfDeliveryDate.IsNull()) { order.UpdateTrackingInfo(shipmentDateTime, result.Status, "", null); } else { var podDateSplited = result.ProofOfDeliveryDate.Split("-"); var podTimeSplited = result.ProofOfDeliveryTime.Split(":"); var proofOfDeliveryDateTime = new DateTime(Convert.ToInt32(podDateSplited[0]), Convert.ToInt32(podDateSplited[1]), Convert.ToInt32(podDateSplited[2]), Convert.ToInt32(podTimeSplited[0]), Convert.ToInt32(podTimeSplited[1]), 0); order.UpdateTrackingInfo(shipmentDateTime, result.Status, result.ProofOfDeliveryReceiver, proofOfDeliveryDateTime); } foreach (var trackingDetail in result.Details) { var trackingDateplited = trackingDetail.TrackingDate.Split("-"); var trackingTimeSplited = trackingDetail.TrackingTime.Split(":"); var trackingDateTime = new DateTime(Convert.ToInt32(trackingDateplited[0]), Convert.ToInt32(trackingDateplited[1]), Convert.ToInt32(trackingDateplited[2]), Convert.ToInt32(trackingTimeSplited[0]), Convert.ToInt32(trackingTimeSplited[1]), 0); order.AddDetailTrackingInfo(trackingDetail.Code, trackingDetail.Description, trackingDateTime, trackingDetail.CityName); } if (order.Shipment.IsDelivered) { this.CompleteOrder(order.Id); } _orderRepository.Update(order); }