Exemple #1
0
        /// <summary>
        /// After you've successfully created a delivery quote, it's time to create an actual delivery on the Postmates platform. It's recommended that you include the previously generated quote_id to ensure the costs and ETAs are consistent with the quote. Once a delivery is accepted, the delivery fee will be deducted from your account.
        /// </summary>
        /// <param name="createDelivery"></param>
        /// <returns>if sucessful DeliveryQuote else error</returns>
        public async Task <IResponse> CreateDeliveryAsync(CreateDelivery createDelivery)
        {
            if (createDelivery == null)
            {
                throw new ArgumentNullException(nameof(createDelivery));
            }

            createDelivery.Validate();

            using (var deliveryResponse = await _httpClient.PostAsync($"/v1/customers/{_customer_Id}/deliveries",
                                                                      new FormUrlEncodedContent(new[] {
                new KeyValuePair <string, string>("pickup_address", $"{createDelivery.PickupAddress.StreetNumber},{createDelivery.PickupAddress.City},{createDelivery.PickupAddress.State}"),
                new KeyValuePair <string, string>("dropoff_address", $"{createDelivery.DropoffAddress.StreetNumber},{createDelivery.DropoffAddress.City},{createDelivery.DropoffAddress.State}"),
                new KeyValuePair <string, string>("quote_id", createDelivery.QuoteId),
                new KeyValuePair <string, string>("manifest", createDelivery.Manifest),
                new KeyValuePair <string, string>("manifest_reference", createDelivery.ManifestReference),
                new KeyValuePair <string, string>("pickup_name", createDelivery.PickupName),
                new KeyValuePair <string, string>("pickup_phone_number", createDelivery.PickupPhoneNumber),
                new KeyValuePair <string, string>("pickup_business_name", createDelivery.PickupBusinessName),
                new KeyValuePair <string, string>("pickup_notes", createDelivery.PickupNotes),
                new KeyValuePair <string, string>("dropoff_name", createDelivery.DropoffName),
                new KeyValuePair <string, string>("dropoff_phone_number", createDelivery.DropoffPhoneNumber),
                new KeyValuePair <string, string>("dropoff_business_name", createDelivery.DropoffBusinessName),
                new KeyValuePair <string, string>("dropoff_notes", createDelivery.DropoffNotes)
            })).ConfigureAwait(false)) {
                return(await GetResponseAsync <Delivery>(deliveryResponse, ResponseKinds.delivery).ConfigureAwait(false));
            }
        }
Exemple #2
0
        public async Task <ActionResult> Post(CreateDelivery command)
        {
            await _commandDispatcher.SendAsync(command);

            return(Ok());
            //return CreatedAtAction(nameof(Get), new {orderId = command.OrderId}, null);
        }
Exemple #3
0
        public async Task HandleAsync(CreateDelivery command)
        {
            _logger.LogInformation($"Created an order with id: {command.CustomerId}, customer: {command.CustomerId}.");
            //tu zapis do bazy

            //await _publisher.PublishAsync(new OrderCreated(command.OrderId));
            await Task.CompletedTask;
        }
Exemple #4
0
        public void CREATE_ERROR_A_DELIVERY()
        {
            var handler     = A.Fake <IHttpHandler>();
            var errorString = "{\"kind\": \"error\",\"code\": \"invalid_params\",\"message\": \"The parameters of your request were invalid.\"}";

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(errorString),
                StatusCode = System.Net.HttpStatusCode.InternalServerError
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);
            var requst = new CreateDelivery {
                PickupAddress = new Address {
                    StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
                },
                DropoffAddress = new Address {
                    StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
                },
                PickupName         = "PickUpName",
                DropoffName        = "DropoffName",
                Manifest           = "Manifest",
                PickupPhoneNumber  = "111-111-1111",
                DropoffPhoneNumber = "111-111-1111"
            };


            var response = client.CreateDeliveryAsync(requst).Result;


            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.error, response.Kind);
            Assert.IsTrue(response.GetResponseObject <ErrorResponse>() is ErrorResponse);
            var error = response.GetResponseObject <ErrorResponse>();

            Assert.IsTrue(!string.IsNullOrEmpty(error.Code));
            Assert.IsTrue(!string.IsNullOrEmpty(error.Message));
            Assert.AreEqual((int)System.Net.HttpStatusCode.InternalServerError, error.HttpStatusCodes);
        }
