예제 #1
0
        private void Handle(CommandEnvelope commandEnvelope, WareneingangVerbuchen aktion, UnitOfWork unitOfWork)
        {
            var repo = new LagerbestandRepository(unitOfWork);
            var liste = repo.Retrieve(aktion.LagerId, aktion.ProduktId);
            if (liste.Bestand.Count == 0) throw new VorgangNichtAusgefuehrt("Wareneingang ohne Bestellung, das darf nicht sein...");

            var posten = liste.Bestand.Single();
            if (posten.MengeImZulauf == 0) throw new VorgangNichtAusgefuehrt("Wareneingang ohne Bestellung, das darf nicht sein...");

            repo.Set_Zulauf(aktion.LagerId, aktion.ProduktId, 0);
            repo.Set_Bestand(aktion.LagerId, aktion.ProduktId, posten.LagerBestand + posten.MengeImZulauf);
        }
예제 #2
0
        public static void Update(SQLOperations sql, Guid produkt)
        {
            var posten = new LagerbestandRepository(sql).RetrieveAlleStandorte(produkt);
            var bestand = posten.Bestand.Sum(_ => _.LagerBestand);
            var zulauf = posten.Bestand.Sum(_ => _.MengeImZulauf);

            var verfuegbar = bestand + zulauf;

            sql.ExecuteNonQuery(
                @"UPDATE [produkteex] SET [bestand]=@bestand,[verfuegbar]=@verfuegbar WHERE [id]=@produkt",
                set_parameter =>
                {
                    set_parameter("produkt", produkt);
                    set_parameter("bestand", bestand);
                    set_parameter("verfuegbar", verfuegbar);
                }
                );
        }
예제 #3
0
        private void Handle(CommandEnvelope commandEnvelope, NachbestellungBeauftragen aktion, UnitOfWork unitOfWork)
        {
            if (aktion.BestellteMenge<=0) throw new VorgangNichtAusgefuehrt("Menge muss angegeben werden");

            var repo = new LagerbestandRepository(unitOfWork);
            var liste = repo.Retrieve(aktion.LagerId, aktion.ProduktId);
            var alt = 0;
            if (liste.Bestand.Count == 0)
            {
                repo.Insert(aktion.LagerId, aktion.ProduktId);
            }
            else
            {
                alt = liste.Bestand.Single().MengeImZulauf;
            }

            repo.Set_Zulauf(aktion.LagerId, aktion.ProduktId, alt + aktion.BestellteMenge);
        }