Пример #1
0
        public async Task <bool> RegisterCart(OrderInsertDto order)
        {
            //TODO: LENGTH OF PARAMETERS SHOULD BE CHECKED
            try
            {
                #region GET CURRENT SHOPPING CART
                var     currentCart = GetShoppingCart(order.CartId).Result;
                decimal totalCost   = 0;
                foreach (var item in currentCart)
                {
                    totalCost += item.Quantity * item.UnitPrice;
                }
                #endregion


                using (var connection = new SqlConnection(_conString))
                {
                    connection.Open();
                    using (var transaction = connection.BeginTransaction())
                    {
                        try
                        {
                            #region INSTER IN ORDERS TABLE
                            var sql = "INSERT INTO [Orders] ([OrderDate],[Username],[FirstName],[LastName],[Address],[City],[State],[PostalCode] " +
                                      ",[Country] ,[Phone] ,[Email],[Total],[HasBeenShipped]) " +
                                      $" VALUES ('{DateTime.Now}' , '{order.Username}' , '{order.FirstName}' , '{order.LastName}' , '{order.Address}' , '{order.City}' " +
                                      $" , '{order.State}' , '{order.PostalCode}' , '{order.Country}' , '{order.Phone}' , '{order.Email}', '{totalCost}', 'false') " +
                                      " SELECT CAST(SCOPE_IDENTITY() as int);";
                            var OrderId = connection.QuerySingleOrDefault <int>(sql, transaction: transaction);
                            #endregion

                            #region INSERT IN ORDER DETAILS
                            string        firstPartInsert = "INSERT INTO [OrderDetails]([OrderId],[Username] ,[ProductId] ,[Quantity],[UnitPrice])  VALUES";
                            StringBuilder sqlInsert       = new StringBuilder(firstPartInsert);
                            foreach (var itemInCart in currentCart)
                            {
                                sqlInsert.Append($"('{OrderId}' , '{order.Username}' , '{itemInCart.ProductId}' , '{itemInCart.Quantity}' , '{itemInCart.UnitPrice}') ,");
                            }

                            sqlInsert.Length--;
                            connection.QuerySingleOrDefault <int>(sqlInsert.ToString(), transaction: transaction);
                            #endregion

                            transaction.Commit();
                        }
                        catch (Exception e)
                        {
                            transaction.Rollback();
                            throw e;
                        }
                    }
                }
                return(true);
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
0
        public async Task <IActionResult> PostRegister(OrderInsertDto cartInsertDto)
        {
            var res = await _orderService.RegisterOrder(cartInsertDto);

            if (res == false)
            {
                return(Problem());
            }

            return(Ok(res));
        }
Пример #3
0
        public void RegisterOrder_WhenCalled_RegisterCart()
        {
            var mockOrderRepository = new Mock <IOrderRepository>();
            var register            = new OrderService(mockOrderRepository.Object);

            var insertDto = new OrderInsertDto();

            register.RegisterOrder(insertDto);

            mockOrderRepository.Verify(s => s.RegisterCart(insertDto));
        }
Пример #4
0
 public async Task <bool> RegisterOrder(OrderInsertDto regOrder)
 {
     try
     {
         return(await _orderrepository.RegisterCart(regOrder));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Пример #5
0
 public Guid AddOrder(OrderInsertDto dto)
 {
     using (_context)
     {
         using (var transaction = _context.Database.BeginTransaction())
         {
             try
             {
                 var temp = new Order()
                 {
                     Id         = new Guid(),
                     Created_at = DateTime.Now,
                     CustomerId = dto.BuyerId,
                     Status     = dto.Status,
                     Total      = dto.Total
                 };
                 var order     = _context.Set <Order>().Add(temp);
                 var listItens = new List <OrderItens>();
                 dto.Itens.ForEach(f =>
                 {
                     listItens.Add(new OrderItens()
                     {
                         Total      = f.Total,
                         Id         = new Guid(),
                         Amount     = f.Amount,
                         OrderId    = temp.Id,
                         ProductId  = f.ProductId,
                         price_unit = f.price_unit
                     });
                 });
                 _context.Set <OrderItens>().AddRange(listItens);
                 _context.SaveChanges();
                 transaction.Commit();
                 return(order.Entity.Id);
             }
             catch (System.Exception e)
             {
                 transaction.Rollback();
                 Console.WriteLine(e);
                 throw;
             }
         }
     }
 }
Пример #6
0
        public IHttpActionResult Post([FromBody] OrderInsertDto order)
        {
            if (order == null || ModelState.IsValid == false || order.Items.Length == 0)
            {
                return(BadRequest());
            }

            var newOrder = new Order()
            {
                CreatedAt       = DateTime.Now,
                ShippingAddress = order.ShippingAddress,
                Status          = (int)OrderStatus.Created
            };
            var items = order.Items.Select(p => new OrderItem()
            {
                ProductId = p.ProductId,
                Qty       = p.Quantity,
                UnitPrice = p.Price
            });

            ordersRepo.Insert(newOrder, items.ToArray());
            return(Ok());
        }
        public Guid AddOrder(OrderInsertDto dto)
        {
            var Order = _repository.AddOrder(dto);

            return(Order);
        }