public async Task <ActionResult <Data.Models.NummerDefinition> > HoleNummerDefinitionUeberBezeichnung(string bezeichnung) { Data.Models.NummerDefinition nummerDefinition = await this._context.Nummerdefinitionen.Include("NummerDefinitionQuellen").Where(e => (e.Bezeichnung == bezeichnung)).FirstOrDefaultAsync(); if (nummerDefinition == null) { return(NotFound()); } return(nummerDefinition); }
public async Task <ActionResult <ErstellteNummerDefinitionResponse> > ErstelleNummerDefinition(Data.Models.NummerDefinition nummerDefinition) { Data.Models.NummerDefinition foundNummerDefinition = this._context.Nummerdefinitionen.Where(e => (e.Bezeichnung == nummerDefinition.Bezeichnung)).FirstOrDefault(); if (foundNummerDefinition != null) { throw new Exception("der Wert für NummerDefinitionBezeichnung muss eindeutig sein."); } var invalidgroups = nummerDefinition.NummerDefinitionQuellen.GroupBy(e => e.Bezeichnung).Select(group => new { Key = group.Key, Count = group.Count(), }).Where(e => e.Count > 1); if (invalidgroups.Count() > 0) { throw new Exception("der Werte für NummerDefinitionQuelleBezeichnung müssen eindeutig sein."); } // TODO BK Bezeichnungen der Quellen müssen gültige JSON-Bezeichnungen sein(nicht mit Zahlen beginnen.) List <Data.Models.NummerDefinitionQuelle> nummerDefinitionQuelles = nummerDefinition.NummerDefinitionQuellen.ToList(); nummerDefinition.NummerDefinitionQuellen.Clear(); nummerDefinition.NummerDefinitionQuellen = null; nummerDefinition.NummerInformationen.Clear(); nummerDefinition.NummerInformationen = null; this._context.Nummerdefinitionen.Add(nummerDefinition); await this._context.SaveChangesAsync(); int pos = 1; foreach (var nummerDefinitionQuelle in nummerDefinitionQuelles) { nummerDefinitionQuelle.Position = pos; pos++; this._context.Nummerdefinitionquellen.Add(nummerDefinitionQuelle); nummerDefinitionQuelle.NummerdefinitionenId = nummerDefinition.Id; } await this._context.SaveChangesAsync(); ErstellteNummerDefinitionResponse ErstellteNummerDefinitionResponse = new ErstellteNummerDefinitionResponse(); ErstellteNummerDefinitionResponse.Id = nummerDefinition.Id; ErstellteNummerDefinitionResponse.Guid = nummerDefinition.Guid; ErstellteNummerDefinitionResponse.Bezeichnung = nummerDefinition.Bezeichnung; ErstellteNummerDefinitionResponse.NummerDefinitionQuellen = nummerDefinition.NummerDefinitionQuellen.ToList(); return(ErstellteNummerDefinitionResponse); }