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); }
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); } ); }
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); }