/// <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)); } }
public async Task <ActionResult> Post(CreateDelivery command) { await _commandDispatcher.SendAsync(command); return(Ok()); //return CreatedAtAction(nameof(Get), new {orderId = command.OrderId}, null); }
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; }
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); }
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")); } }