Exemple #1
0
        public static string SaveDeliveryOrder(IDeliveryOrder deliveryOrder, List <DeliveryOrderContainerEntity> lstCntr, int modifiedBy)
        {
            int    result  = 0;
            string message = string.Empty;
            string xmlDoc  = GeneralFunctions.Serialize(lstCntr);

            result = DODAL.SaveDeliveryOrder(deliveryOrder, xmlDoc, modifiedBy);

            switch (result)
            {
            case -1:    //Transaction error occurs.
                message = "Transaction error occurs";
                break;

            case 0:     //No records saved.
                message = "No records saved";
                break;

            default:     //Successfully saved
                message = ResourceManager.GetStringWithoutName("ERR00009");
                break;
            }

            return(message);
        }
Exemple #2
0
        public static int SaveDeliveryOrder(IDeliveryOrder deliveryOrder, string xmlDoc, int modifiedBy)
        {
            int    result       = 0;
            Int64  newDOId      = 0;
            string newDONo      = string.Empty;
            string strExecution = "[exp].[uspSaveDeliveryOrder]";

            using (DbQuery oDq = new DbQuery(strExecution))
            {
                oDq.AddBigIntegerParam("@DOId", deliveryOrder.DeliveryOrderId);
                oDq.AddBigIntegerParam("@BookingId", deliveryOrder.BookingId);
                oDq.AddIntegerParam("@EmptyYardId", deliveryOrder.EmptyYardId);
                oDq.AddDateTimeParam("@DeliveryOrderDate", deliveryOrder.DeliveryOrderDate);
                oDq.AddNTextParam("@XmlDoc", xmlDoc);
                oDq.AddIntegerParam("@ModifiedBy", modifiedBy);
                oDq.AddBigIntegerParam("@NewDOId", newDOId, QueryParameterDirection.Output);
                oDq.AddVarcharParam("@DONumber", 50, newDONo, QueryParameterDirection.Output);
                oDq.AddBigIntegerParam("@fk_LeaseID", deliveryOrder.LeaseID);
                result = oDq.RunActionQuery();
                deliveryOrder.DeliveryOrderId     = newDOId;
                deliveryOrder.DeliveryOrderNumber = newDONo;
            }

            return(result);
        }
Exemple #3
0
 public static bool OrderDataChanged(IDeliveryOrder order, CommonCacheData cachedOrder, IConverter converter)
 {
     if (converter.ToCommonStatus(order.DeliveryStatus) != cachedOrder.Status)
     {
         return(true);
     }
     return(false);
 }
Exemple #4
0
 private void BuildDeliveryOrderEntity(IDeliveryOrder deliveryOrder)
 {
     deliveryOrder.DeliveryOrderId   = _doId;
     deliveryOrder.EmptyYardId       = Convert.ToInt32(ddlYard.SelectedValue);
     deliveryOrder.BookingId         = Convert.ToInt64(ddlBooking.SelectedValue);
     deliveryOrder.DeliveryOrderDate = Convert.ToDateTime(txtDoDate.Text.Trim(), _culture);
     deliveryOrder.LeaseID           = Convert.ToInt32(ddlLease.SelectedValue);
 }
        public object ToCreateOrderRequest(IDeliveryOrder order, PaymentTypes payType, decimal resultSum)
        {
            JeeblyCreateOrderRequest request = new JeeblyCreateOrderRequest();

            request.OrderId        = order.DeliveryId;
            request.OrganizationId = _organizationId;

            return(request);
        }
Exemple #6
0
        private void DoSave(IDeliveryOrder deliveryOrder, List <DeliveryOrderContainerEntity> lstContainer)
        {
            string message = string.Empty;

            if (DOBLL.ValidateContainer(lstContainer, out message))
            {
                message           = DOBLL.SaveDeliveryOrder(deliveryOrder, lstContainer, _userId);
                ViewState["DOId"] = deliveryOrder.DeliveryOrderId;
                GeneralFunctions.RegisterAlertScript(this, message);
            }
            else
            {
                GeneralFunctions.RegisterAlertScript(this, message);
            }
        }
        public object ToCreateOrderRequest(
            IDeliveryOrder order,
            PaymentTypes payType,
            decimal resultSum
            )
        {
            var result = new TawseelahCreateOrderRequest
            {
                user_id           = _userId,
                sender_name       = _restaurantName,
                sender_contact    = _restaurantContact,
                pickup_address    = _restaurantAddress,
                item_description  = order.Comment,
                vehicle_type      = "empty",
                payment_type      = payType.ToString(),
                receiver_name     = order.Client.Name,
                receiver_contact  = order.Client.Phones.Count() > 0 ? order.Client.Phones.First().Value : "Phone number is null",
                amount            = resultSum,
                delivery_datetime = $"{order.ExpectedDeliverTime.Year}/{order.ExpectedDeliverTime.Month}/{order.ExpectedDeliverTime.Day} " +
                                    $"{order.ExpectedDeliverTime.Hour}:{order.ExpectedDeliverTime.Minute}",
                remarks       = order.Comment,
                delivery_type = TawseelahDeliveryTypes.NORMAL.ToString()
            };

            var           chosenAddress = order.Address;
            StringBuilder address       = new StringBuilder();

            if (chosenAddress.Region != null)
            {
                address.Append("Region: " + chosenAddress.Region.Name + ", ");
            }
            if (chosenAddress.Street != null)
            {
                address.Append("Street: " + chosenAddress.Street.Name + ", ");
            }
            address.Append("Index: " + chosenAddress.Index + ", ");
            address.Append("House: " + chosenAddress.House + ", ");
            address.Append("Building: " + chosenAddress.Building + ", ");
            address.Append("Flat: " + chosenAddress.Flat);
            result.receiver_address = address.ToString();

            if (order.Latitude != null && order.Longitude != null)
            {
                result.pickup_lat = order.Latitude.Value;
                result.pickup_lng = order.Longitude.Value;
            }
            return(result);
        }
