Example #1
0
        public void PlaceOrder(int orderId)
        {
            try
            {
                //dobaviti neophodne korisnicke podatke
                int    userId    = userLogger.GetLoggedUserId();
                string userEmail = userLogger.GetUserEmail(userId);

                //proveriti dostupnost proizvoda
                bool productAvailable = productChecker.CheckProductAvailability(orderId);

                //ukoliko su svi proizvodi dostupni skinuti proizvode sa stanja, sacuvati porudzbinu u bazi i poslati mejl potvrde
                if (productAvailable)
                {
                    stockManager.TakeOffStock(orderId);   //skidanje sa lagera
                    order.SaveOrderToDB(orderId, userId); //cuvanje porudzbine u bazi
                    emailSender.SendEmail(userEmail,
                                          "Order created successfully",
                                          "Your order was created successfully. You can use the orderId=" + orderId + " to track your order."); //slanje mejla potvrde
                }
                else
                {
                    throw new Exception("Some products are not available"); //neki proizvod nije dostupan
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Equals("Some products are not available"))
                {
                    order.RemoveFromDB(orderId);      //porudzbina sa svim proizvodima se uklanja iz baze
                    stockManager.PutOnStock(orderId); //vracanje starog stanja na lageru
                }
                errorLogger.LogError(ex.Message);     //logovanje greske
                throw ex;
            }
        }