private ProduktlisteEx Handle(QueryEnvelope queryEnvelope, ProduktlisteExAbfrage abfrage) { var produkte = AlleProduktInfos() .Select(_ => new ProduktInfoEx { Id = _.Id, Bezeichnung = _.Bezeichnung, Verfuegbar = _lagerbestand.Verfuegbar_fuer(_.Id) - _auftraege.OffeneMenge_fuer(_.Id), LagerBestand = _lagerbestand.LagerBestand_fuer(_.Id) }) .ToList(); return new ProduktlisteEx { Produkte = produkte }; }
/* private ProduktlisteEx Handle(QueryEnvelope queryEnvelope, ProduktlisteExAbfrage abfrage) { using (var db = ReadAccess()) { var lagerbestand = new LagerbestandRepository(db).RetrieveAlleStandorte() .Bestand.GroupBy(_=>_.Produkt).ToDictionary(_=>_.Key, _=> new { Bestand = _.Sum(x=>x.LagerBestand), Zulauf = _.Sum(x => x.MengeImZulauf) }); return new ProduktlisteEx {Produkte = new ProduktRepository(db).Retrieve().Produkte.Select( p => new ProduktInfoEx { Id = p.Id, Bezeichnung = p.Bezeichnung, LagerBestand = lagerbestand.ContainsKey(p.Id) ? lagerbestand[p.Id].Bestand : 0, Verfuegbar = lagerbestand.ContainsKey(p.Id) ? lagerbestand[p.Id].Bestand+lagerbestand[p.Id].Zulauf : 0, } ).ToList()}; } }*/ private ProduktlisteEx Handle(QueryEnvelope queryEnvelope, ProduktlisteExAbfrage abfrage) { using (var db = ReadAccess()) { return new ProduktlisteEx { Produkte = db.Query( @"SELECT [Id], [Bezeichnung], [bestand], [verfuegbar] from [produkteex]", null, dr => new ProduktInfoEx { Id = dr.GetGuid(0), Bezeichnung = dr.GetString(1), LagerBestand = dr.GetInt32(2), Verfuegbar = dr.GetInt32(3) } ).ToList() }; } }