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; } }
public async Task <IActionResult> PostRegister(OrderInsertDto cartInsertDto) { var res = await _orderService.RegisterOrder(cartInsertDto); if (res == false) { return(Problem()); } return(Ok(res)); }
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)); }
public async Task <bool> RegisterOrder(OrderInsertDto regOrder) { try { return(await _orderrepository.RegisterCart(regOrder)); } catch (Exception e) { throw e; } }
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; } } } }
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); }