示例#1
0
        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);
        }
示例#2
0
        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);
        }