Exemple #8
0
        public static (PaymentTypes, decimal) GetPaymentTuple(IDeliveryOrder order, IConverter converter, string[] paymentTypes)
        {
            if (order.Payments.Count > 0)
            {
                PluginContext.Log.Info($"Delivery order {order.Number} with id {order.Id} and result sum - {order.ResultSum} " +
                                       $"has payments:\n{JsonConvert.SerializeObject(order.Payments)}");

                decimal totalCashSum = order.Payments.Where(i => i.Type.IsCash).Select(i => i.Sum).ToArray().Sum();
                PluginContext.Log.Info($"Total cash sum is: {totalCashSum}");

                return(converter.ToPaymentTuple(order.Payments));
            }
            else
            {
                return(PaymentTypes.COD, order.ResultSum);
            }
        }
        public JeeblyAddress(IDeliveryOrder order)
        {
            StringBuilder local  = new StringBuilder();
            StringBuilder region = new StringBuilder();

            if (order.Address.Street != null)
            {
                if (!string.IsNullOrEmpty(order.Address.Street.Name))
                {
                    local.Append($"Str: {order.Address.Street.Name}, ");
                }
            }
            if (!string.IsNullOrEmpty(order.Address.House))
            {
                local.Append($"House: {order.Address.House}, ");
            }
            if (!string.IsNullOrEmpty(order.Address.Flat))
            {
                local.Append($"Flat: {order.Address.Flat}");
            }

            if (order.Address.Region != null)
            {
                if (!string.IsNullOrEmpty($"Region: {order.Address.Region.Name}, "))
                {
                    region.Append(order.Address.Region.Name + ", ");
                }
                if (!string.IsNullOrEmpty($"Index: {order.Address.Index}"))
                {
                    region.Append(order.Address.Index);
                }
            }

            line_1    = local.ToString();
            line_2    = region.ToString();
            latitude  = order.Latitude;
            longitude = order.Longitude;
            land_mark = string.Empty;
        }
        private void CreateOrder(IDeliveryOrder order, AggregatorCell cell)
        {
            var paymentUnit    = Extensions.GetPaymentTuple(order, cell.Converter, cell.PaymentTypes);
            var createRequest  = cell.Converter.ToCreateOrderRequest(order, paymentUnit.Item1, paymentUnit.Item2);
            var createResponse = cell.ApiClient.CreateOrder(createRequest);

            var getRequest  = cell.Converter.ToGetOrderRequest(createResponse);
            var getResponse = cell.ApiClient.GetOrder(getRequest);

            if (getResponse == null)
            {
                PluginContext.Log.Info($"Could not get order {order.Number} (aggregator api does not support GetOrder request)");
            }

            var toCache = cell.Converter.ToCommonCache(createResponse);

            toCache.OrderId     = order.Id;
            toCache.OrderNumber = order.Number;
            toCache.Status      = cell.Converter.ToCommonStatus(order.DeliveryStatus);
            _cache.AddOrUpdate(order.Id, cell.Converter.ToCommonCache(createResponse));

            PluginContext.Log.Info($"Order with courier {order.Courier.Name} and #{order.Number} created: {createResponse.Message}");
        }
        private void OnDeliveryOrderChanged(IDeliveryOrder order)
        {
            try
            {
                if (order.Courier == null)
                {
                    return;
                }
                AggregatorCell currAggregator = _service.Get(order.Courier.Name.ToLower());
                if (currAggregator == null)
                {
                    return;
                }

                if (!_cache.Contains(order.Id))
                {
                    CreateOrder(order, currAggregator);
                }
            }
            catch (Exception ex)
            {
                PluginContext.Log.Error($"Failed to create or update Order {order.Number}", ex);
            }
        }
Exemple #12
0
 public Task<string> GetDeliveryTrackingNumber(IDeliveryOrder order, CancellationToken ct = default)
 {
     throw new System.NotImplementedException();
 }