Esempio n. 1
0
        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);
        }