public async Task <IActionResult> SaveDelivery(Models.Delivery delivery) { try { IActionResult result = null; if (delivery == null) { return(BadRequest($"The delivery is invalid (null)")); } if (string.IsNullOrEmpty(delivery.Id)) { return(BadRequest($"The delivery id is invalid (null or empty)")); } if (await _repository.GetDeliveryByIdAsync(delivery.Id) == null) { result = this.CreatedAtRoute( routeName: "Default", value: await _repository.AddDeliveryAsync(delivery) ); } else { result = BadRequest($"The delivery with {delivery.Id} already exists"); } return(result); } catch (Exception ex) { throw new DeliveryDomainException("An error caused an exception", ex); } }
private void PublishDeliveryStatusChange(Models.Delivery delivery) { switch ((DTO.Status)delivery.IdStatus) { case DTO.Status.PickedUp: var deliveryPickedUpMessage = new FoodOnKontainers.Events.DTO.Delivery.DeliveryPickedUpEvent() { idOrder = delivery.IdOrder }; eventManager.DeliveryPickedUp(deliveryPickedUpMessage); break; case DTO.Status.Delivered: var deliveryCompletedMessage = new FoodOnKontainers.Events.DTO.Delivery.DeliveryCompletedEvent() { idOrder = delivery.IdOrder }; eventManager.DeliveryCompleted(deliveryCompletedMessage); break; case DTO.Status.ToPickUp: case DTO.Status.Canceled: default: break; } }
public async Task UpdateDelivery(DTO.Delivery delivery) { Models.Delivery current = await GetDelivery(delivery.Id); DeliveriesMapper.MapDeliveryDTO(current, delivery); await deliveriesDbContext.SaveChangesAsync(); }
public async Task UpdateDeliveryStatus(int idDelivery, DTO.Status newStatus) { Models.Delivery delivery = await GetDelivery(idDelivery); delivery.IdStatus = (int)newStatus; switch (newStatus) { case DTO.Status.ToPickUp: delivery.TakeChargeDate = DateTime.UtcNow; break; case DTO.Status.PickedUp: delivery.PickUpDate = DateTime.UtcNow; break; case DTO.Status.Delivered: delivery.DeliveryDate = DateTime.UtcNow; break; case DTO.Status.Canceled: default: break; } await deliveriesDbContext.SaveChangesAsync(); PublishDeliveryStatusChange(delivery); }
public async Task <ActionResult> SubmitDelivered(ViewModels.Delivery delivery, string IdOrder) { var order = await db.Orders.Where(x => x.Id == IdOrder).SingleOrDefaultAsync(); if (order != null) { var newDelivery = new Models.Delivery() { Id = Guid.NewGuid().ToString(), Created = DateTimeOffset.Now, ETA = delivery.ETA, TrackingNumber = delivery.TrackingNumber, Service = delivery.Service, Status = Models.DeliveryStatus.Procesing }; order.Delivery = newDelivery; order.Status = Models.OrderStatus.Delivered; db.Entry(order).State = EntityState.Modified; var result = await db.SaveChangesAsync(); if (result > 0) { return(RedirectToAction("DetailOrder", new { id = IdOrder })); } } return(View()); }
public string AjaxTest(string Name, string Secondname, string Adress, string Weight, string Comment, string Radio) { //Вартість доставки розраховується за принципом: //вартість доставки в місто + вага * вартість за кг. //вартість за кг - 30 грн //Полтава - 20 грн, Київ - 60 грн.Харків - 40 грн float costDelivery = 0; float weightNum = float.Parse(Weight); if (Adress == "Полтава") { costDelivery = 20 + weightNum * 30; } if (Adress == "Киев") { costDelivery = 60 + weightNum * 30; } if (Adress == "Харьков") { costDelivery = 40 + weightNum * 30; } Models.Delivery person = new Models.Delivery { first_name = Name, second_name = Secondname, adress = Adress, weight = weightNum, coment = Comment, type = Radio, cost = costDelivery }; db.Deliveries.Add(person); db.SaveChanges(); return(costDelivery.ToString()); }
public async Task <int> AddDelivery(DTO.Delivery delivery) { Models.Delivery newDelivery = DeliveriesMapper.MapNewDeliveryDTO(delivery); deliveriesDbContext.Delivery.Add(newDelivery); await deliveriesDbContext.SaveChangesAsync(); return(newDelivery.Id); }
internal static Models.Delivery MapNewDeliveryDTO(DTO.Delivery input) { Models.Delivery output = new Models.Delivery() { DeliveryAddress = input.DeliveryAddress, DeliveryName = input.DeliveryName, DeliveryRequestedDate = input.DeliveryRequestedDate ?? DateTime.UtcNow.AddHours(1), IdOrder = input.IdOrder, IdRestaurant = input.IdRestaurant, IdStatus = (int)DTO.Status.ToPickUp, PickUpAddress = input.PickUpAddress, RestaurantName = input.RestaurantName }; return output; }
internal static void MapDeliveryDTO(Models.Delivery current, DTO.Delivery input) { current.DeliveryAddress = string.IsNullOrEmpty(input.DeliveryAddress) ? current.DeliveryAddress : input.DeliveryAddress; current.DeliveryDate = input.DeliveryDate ?? current.DeliveryDate; current.DeliveryName = string.IsNullOrEmpty(input.DeliveryName) ? current.DeliveryName : input.DeliveryName; current.DeliveryRequestedDate = input.DeliveryRequestedDate ?? current.DeliveryRequestedDate; //current.IdOrder = input.IdOrder; current.IdRestaurant = input.IdRestaurant ?? current.IdRestaurant; current.IdRider = input.IdRider ?? current.IdRider; current.IdStatus = input.IdStatus ?? (int)DTO.Status.ToPickUp; current.PickUpAddress = string.IsNullOrEmpty(input.PickUpAddress) ? current.PickUpAddress : input.PickUpAddress; current.PickUpDate = input.PickUpDate ?? current.PickUpDate; current.RestaurantName = string.IsNullOrEmpty(input.RestaurantName) ? current.RestaurantName : input.RestaurantName; current.TakeChargeDate = input.TakeChargeDate ?? input.TakeChargeDate; }
public async void SaveDeliveryCreated(Models.Delivery[] deliveries) { // Arrange Models.Delivery deliveryToSave = deliveries[0]; var mock = new Mock <IDeliveryRepository>(); DeliveryController controller = new DeliveryController(mock.Object); mock.Setup(rep => rep.GetDeliveryByIdAsync(It.IsAny <string>())).Returns(Task <Models.Delivery> .Run(() => default(Models.Delivery))); // Act CreatedAtRouteResult result = await controller.SaveDelivery(deliveryToSave) as CreatedAtRouteResult; // Assert Assert.Equal((int?)HttpStatusCode.Created, result.StatusCode); mock.Verify(rep => rep.AddDeliveryAsync(It.IsAny <Models.Delivery>()), Times.Once); }
public async Task <ActionResult <Models.Site> > Create(SiteCreateResponse response) { var user = new Models.User { Id = 1 }; using var transaction = _context.Database.BeginTransaction(); _context.Attach(user); var existSite = await _context.Sites.Where(s => s.Slug == response.Slug).FirstOrDefaultAsync(); if (existSite != null) { return(BadRequest("Exist slug")); } var site = new Models.Site { Address = response.Address ?? "Москва, Первомайская 28А", Deliveries = null, Description = response.Description ?? "Федеральная сеть столовх BestFood - это демократичные столовые, расположенные в различных районах Москвы и Московской области. Мы взяли все самое лучшее из советского общепита и сделали наши блюда вкусными, разнообразными и по-настоящему домашними. Почти все, что мы предлагаем Вам, приготовлено по собственным рецептам – включая выпечку и напитки. Широкий ассортимент позволит каждому гостю подобрать блюдо по вкусу. Также мы готовим специальное меню к таким праздникам, как Новый год, Масленица, Великий пост и многим другим. И пусть Вас не пугают очереди в наших столовых! Стоять долго не придется, потому что Вы всегда можете оформить заказ на нашем сайте \"Veryfood.ru\" и оплатить с помощью банковской карты или наличными. Наши курьеры доставят Вам заказ в кратчайшие сроки вместе с комплектом приборов, чтобы вы могли насладиться едой без лишних неудобств. Мы вседа рады новым клиентам, приятного аппетита!", Name = response.Name, Phone = response.Phone ?? "+7(915)123-45-67", Categories = null, Slug = response.Slug, Type = response.Type, User = user, }; _context.Sites.Add(site); var delivery = new Models.Delivery { Id = 0, Type = "courier", Cost = 30, Description = "Наша доставка еды по Подмосковью работает ежедневно с 10:00 до 21:40. Мы готовы принять ваш заказ и оформить доставку еды в офис, квартиру, общежитие или университет. Примерное время доставки еды составляет 30 минут. Время доставки еды может меняться в зависимости от вашего местонахождения, загрузки обслуживающего персонала.", Site = site, }; _context.Deliveries.Add(delivery); await _context.SaveChangesAsync(); transaction.Commit(); return(site); }
public async void SaveDeliveryBadRequestIdIsNullOrEmpty() { // Arrange Models.Delivery delivery = new Models.Delivery() { Id = string.Empty }; var mock = new Mock <IDeliveryRepository>(); DeliveryController controller = new DeliveryController(mock.Object); // Act BadRequestObjectResult result = await controller.SaveDelivery(delivery) as BadRequestObjectResult; // Assert mock.Verify(rep => rep.AddDeliveryAsync(It.IsAny <Models.Delivery>()), Times.Never); Assert.Equal((int?)HttpStatusCode.BadRequest, result.StatusCode); }
public async void UpdateDeliveryOk(Models.Delivery[] deliveries) { // Arrange var mock = new Mock <IDeliveryRepository>(); Models.Delivery deliveryToUpdate = deliveries[0]; mock.Setup(rep => rep.GetDeliveryByIdAsync(It.IsAny <string>())) .Returns(Task <Models.Delivery> .Run(() => deliveryToUpdate)); DeliveryController controller = new DeliveryController(mock.Object); // Act OkObjectResult model = await controller.UpdateDelivery( deliveryToUpdate.Id, new JsonPatchDocument <Models.Delivery>()) as OkObjectResult; // Assert Assert.Equal((int?)HttpStatusCode.OK, model.StatusCode); mock.Verify(rep => rep.GetDeliveryByIdAsync(It.IsAny <string>()), Times.Once); mock.Verify(rep => rep.UpdateDeliveryAsync(It.IsAny <string>(), It.IsAny <Models.Delivery>()), Times.Once); }
public async Task <IActionResult> UpdateDelivery(string id, [FromBody] JsonPatchDocument <Models.Delivery> patch) { IActionResult result = null; Models.Delivery delivery = null; try { if (string.IsNullOrEmpty(id)) { return(BadRequest($"The id {id} is not valid (null or empty)")); } if (patch == null) { return(BadRequest($"The patch argument is not valid")); } delivery = await _repository.GetDeliveryByIdAsync(id); if (delivery != null) { patch?.ApplyTo(delivery); delivery = await _repository.UpdateDeliveryAsync(id, delivery); result = Ok(delivery); } else { result = NotFound($"The delivery with id {id} was not found"); } return(result); } catch (Exception ex) { throw new DeliveryDomainException("An error caused an exception", ex); } }