public OrdersController(CategoryRepository categoryRepository, UserRepository userRepository, SubcategoryRepository subcategoryRepository, OrdersRepository ordersRepository, AssetRepository assetRepository, TaskRepository taskRepository, ReviewRepository reviewRepository, UserService userService, UserResponseHistoryRepository userResponseHistoryRepository, ViewCounterService viewCounterService, BillingService billingService, GigbucketDbContext dbContext) { _categoryRepository = categoryRepository; _userRepository = userRepository; _subcategoryRepository = subcategoryRepository; _ordersRepository = ordersRepository; _assetRepository = assetRepository; _taskRepository = taskRepository; _reviewRepository = reviewRepository; _userService = userService; _userResponseHistoryRepository = userResponseHistoryRepository; _viewCounterService = viewCounterService; _billingService = billingService; _dbContext = dbContext; }
/// <summary> /// Updates A User Order Item /// Level: Logic /// </summary> /// <param name="OrderID">The order id</param> /// <param name="ProductID">The product id</param> /// <param name="NewQuantity">The new quantity</param> /// <returns>True if successful false if not</returns> public bool UpdateUserOrderItem(Guid OrderID, Guid ProductID, int NewQuantity) { DbTransaction myTransaction = null; OrdersRepository myRepository = new OrdersRepository(); myRepository.Entities.Connection.Open(); using (myTransaction = myRepository.Entities.Connection.BeginTransaction()) { try { bool Result = myRepository.UpdateUserOrderItem(OrderID, ProductID, NewQuantity); if (Result == true) { myTransaction.Commit(); myRepository.Entities.Connection.Close(); return true; } else { return false; } } catch (Exception Exception) { if (myTransaction != null) { myTransaction.Rollback(); } if (myRepository != null) { myRepository.Entities.Connection.Close(); } throw Exception; } } //return new OrdersRepository().UpdateUserOrderItem(OrderID, ProductID, NewQuantity); }
/// <summary> /// Adds an Order /// Level: Logic /// </summary> /// <param name="SupplierFK">Supplier ID</param> /// <param name="UserFK">User ID</param> /// <param name="myOrderItems">Collection of Order Items</param> /// <returns>True if successful false if not successful</returns> public bool AddOrder(int? SupplierFK, Guid? UserFK, string CreditCard, List<OrderItem> myOrderItems) { DbTransaction myTransaction = null; OrdersRepository myRepository = new OrdersRepository(); myRepository.Entities.Connection.Open(); using (myTransaction = myRepository.Entities.Connection.BeginTransaction()) { try { Order myOrder = new Order(); myOrder.Id = Guid.NewGuid(); myOrder.OrderDate = DateTime.Now; myOrder.OrderStatusFK = myRepository.RetrieveStatusByName("Ordered").Id; myOrder.UserFK = UserFK; myOrder.SupplierFK = SupplierFK; myRepository.AddOrder(myOrder); if (SupplierFK != null) { myRepository.AddOrderItems(myOrder.Id, myOrderItems); myTransaction.Commit(); myRepository.Entities.Connection.Close(); return true; } else { if (myRepository.AddUserOrderItems(myOrder.Id, myOrderItems)) // if mismatch occurs for quantity rollback { myTransaction.Rollback(); myRepository.Entities.Connection.Close(); return false; } else //else commit changes { myTransaction.Commit(); new UsersLogic().InsertCreditCardNumber(CreditCard, Guid.Parse(UserFK.ToString())); new ShoppingCartLogic().EmptyCart(Guid.Parse(UserFK.ToString())); User myUser = new UsersRepository().RetrieveUserById(Guid.Parse(UserFK.ToString())); new Mailing().PurchaseMail(myUser.UserDetail.Username, myUser.Email, myOrder.Id.ToString(), "*****@*****.**"); myRepository.Entities.Connection.Close(); return true; } } } catch (Exception Exception) { if (myTransaction != null) { myTransaction.Rollback(); } if (myRepository != null) { myRepository.Entities.Connection.Close(); } throw Exception; } } }
/// <summary> /// Removes a user order item /// Level: Logic /// </summary> /// <param name="OrderID">The Order ID</param> /// <param name="ProductID">The Product ID</param> public void RemoveUserOrderItem(Guid OrderID, Guid ProductID) { DbTransaction myTransaction = null; OrdersRepository myRepository = new OrdersRepository(); myRepository.Entities.Connection.Open(); using (myTransaction = myRepository.Entities.Connection.BeginTransaction()) { try { myRepository.RemoveUserOrderItem(OrderID, ProductID); myTransaction.Commit(); myRepository.Entities.Connection.Close(); } catch (Exception Exception) { if (myTransaction != null) { myTransaction.Rollback(); } if (myRepository != null) { myRepository.Entities.Connection.Close(); } throw Exception; } } //new OrdersRepository().RemoveUserOrderItem(OrderID, ProductID); }