public async Task <OrderDetailDto> HandleAsync(OrderQuery query) { Order o = await _orderRepo.GetAsync(query.OrderId); if (o is null) { throw new MedParkException("order_does_not_exist", $"Order {query.OrderId} does not exist."); } OrderDetailDto resultDto = _mapper.Map <OrderDetailDto>(o); IEnumerable <LineItem> lineItems = await _orderItemRepo.FindAsync(x => x.OrderId == query.OrderId); List <LineItemDto> liDtos = new List <LineItemDto>(); lineItems.ToList().ForEach(li => { LineItemDto liDto = _mapper.Map <LineItemDto>(li); liDtos.Add(liDto); }); resultDto.OrderItems = liDtos; return(resultDto); }
public HttpResponseMessage AddLineItem(LineItemDto lineItem) { var dbResult = OrderPlacement.AddLineItem(lineItem); return(Request.CreateAddRecordResponse(dbResult)); }
// DELETE api/LineItem/5 public HttpResponseMessage DeleteLineItem(int id) { LineItem lineitem = db.LineItems.Find(id); if (lineitem == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } if (db.Entry(lineitem.Order).Entity.UserId != User.Identity.Name) { // Trying to delete a record that does not belong to the user return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } LineItemDto lineItemDto = new LineItemDto(lineitem); db.LineItems.Remove(lineitem); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } return(Request.CreateResponse(HttpStatusCode.OK, lineItemDto)); }
// POST api/LineItem public HttpResponseMessage PostLineItem(LineItemDto lineitemDto) { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } Order order = db.Orders.Find(lineitemDto.OrderId); if (order == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } if (order.UserId != User.Identity.Name) { // Trying to add a record that does not belong to the user return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } LineItem lineItem = lineitemDto.ToEntity(); // Need to detach to avoid loop reference exception during JSON serialization db.Entry(order).State = EntityState.Detached; db.LineItems.Add(lineItem); db.SaveChanges(); lineitemDto.LineItemId = lineItem.LineItemId; HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, lineitemDto); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = lineitemDto.LineItemId })); return(response); }
public static LineItemDto ToLineItemsDTO(this LineItemModel lineItem) { var isValid = Enum.TryParse(typeof(ProductType), lineItem.ProductType, out object productType); if (!isValid) { throw new OrderException($"Product type {lineItem.ProductType} is not valid."); } var lineItemDto = new LineItemDto { ProductID = lineItem.ProductID, Category = lineItem.Category, Notes = lineItem.Notes, ProductName = lineItem.ProductName, ProductType = (ProductType)productType }; switch (lineItemDto.ProductType) { case ProductType.Website: lineItemDto.WebsiteDetails = new WebsiteDetailsDto { TemplateId = lineItem.WebsiteDetails.TemplateId, WebsiteAddressLine1 = lineItem.WebsiteDetails.WebsiteAddressLine1, WebsiteAddressLine2 = lineItem.WebsiteDetails.WebsiteAddressLine2, WebsiteBusinessName = lineItem.WebsiteDetails.WebsiteBusinessName, WebsiteCity = lineItem.WebsiteDetails.WebsiteCity, WebsiteEmail = lineItem.WebsiteDetails.WebsiteEmail, WebsiteMobile = lineItem.WebsiteDetails.WebsiteMobile, WebsitePhone = lineItem.WebsiteDetails.WebsitePhone, WebsitePostCode = lineItem.WebsiteDetails.WebsitePostCode, WebsiteState = lineItem.WebsiteDetails.WebsiteState, }; break; case ProductType.PaidSearch: lineItemDto.AdWordCampaign = new AdWordCampaignDto { CampaignName = lineItem.AdWordCampaign.CampaignName, CampaignAddressLine1 = lineItem.AdWordCampaign.CampaignAddressLine1, CampaignPostCode = lineItem.AdWordCampaign.CampaignPostCode, CampaignRadius = lineItem.AdWordCampaign.CampaignRadius, LeadPhoneNumber = lineItem.AdWordCampaign.LeadPhoneNumber, SMSPhoneNumber = lineItem.AdWordCampaign.SMSPhoneNumber, UniqueSellingPoint1 = lineItem.AdWordCampaign.UniqueSellingPoint1, UniqueSellingPoint2 = lineItem.AdWordCampaign.UniqueSellingPoint2, UniqueSellingPoint3 = lineItem.AdWordCampaign.UniqueSellingPoint3, Offer = lineItem.AdWordCampaign.Offer, DestinationURL = lineItem.AdWordCampaign.DestinationURL }; break; default: throw new OrderException($"Product type {lineItem.ProductType} is not valid."); } return(lineItemDto); }
private void AssertOrder(LineItemModel lineItem, LineItemDto lineItemDto) { Assert.Equal(lineItemDto.Category, lineItem.Category); Assert.Equal(lineItemDto.Notes, lineItem.Notes); Assert.Equal(lineItemDto.ProductName, lineItem.ProductName); Assert.Equal(lineItemDto.ProductID, lineItem.ProductID); Assert.Equal(lineItemDto.ProductType.ToString(), lineItem.ProductType); }
public static int AddLineItem(LineItemDto lineItem) { if (CheckForAvailableProduct(lineItem.ProductId) && CheckForOpenOrder(lineItem.OrderId)) { var repo = new LineItemRepository(); var dbResult = repo.Create(lineItem); if (dbResult == 1) { return(DecrementQuantity(lineItem.ProductId)); } } return(0); }
public WebsiteProduct(LineItemDto lineItemDto) : base(lineItemDto.ProductID, lineItemDto.ProductType, lineItemDto.Notes, lineItemDto.Category) { TemplateId = lineItemDto.WebsiteDetails.TemplateId; BusinessName = lineItemDto.WebsiteDetails.WebsiteBusinessName; AddressLine1 = lineItemDto.WebsiteDetails.WebsiteAddressLine1; AddressLine2 = lineItemDto.WebsiteDetails.WebsiteAddressLine2; City = lineItemDto.WebsiteDetails.WebsiteCity; State = lineItemDto.WebsiteDetails.WebsiteState; PostCode = lineItemDto.WebsiteDetails.WebsitePostCode; Phone = lineItemDto.WebsiteDetails.WebsitePhone; Email = lineItemDto.WebsiteDetails.WebsiteEmail; Mobile = lineItemDto.WebsiteDetails.WebsiteMobile; }
public PaidSearchProduct(LineItemDto lineItemDto) : base(lineItemDto.ProductID, lineItemDto.ProductType, lineItemDto.Notes, lineItemDto.Category) { CampaignName = lineItemDto.AdWordCampaign.CampaignName; CampaignAddressLine1 = lineItemDto.AdWordCampaign.CampaignAddressLine1; CampaignPostCode = lineItemDto.AdWordCampaign.CampaignPostCode; CampaignRadius = lineItemDto.AdWordCampaign.CampaignRadius; LeadPhoneNumber = lineItemDto.AdWordCampaign.LeadPhoneNumber; SMSPhoneNumber = lineItemDto.AdWordCampaign.SMSPhoneNumber; UniqueSellingPoint1 = lineItemDto.AdWordCampaign.UniqueSellingPoint1; UniqueSellingPoint2 = lineItemDto.AdWordCampaign.UniqueSellingPoint2; UniqueSellingPoint3 = lineItemDto.AdWordCampaign.UniqueSellingPoint3; Offer = lineItemDto.AdWordCampaign.Offer; DestinationURL = lineItemDto.AdWordCampaign.DestinationURL; }
private void PartFinderControl_OnJobPartAdded1(object sender, PartFinderControl.JobPartAddedArgs e) { LineItemDto newLineItem = new LineItemDto { PurchaseOrderID = orderDTO.PurchaseOrderID, Description = "new job part...", JobID = orderDTO.JobID, Quantity = 1.0m, PartID = 0, Price = decimal.Zero, UiD = 1 }; bsLineitems.Add(newLineItem); }
private void PartFinderControl_OnPartAdded1(object sender, PartFinderControl.PartAddedArgs e) { if (e.selectPart != null) { LineItemDto newLineItem = new LineItemDto { PurchaseOrderID = orderDTO.PurchaseOrderID, Description = e.selectPart.ItemDescription, JobID = orderDTO.JobID, Quantity = 1.0m, PartID = e.selectPart.PartID, Price = e.selectPart.Cost.GetValueOrDefault(), UiD = e.selectPart.UID.GetValueOrDefault() }; bsLineitems.Add(newLineItem); } }
public Product OrderProduct(LineItemDto lineItemDto) { switch (lineItemDto.ProductType) { case ProductType.Website: _productFactory = new WebsiteProductFactory(); break; case ProductType.PaidSearch: _productFactory = new PaidSearchProductFactory(); break; default: throw new OrderException($"Product type {lineItemDto.ProductType} is not valid."); } return(_productFactory.CreateProduct(lineItemDto)); }
// PUT api/LineItem/5 public HttpResponseMessage PutLineItem(int id, LineItemDto lineitemDto) { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } if (id != lineitemDto.LineItemId) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } LineItem lineItem = lineitemDto.ToEntity(); Order order = db.Orders.Find(lineItem.OrderId); if (order == null) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } if (order.UserId != User.Identity.Name) { // Trying to modify a record that does not belong to the user return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } // Need to detach to avoid duplicate primary key exception when SaveChanges is called db.Entry(order).State = EntityState.Detached; db.Entry(lineItem).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } return(Request.CreateResponse(HttpStatusCode.OK)); }
public async Task HandleAsync(CheckoutBasket command, ICorrelationContext context) { CustomerBasket basket = await _basketRepo.GetAsync(command.BasketId); if (basket is null) { throw new MedParkException("basket_does_not_exist", $"A basket for customer {command.BasketId} does not exist."); } IEnumerable <BasketItem> items = await _basketItemRepo.FindAsync(x => x.BasketId == command.BasketId); if (items.Count() == 0) { throw new MedParkException("basket_items_not_valid", $"The basket {command.BasketId} items are not valid to checkout."); } BasketCheckedOut basketCheckedOutEvent = new BasketCheckedOut(basket.CustomerId, command.ShippingType, command.ShippingAddress); List <LineItemDto> lineItems = new List <LineItemDto>(); items.ToList().ForEach(i => { LineItemDto lineItem = new LineItemDto { Id = Guid.NewGuid(), ProductCode = i.Code, Price = i.Price, ProductName = i.Name, Quantity = i.Quantity }; lineItems.Add(lineItem); }); basketCheckedOutEvent.Items = lineItems; //Publish event to start order await _busPublisher.PublishAsync(basketCheckedOutEvent, null); //Empty basket items.ToList().ForEach(async(i) => { await _basketItemRepo.DeleteAsync(i.Id); }); }
public Product CreateProduct(LineItemDto lineItemDto) { return(new WebsiteProduct(lineItemDto)); }
public Product CreateProduct(LineItemDto lineItemDto) { return(new PaidSearchProduct(lineItemDto)); }