예제 #1
0
        public async Task <ActionResult <VenteItem> > PostVenteItem(VenteItem venteItem)
        {
            reponse = "";

            Task <IConnection> connection      = ConnexionSingleton.Connexion("localhost", "guest", "guest", new ConnectionFactory());
            RabbitMQContext    rabbitMQContext = new RabbitMQContext(connection.Result.CreateModel());
            string             message         = JsonConvert.SerializeObject(venteItem);

            rabbitMQContext.OnRecupererReponse += TraiterReponse;
            rabbitMQContext.PublierMessage(message);
            while (reponse == "")
            {
            }
            if (reponse == "Valide")
            {
                _context.ProduitItems.Add(venteItem);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetVenteItem", new { id = venteItem.Id }, venteItem));
            }
            else
            {
                return(null);
            }
        }
        private void TraiterReq(object sender, MessageBodyEvent e)
        {
            VenteItem vente = JsonConvert.DeserializeObject <VenteItem>(e.Message);
            string    res   = Traitement.GérerStock(vente).Result;

            rabbitMQContext.publierReponse(e, res);
        }
        public static async Task <string> GérerStock(VenteItem vente)
        {
            MySqlConnection Connexion = await ConnexionSingletonBD.Connexion("localhost", "produitbase", "root", "");

            //cnx sing bd
            string query   = "UPDATE `produit` SET `Stock`= Stock -" + vente.Quantite + " WHERE id =" + vente.IdProduit + " && Stock >=" + vente.Quantite;
            string reponse = "";
            //Create a list to store the result
            ProduitItem produit = new ProduitItem();

            //Open connection
            if (await AccesBD.OpenConnection(Connexion) == true)
            {
                //Create Command
                MySqlCommand cmd = new MySqlCommand(query, Connexion);
                //Create a data reader and Execute the command
                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    Debug.WriteLine("\n\n" + ex.Message + "\n\n");
                    reponse = "sql Exception : " + ex.Message;
                }

                //Read the data and store them in the list
                reponse = "Valide";
                //close Connection
                await AccesBD.CloseConnection(Connexion);

                //return list to be displayed
            }
            else
            {
                Debug.WriteLine("\n\n probleme con");
                reponse = "Probleme cnx";
            }
            Debug.WriteLine(" \n\n fin traitement \n\n");
            return(reponse);
        }