Exemple #5
0
        public void CREATE_A_DELIVERY()
        {
            var handler       = A.Fake <IHttpHandler>();
            var deliverytring = System.IO.File.ReadAllText(@"targetFolder\CREATE_A_DELIVERY_RESPONSE.json");

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(deliverytring),
                StatusCode = System.Net.HttpStatusCode.OK
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var requst = new CreateDelivery {
                QuoteId       = "ssdfsgkfgf",
                PickupAddress = new Address {
                    StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
                },
                DropoffAddress = new Address {
                    StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
                },
                PickupName         = "PickUpName",
                DropoffName        = "DropoffName",
                Manifest           = "Manifest",
                PickupPhoneNumber  = "111-111-1111",
                DropoffPhoneNumber = "111-111-1111"
            };

            var response = client.CreateDeliveryAsync(requst).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.delivery, response.Kind);
            Assert.IsTrue(response.GetResponseObject <Delivery>() is Delivery);
            var delivery = response.GetResponseObject <Delivery>();

            Assert.IsNotNull(delivery);
        }
        public RequestResult CreateDelivery([FromBody] CreateDelivery createDelivery)
        {
            if (UserHelper.IsAuthorize(new List <int> {
                (int)UserType.SuperAdmin, (int)UserType.Admin, (int)UserType.Client
            }))
            {
                bool          isDifferent = false;
                RequestResult result      = new RequestResult();
                if (createDelivery.ATB != null)
                {
                    Regex ATBregex = new Regex("ATB[0-9]{18}");
                    if (!ATBregex.IsMatch(createDelivery.ATB))
                    {
                        result.Status  = false;
                        result.Message = "ATB is in wrong format";
                        return(result);
                    }
                }

                DateTime dateOfCreate = DateTime.Now;
                try
                {
                    if (_context.Deliveries.OrderByDescending(d => d.Created_At).FirstOrDefault() == null || _context.Deliveries.OrderByDescending(d => d.Created_At).FirstOrDefault().Created_At.Value.Month != DateTime.Now.Month)
                    {
                        var counter = _context.Counters.FirstOrDefault(c => c.Name == "DeliveryCounter");
                        counter.Count = 1;
                        _context.SaveChanges();
                    }
                    Delivery newDelivery = new Delivery();
                    newDelivery.Created_At       = dateOfCreate;
                    newDelivery.Date_Of_Delivery = dateOfCreate;
                    newDelivery.Delivery_Number  = _context.Counters.FirstOrDefault(c => c.Name == "DeliveryCounter").Count.ToString() + "/" + newDelivery.Date_Of_Delivery.Month.ToString() + "/" + newDelivery.Date_Of_Delivery.Year.ToString();
                    newDelivery.If_Delivery_Dispatch_Balanced = false;
                    newDelivery.If_PDF_And_Sent     = false;
                    newDelivery.If_PDF_Differential = false;
                    newDelivery.If_PDF_Dispatch     = false;
                    newDelivery.Order_Id            = createDelivery.Order_Id;
                    newDelivery.Car_Id     = createDelivery.Car_Id.RemoveWhiteSpaces();
                    newDelivery.Creator_Id = UserHelper.GetCurrentUserId();
                    _context.Deliveries.Add(newDelivery);
                    foreach (var item in createDelivery.DeliveryPositions)
                    {
                        Orders_Positions orderPositionToEdit = _context.Orders_Positions.FirstOrDefault(o => o.Id == item.Id && o.Deleted_At == null);
                        if (orderPositionToEdit != null)
                        {
                            orderPositionToEdit.Edited_At             = dateOfCreate;
                            orderPositionToEdit.Amount_Received       = item.Amount;
                            orderPositionToEdit.Weight_Gross_Received = Math.Round((decimal)(item.Amount * orderPositionToEdit.Unit_Weight), 2);
                            if (orderPositionToEdit.Amount != item.Amount)
                            {
                                isDifferent = true;
                            }
                        }
                        else
                        {
                            result.Status  = false;
                            result.Message = "Order Position not found";
                            return(result);
                        }
                    }
                    Order orderToEdit = _context.Orders.FirstOrDefault(o => o.Id == createDelivery.Order_Id && o.Deleted_At == null);
                    if (orderToEdit != null)
                    {
                        orderToEdit.Date_Of_Arrival       = dateOfCreate;
                        orderToEdit.Edited_At             = dateOfCreate;
                        orderToEdit.If_Delivery_Generated = true;

                        if (createDelivery.ATB != null)
                        {
                            orderToEdit.ATB = createDelivery.ATB.RemoveWhiteSpaces();
                        }

                        if (isDifferent)
                        {
                            newDelivery.If_Differential_Delivery_Order = true;
                            orderToEdit.Status = (int)OrderStatus.Difference;
                        }
                        else
                        {
                            newDelivery.If_Differential_Delivery_Order = false;
                            orderToEdit.Status = (int)OrderStatus.Accepted;
                        }

                        var deliveryCounter = _context.Counters.FirstOrDefault(c => c.Name == "DeliveryCounter");
                        deliveryCounter.Count++;
                        _context.SaveChanges();
                        result.Status  = true;
                        result.Message = "Delivery has been added";
                        return(result);
                    }
                    else
                    {
                        result.Status  = false;
                        result.Message = "Order not found";
                        return(result);
                    }
                }
                catch (Exception ex)
                {
                    result.Status  = false;
                    result.Message = ex.ToString();
                    return(result);
                }
            }
            else
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "User don't have acces to this method"));
            }
        }