Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
        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()));
            }
        }
Пример #7
0
        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 }));
        }
Пример #8
0
        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));
        }
Пример #9
0
        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();
            ;
        }
Пример #10
0
        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));
        }
Пример #11
0
        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);
        }
Пример #12
0
        /// <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));
 }
Пример #14
0
        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."));
        }
Пример #15
0
        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()));
            }
        }