public void Execute(OrderAddDto request) { _validator.ValidateAndThrow(request); var order = new Order { UserId = _actor.Id, Address = request.Address, OrderDate = request.OrderDate }; foreach (var item in request.Items) { var product = _context.Products.Find(item.ProductId); product.Quantity -= item.Quantity; order.OrderLines.Add(new OrderLine { ProductId = item.ProductId, Quantity = item.Quantity, Name = product.Name, Price = product.Price }); } _context.Orders.Add(order); _context.SaveChanges(); }
public async Task <ServiceResponse <List <OrderGetDto> > > AddOrder(OrderAddDto newOrder) { ServiceResponse <List <OrderGetDto> > serviceResponse = new ServiceResponse <List <OrderGetDto> >(); // Order order = _mapper.Map<Order>(newOrder); /* * I'm not actually quite sure why the above didn't work for order like it did for the * rest of the entities. I am definitely not the most certain about AutoMapper. */ Order order = new Order(); try { order.transactionid = newOrder.transaction; order.productid = newOrder.product; order.quantity = newOrder.quantity; await _context.Orders.AddAsync(order); await _context.SaveChangesAsync(); serviceResponse.Data = (_context.Orders.Select(u => _mapper.Map <OrderGetDto>(u))).ToList(); } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public async Task <IActionResult> AddOrder([FromBody] OrderAddDto order) { Guid userID = new(User.FindFirst(ClaimTypes.NameIdentifier)?.Value); var user = userRepository.GetUserAsync(userID); if (user == null) { return(NotFound(nameof(userID))); } var itemCount = order.OrderItems.Count(); if (itemCount == 0) { return(UnprocessableEntity("Order item is empty!")); } var now = DateTime.Now; string orderID = $"{(now.Year-2020).ToString().PadLeft(2,'0')}{(now.DayOfYear*24*60+now.Hour*60+now.Minute).ToString().PadLeft(6,'0')}{(user.Id % 10000).ToString().PadLeft(4,'0')}{random.Next(10000).ToString().PadLeft(4,'0')}"; var orderItems = new List <OrderItem>(itemCount); decimal originalPrice = 0m; foreach (var addItem in order.OrderItems) { var product = await productRepository.GetProductAsync(addItem.ProductID); var orderItem = new OrderItem() { OrderID = orderID, ProductID = addItem.ProductID, Price = product.Price, Amount = addItem.Amount, }; orderItems.Add(orderItem); originalPrice += product.Price * addItem.Amount; } Order orderEntity = new() { UserID = userID, OrderID = orderID, OrderItems = orderItems, Status = OrderStatus.待付款, OrderTime = now, ShippingAddrId = order.ShippingAddrId, CouponAmount = CalcCoupon(), OriginalPrice = originalPrice, ShippingFare = CalcShippingFare(), }; orderRepository.AddOrder(userID, orderEntity); await orderRepository.SaveAsync(); var dtoToReturn = mapper.Map <OrderDetailDto>(orderEntity); return(CreatedAtRoute(nameof(GetOrder), new { userID, orderID }, dtoToReturn)); }
public async Task <IActionResult> AddOrder(OrderAddDto newOrder) { ServiceResponse <List <OrderGetDto> > response = await _orderService.AddOrder(newOrder); if (response.Data == null) { return(NotFound(response)); } return(Ok(response)); }
public async Task <IActionResult> PlaceOrder(OrderAddDto orderAddDto) { Order placeOrder = _mapper.Map <Order>(orderAddDto); if (await _orderRepository.AddAsync(placeOrder)) { return(Ok(placeOrder)); } else { return(BadRequest("Purchase Failed")); } }
public async Task <ActionResult <ApiResponse <Order> > > Add(OrderAddDto dto) { try { var createdOrder = await _orderService.AddOrderWithoutPayment(dto); return(createdOrder.CreateSuccessResponse("Order created successfully!")); } catch (Exception exception) { return(BadRequest(exception.CreateErrorResponse())); } }
public async Task <IActionResult> AddOrder(OrderAddDto orderAddDto) { //get user id from token var order = new Order { UserId = orderAddDto.UserId }; await _orderRepository.AddOrderAsync(order); if (!await _unitOfWOrk.SaveAsync()) { return(BadRequest("Failed to add order")); } return(Created("Orders", new { id = order.Id })); }
public async Task <ActionResult <Order> > CreateOrder([FromBody] OrderAddDto orderAdd) { if (orderAdd == null) { return(BadRequest()); } var order = mapper.Map <Order>(orderAdd); repository.AddOrder(order); await repository.SaveChangesAsync(); var orderDto = mapper.Map <OrderDto>(order); return(CreatedAtRoute(nameof(GetOrder), new { orderId = orderDto.Id }, orderDto)); }
public void AddOrder(OrderAddDto orderAddDto) { List <OrderBox> orderBoxes = SnHelper.GetListboxNumber(orderAddDto.SnMin, orderAddDto.OnLineQuantity).Select(item => new OrderBox() { //设置外键Id OrderId = orderAddDto.OrderId, //盒号 BoxNumber = item, //新建时间 OrderBoxCreateTime = DateTime.Now }).ToList(); var newEntity = _mapper.Map <OrderPlacing>(orderAddDto); newEntity.OrderBoxes = orderBoxes; _orderRepository.Insert(newEntity); _unitOfWork.SaveChanges(); ; }
public IActionResult AddOrder(OrderAddDto orderAddDto) { var addingOrder = _mapper.Map <OrderAddDto, Order>(orderAddDto); addingOrder.OrderDate = DateTime.Now; var addedOrder = _orderService.Add(addingOrder); foreach (var orderedProduct in orderAddDto.OrderedProductsList) { OrderedProduct op = new OrderedProduct(); op.OrderId = addedOrder.Id; op.ProductId = orderedProduct.ProductId; op.Count = orderedProduct.Count; _orderService.AddOrderedProduct(op); } return(Ok(Messages.OrderAdded)); }
public async Task <Order> AddOrderWithoutPayment(OrderAddDto dto) { var cart = await _cartService.GetCartById(customerId : dto.CustomerId); var newOrder = _prepareOrderFromCart(cart); newOrder.PaymentMethodRef = dto.PaymentMethodId.ToReference <PaymentMethod>(); newOrder.ShippingMethodRef = dto.ShippingMethodId.ToReference <ShippingMethod>(); newOrder.Trackings.Prepend(new OrderTracking { Description = OrderTracking.GetDescription(newOrder.OrderStatus), Status = newOrder.OrderStatus }); await Add(newOrder); await _cartService.ToggleActivationById(cart.ID, false); return(newOrder); }
/// <summary> /// 生成订单和 对应的盒号 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOrder_Click(object sender, EventArgs e) { var orderService = AutofacContainer.GetInstance().GetObject <IOrderService>(); try { if (_modify)//修改订单信息 { //判断是否修改了订单数量 修改了 删除盒号 重新生成 if ((beforeModifyCount != _orderEdit.OnLineQuantity) || (beforeModifySnMin != _orderEdit.SnMin)) { orderService.EditOrder(_orderEdit, true); } else { orderService.EditOrder(_orderEdit, false); } MessageBox.Show("修改成功!"); this.DialogResult = DialogResult.OK; //设置窗体返回值 this.Dispose(); } else//新增 { if (orderService.PlanNoExist(this.PlanNoTxtBox.Text.Trim())) { MessageBox.Show("当前计划单号" + this.PlanNoTxtBox.Text + "数据库已存在"); this.PlanNoTxtBox.Select(); return; } OrderAddDto orderAddDto = new OrderAddDto() { OrderDate = Convert.ToDateTime(this.OrderDateTimePic.Text), Type = this.TypeTxtBox.Text, PlanNo = this.PlanNoTxtBox.Text, FinishedProductNo = this.FinishedProductNocBox.Text, ProductTypeNo = this.ProductTypecBox.Text, OnLineQuantity = Convert.ToInt32(this.OnlineQuantityTxtBox.Text), SnMin = SnMinTxtBox.Text, SnMax = this.SnMaxTxtBox.Text, LabelingRequirements = this.LableRequireTxtBox.Text, TestReport = this.TestReportTxtBox.Text, CodingRequirements = this.CodingRequireTxtBox.Text, PackingRequirement = this.PackingRequireTxtBox.Text, SpecialRequirement = this.SpecialRequireTxtBox.Text, TestSoftConfigFile = this.TestSoftConfigFIleTxtBox.Text, Remark = this.RemarkTxtBox.Text, CustomDemandDate = Convert.ToDateTime(this.CustonRequireTimePic.Text), PlannedLaunchDate = Convert.ToDateTime(this.PlanOnlineTimePic.Text), PlanStorageDate = Convert.ToDateTime(this.PlanStorageTimePic.Text), DaysOfProduction = Convert.ToByte(this.ProductDaysTxtBox.Text), OrderCreateTime = DateTime.Now, StorageFinishedFlag = "0" }; orderService.AddOrder(orderAddDto); this.lbInfo.Text = orderAddDto.PlanNo + "下单成功!"; btnClear_Click(null, null); } } catch (Exception ex) { MessageBox.Show("操作失败,请检查数据是否符合规范" + ex.Message); } }
public IActionResult Post([FromBody] OrderAddDto dto, [FromServices] IOrderAddCommand command) { executor.ExecuteCommand(command, dto); return(StatusCode(StatusCodes.Status201Created)); }
public async Task <IActionResult> ConfirmOrder(OrderAddDto orderAddDto) { var cartsInDbList = await _cartService.GetAllWithProductAsync(HttpContext.GetCookie("BerendBebeCart")); if (!ModelState.IsValid) { orderAddDto.Carts = cartsInDbList; orderAddDto.PaymentTypes = await _paymentTypeService.GetAllAsync(); return(View(orderAddDto).ShowMessage(Status.Error, "Hata", "Eksik veya hatalı bilgiler mevcut")); } var order = _mapper.Map <Order>(orderAddDto); var savedOrder = await _orderService.AddAsync(order); foreach (var cart in cartsInDbList) { OrderDetail orderDetail = new OrderDetail { ProductId = cart.ProductId, OrderId = savedOrder.Id, Price = cart.Product.Price, ProductName = cart.Product.ProductName, Quantity = cart.Quantity, ShowImageUrl = cart.Product.ShowImageUrl }; //Ürün stok kontrol işlemi if (!await _productService.ProductUnitInStokCountControlAsync(cart.ProductId, cart.Quantity)) { var productInDb = await _productService.FindByIdAsync(cart.ProductId); orderAddDto.Carts = cartsInDbList; orderAddDto.PaymentTypes = await _paymentTypeService.GetAllAsync(); await _orderService.RemoveAsync(savedOrder); return(View(orderAddDto).ShowMessage(Status.Error, "Hata", "Sepetinizde stoğu yeterli olmayan ürünler bulunmaktadrı.")); } await _orderDetailService.AddAsync(orderDetail); } await _cartService.RemoveAsync(cartsInDbList); try { var body = new StringBuilder(); body.AppendLine($"Merhaba {orderAddDto.Name} {orderAddDto.LastName},"); body.AppendLine($"<br />"); body.AppendLine($"<br />"); body.AppendLine($"<b>{savedOrder.Id}</b> numaralı siparişini aldık. Alışverişinde bizi tercih ettiğiniz için teşekkür ederiz."); body.AppendLine($"<br />"); body.AppendLine("<hr />"); body.AppendLine($"<br />"); body.AppendLine("<b>Teslimat Adresi: </b> "); body.AppendLine($"<br />"); body.AppendLine($"{orderAddDto.Address} {orderAddDto.City}"); SendMail.MailSender($"BerendBebe - Siparişini Aldık", body.ToString(), orderAddDto.Email); body.Clear(); var userInDb = await _userManager.FindByNameAsync("admin"); body.AppendLine($"Yeni bir siparişiniz var."); body.AppendLine($"<br />"); body.AppendLine($"<a href=\"https://berendbebe.com/Admin/Order/OrderDetail/2\"{savedOrder.Id}\">Sipiş Detayına Git</a>"); body.AppendLine($"<br />"); body.AppendLine("<hr />"); body.AppendLine($"<br />"); body.AppendLine("<b>Teslimat Adresi: </b> "); body.AppendLine($"<br />"); body.AppendLine($"{orderAddDto.Address} {orderAddDto.City}"); SendMail.MailSender($"BerendBebe - Yeni Sipariş", body.ToString(), orderAddDto.Email); } catch (Exception) { //return View(contactSendDto).ShowMessage(Status.Error, "Hata", "Mail gönderme işlemi sırasında hata oluştu!"); } return(RedirectToAction("Index", "Product").ShowMessage(Status.Ok, "Başarılı", "Siparişiniz alınmıştır. Onaylanıp kargoya verildikten sonra tarafınıza bilgi verilecektir.")); }
public async Task <ActionResult <ApiResponse <InitResponse> > > InitiateTransaction([FromBody] OrderAddDto dto) { try { var parameters = new Dictionary <string, string>(); var transactionId = ObjectId.GenerateNewId().ToString(); parameters.Add("value_a", dto.CustomerId); parameters.Add("currency", dto.Currency); parameters.Add("tran_id", transactionId); parameters = await _cartService.GetCartDetailToOrder(dto.CustomerId, parameters); var initResponse = await _sslCommerzService.InitiateTransaction(parameters); var session = await _customerTransactionSessionService.AddSession(dto.CustomerId, transactionId, dto.Currency, initResponse.SessionKey); if (session == null) { throw new Exception("Invalid Session"); } return(initResponse.CreateSuccessResponse("Payment transaction initiated successfully!")); } catch (Exception exception) { return(BadRequest(exception.CreateErrorResponse())); } }