예제 #1
0
        private static NummerDefinition CreateRandomNummerDefinition()
        {
            NummerDefinition nummerDefinition = new NummerDefinition();

            nummerDefinition.Bezeichnung       = Guid.NewGuid().ToString();
            nummerDefinition.QuelleBezeichnung = Guid.NewGuid().ToString();
            nummerDefinition.ZielBezeichnung   = Guid.NewGuid().ToString();
            nummerDefinition.ZielDatentypenId  = (long)Random_Helper.GetLong((long)Datentypwerte.String, (long)Datentypwerte.Guid);

            ICollection <NummerDefinitionQuelle> nummerDefinitionQuellen = new List <NummerDefinitionQuelle>();
            long          length = Random_Helper.GetLong(2L, 100L);
            List <string> quellenBezeichnungen = new List <string>();

            for (long i = 1L; i < length; i++)
            {
                NummerDefinitionQuelle nummerDefinitionQuelle = new NummerDefinitionQuelle();
                string quelleBezeichnung = Random_Helper.GetString(1, 20, false);
                do
                {
                    quelleBezeichnung = Random_Helper.GetString(1, 20, false);
                } while (quellenBezeichnungen.Contains(quelleBezeichnung));

                nummerDefinitionQuelle.Bezeichnung = quelleBezeichnung;
                quellenBezeichnungen.Add(quelleBezeichnung);
                nummerDefinitionQuelle.DatentypenId = (long)Random_Helper.GetLong((long)Datentypwerte.String, (long)Datentypwerte.Guid);
                nummerDefinition.NummerDefinitionQuellen.Add(nummerDefinitionQuelle);
            }

            return(nummerDefinition);
        }
예제 #2
0
        public async Task <ErstellteNummerDefinitionResponse> ErstelleNummerDefinitionAsync()
        {
            ErstellteNummerDefinitionResponse ErstellteNummerDefinitionResponse = StandardRequirement.Instance.ErstellteNummerDefinitionResponse;

            if (ErstellteNummerDefinitionResponse == null)
            {
                using (var httpClient = new HttpClient())
                {
                    NummerDefinition nummerDefinition = LieferNummerDefinition();
                    StringContent    content          = new StringContent(JsonConvert.SerializeObject(nummerDefinition), Encoding.UTF8, "application/json");
                    using (HttpResponseMessage response = await httpClient.PostAsync(BaseAPIURL + "ErstelleNummerDefinition/", content))
                    {
                        if (response.IsSuccessStatusCode)
                        {
                            string apiResponse = await response.Content.ReadAsStringAsync();

                            StandardRequirement.Instance.ErstellteNummerDefinitionResponse = JsonConvert.DeserializeObject <ErstellteNummerDefinitionResponse>(apiResponse);
                            ErstellteNummerDefinitionResponse = StandardRequirement.Instance.ErstellteNummerDefinitionResponse;
                        }
                    }
                }
            }

            return(ErstellteNummerDefinitionResponse);
        }
예제 #3
0
        public async Task <ActionResult <Data.Models.NummerInformation> > HoleNummerInformation(HoleNummerInformationRequest holeNummerInformationRequest)
        {
            Data.Models.NummerInformation nummerInformation = null;

            NummerDefinition foundNummerDefinition = this._context.Nummerdefinitionen.Include("NummerDefinitionQuellen").Where(e => (e.Id == holeNummerInformationRequest.Nummer_definition_id)).FirstOrDefault();

            if (foundNummerDefinition == null)
            {
                throw new Exception(string.Format("für die nummer_definition_id = '{0}' existiert keine gültig Nummerdefinition.", holeNummerInformationRequest.Nummer_definition_id));
            }
            else if (holeNummerInformationRequest.DurchQuellen && (foundNummerDefinition.NummerDefinitionQuellen == null || foundNummerDefinition.NummerDefinitionQuellen.Count == 0))
            {
                throw new Exception("Für die Nummerdefinition sind keine Quellen definiert.");
            }
            else if (holeNummerInformationRequest.DurchQuellen && (foundNummerDefinition.NummerDefinitionQuellen.Count != holeNummerInformationRequest.Quellen.Count()))
            {
                throw new Exception("Die Anzahl der definierten Quellen stimmt nicht mit der Anzahl der übergebenen Quellen überein.");
            }
            else if (!holeNummerInformationRequest.DurchQuellen && holeNummerInformationRequest.Ziel == null)
            {
                throw new ArgumentNullException(nameof(holeNummerInformationRequest.Ziel));
            }
            else
            {
                if (holeNummerInformationRequest.DurchQuellen)
                {
                    string rawSQL = NummerInformationRawSQLGenerator.GenersateRawSQL(holeNummerInformationRequest.Nummer_definition_id, foundNummerDefinition.NummerDefinitionQuellen, holeNummerInformationRequest.Quellen);
                    List <NummerInformation> nummerInformations = await this._context.Nummerinformationen.FromSqlRaw(rawSQL).ToListAsync();

                    if (nummerInformations != null && nummerInformations.Count > 0)
                    {
                        nummerInformation = nummerInformations.FirstOrDefault();
                    }
                    else
                    {
                        return(this.NotFound());
                    }
                }
                else
                {
                    string ziel = holeNummerInformationRequest.Ziel.ToString();
                    nummerInformation = await this._context.Nummerinformationen.Where(e => e.NummerdefinitionenId == foundNummerDefinition.Id && e.Ziel == ziel).FirstOrDefaultAsync();
                }
                if (nummerInformation != null)
                {
                    return(nummerInformation);
                }
                else
                {
                    return(this.NotFound());
                }
            }
        }
예제 #4
0
        public async Task <ActionResult <object> > HoleNummerInformationZielUeberGuid(Guid guid)
        {
            object ziel = null;

            NummerInformation nummerInformation = await this._context.Nummerinformationen.Where(e => (e.Guid == guid)).FirstOrDefaultAsync();


            if (nummerInformation != null && nummerInformation.Ziel != null)
            {
                NummerDefinition nummerDefinition = await this._context.Nummerdefinitionen.Where(e => e.Id == nummerInformation.NummerdefinitionenId).FirstOrDefaultAsync();

                if (nummerDefinition != null)
                {
                    switch (nummerDefinition.ZielDatentypenId)
                    {
                    case 1:

                        ziel = nummerInformation.Ziel;
                        break;

                    case 2:
                        Int32 output2 = 0;
                        if (Int32.TryParse(nummerInformation.Ziel, out output2))
                        {
                            ziel = output2;
                        }

                        break;

                    case 3:
                        Guid output3 = Guid.NewGuid();
                        if (Guid.TryParse(nummerInformation.Ziel, out output3))
                        {
                            ziel = output3;
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            if (ziel == null)
            {
                return(NotFound());
            }
            else
            {
                return(ziel);
            }
        }
예제 #5
0
        public static NummerDefinition LieferNummerDefinition()
        {
            NummerDefinition nummerDefinition = new NummerDefinition();

            nummerDefinition.Bezeichnung       = NumberDefinitionBezeichnung.DEUWOAuftragsnummerZuGEMASAuftragsnummer.ToString();
            nummerDefinition.QuelleBezeichnung = "DEUWOAuftragsnummer";
            nummerDefinition.ZielBezeichnung   = "GEMASAuftragsnummer";
            nummerDefinition.ZielDatentypenId  = (long)Datentypwerte.Integer;

            //ICollection<NummerDefinitionQuelle> nummerDefinitionQuellen = new List<NummerDefinitionQuelle>();
            NummerDefinitionQuelle nummerDefinitionQuelle = new NummerDefinitionQuelle();

            nummerDefinitionQuelle.Bezeichnung  = "Auftragsnummer";
            nummerDefinitionQuelle.DatentypenId = (long)Datentypwerte.Integer;
            nummerDefinition.NummerDefinitionQuellen.Add(nummerDefinitionQuelle);


            return(nummerDefinition);
        }
예제 #6
0
        public async Task <ActionResult <Guid?> > ErstelleNummerInformation(ErstelleNummerInformationRequest erstelleNummerInformationRequest)
        {
            Guid?guid = null;

            NummerDefinition foundNummerDefinition = this._context.Nummerdefinitionen.Include("NummerDefinitionQuellen").Where(e => (e.Id == erstelleNummerInformationRequest.Nummer_definition_id)).FirstOrDefault();

            if (foundNummerDefinition == null)
            {
                throw new Exception(string.Format("für die nummer_definition_id = '{0}' existiert keine gültig Nummerdefinition.", erstelleNummerInformationRequest.Nummer_definition_id));
            }
            else if (foundNummerDefinition.NummerDefinitionQuellen == null || foundNummerDefinition.NummerDefinitionQuellen.Count == 0)
            {
                throw new Exception("Für die Nummerdefinition sind keine Quellen definiert.");
            }
            else if (foundNummerDefinition.NummerDefinitionQuellen.Count != erstelleNummerInformationRequest.Quellen.Count())
            {
                throw new Exception("Die Anzahl der definierten Quellen stimmt nicht mit der Anzahl der übergebenen Quellen überein.");
            }
            //else if (erstelleNummerInformation.Ziel == null)
            //{
            //    throw new Exception("Das Ziel ist null.");
            //}
            else
            {
                Data.Models.NummerInformation nummerInformation = new Data.Models.NummerInformation();
                nummerInformation.NummerdefinitionenId = erstelleNummerInformationRequest.Nummer_definition_id;
                string jsonQuellen = NumberInformationJSONGenerator.GenerateJSON(foundNummerDefinition.NummerDefinitionQuellen, erstelleNummerInformationRequest.Quellen);
                nummerInformation.Quelle = jsonQuellen;
                nummerInformation.Ziel   = erstelleNummerInformationRequest.Ziel != null?erstelleNummerInformationRequest.Ziel.ToString() : null;

                this._context.Nummerinformationen.Add(nummerInformation);
                await this._context.SaveChangesAsync();

                guid = nummerInformation.Guid;
            }

            return(guid);
        }
예제 #7
0
        public async Task <NummerInformation> HoleNummerInformationAsync(NummerDefinition nummerDefinition, ErstelleNummerInformationRequest erstelleNummerInformationRequest)
        {
            NummerInformation            nummerInformation            = null;
            HoleNummerInformationRequest holeNummerInformationRequest = new HoleNummerInformationRequest();

            holeNummerInformationRequest.Nummer_definition_id = nummerDefinition.Id;
            holeNummerInformationRequest.DurchQuellen         = true;
            holeNummerInformationRequest.Quellen = erstelleNummerInformationRequest.Quellen;
            using (var httpClient = new HttpClient())
            {
                StringContent content = new StringContent(JsonConvert.SerializeObject(holeNummerInformationRequest), Encoding.UTF8, "application/json");
                using (HttpResponseMessage response = await httpClient.PostAsync(BaseAPIURL + "HoleNummerInformation/", content))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        string apiResponse = await response.Content.ReadAsStringAsync();

                        nummerInformation = JsonConvert.DeserializeObject <NummerInformation>(apiResponse);
                    }
                }
            }
            return(nummerInformation);
        }
예제 #8
0
        public async Task <MassTestResult> RunAsync(long max)
        {
            MassTestResult          massTestResult     = new MassTestResult();
            List <NummerDefinition> nummerDefinitionen = new List <NummerDefinition>();
            List <ErstelleNummerInformationRequest> erstelleNummerInformationRequests = new List <ErstelleNummerInformationRequest>();
            long countOfDefinitions = Random_Helper.GetLong(1L, max);

            massTestResult.CountOfDefinitions = countOfDefinitions;
            for (long i = 0; i < countOfDefinitions; i++)
            {
                NummerDefinition nummerDefinition = CreateRandomNummerDefinition();
                ErstellteNummerDefinitionResponse ErstellteNummerDefinitionResponse = await ErstelleNummerDefinitionAsync(nummerDefinition);

                if (ErstellteNummerDefinitionResponse != null)
                {
                    nummerDefinition.Guid = ErstellteNummerDefinitionResponse.Guid;
                    nummerDefinition.Id   = ErstellteNummerDefinitionResponse.Id;
                    nummerDefinitionen.Add(nummerDefinition);
                }
                else
                {
                    WriteRedTextToConsole("NummerDefinition konnte nicht erstellt werden.");
                }
            }
            long countOfInformations = Random_Helper.GetLong(1L, max);

            massTestResult.CountOfInformations = countOfInformations;
            foreach (var nummerDefinition in nummerDefinitionen)
            {
                for (int i = 0; i < countOfInformations; i++)
                {
                    ErstelleNummerInformationRequest erstelleNummerInformationRequest = CreateRandomErstelleNummerInformation(nummerDefinition);
                    Guid?guid = await ErstelleNummerInformationAsync(erstelleNummerInformationRequest);

                    if (guid.HasValue)
                    {
                        erstelleNummerInformationRequests.Add(erstelleNummerInformationRequest);
                        SetzeZielFürNummerInformationRequest setzeZielFürNummerInformationRequest = ErstelleSetzeZielFürNummerInformation(guid, nummerDefinition);
                        bool success = await SetzeZielFürNummerInformationAsync(setzeZielFürNummerInformationRequest);

                        if (success)
                        {
                            MassTestMeasure massTestMeasure = new MassTestMeasure();
                            massTestMeasure.CountOfInformations = await this._context.Nummerinformationen.CountAsync();

                            massTestMeasure.Start = DateTime.Now;
                            NummerInformation nummerInformation = await HoleNummerInformationAsync(nummerDefinition, erstelleNummerInformationRequest);

                            if (nummerInformation != null && nummerInformation.Ziel.ToString() == setzeZielFürNummerInformationRequest.Ziel.ToString())
                            {
                                massTestMeasure.End          = DateTime.Now;
                                massTestMeasure.Milliseconds = (massTestMeasure.End - massTestMeasure.Start).TotalMilliseconds;
                                massTestResult.MassTestMeasures.Add(massTestMeasure);
                            }
                            else
                            {
                                WriteRedTextToConsole("NummerInformation konnte nicht geholt werden.");
                            }
                        }
                    }
                    else
                    {
                        WriteRedTextToConsole("NummerInformation konnte nicht erstellt werden.");
                    }
                }
            }
            massTestResult.CountOfErstelleNummerInformationen = erstelleNummerInformationRequests.Count;


            return(massTestResult);
        }
예제 #9
0
        private static SetzeZielFürNummerInformationRequest ErstelleSetzeZielFürNummerInformation(Guid?guid, NummerDefinition nummerDefinition)
        {
            SetzeZielFürNummerInformationRequest setzeZielFürNummerInformationRequest = null;

            if (guid.HasValue && nummerDefinition != null)
            {
                object ziel = null;
                switch ((Datentypwerte)nummerDefinition.ZielDatentypenId)
                {
                case Datentypwerte.String:
                    ziel = Guid.NewGuid().ToString();
                    break;

                case Datentypwerte.Integer:
                    ziel = Random_Helper.GetLong(0L, 100000L);
                    break;

                case Datentypwerte.Guid:
                    ziel = Guid.NewGuid();
                    break;

                default:
                    break;
                }
                setzeZielFürNummerInformationRequest = new SetzeZielFürNummerInformationRequest();
                setzeZielFürNummerInformationRequest.NummerInformationGuid = guid.Value;
                setzeZielFürNummerInformationRequest.Ziel = ziel;
            }

            return(setzeZielFürNummerInformationRequest);
        }
예제 #10
0
        private static ErstelleNummerInformationRequest CreateRandomErstelleNummerInformation(NummerDefinition nummerDefinition)
        {
            ErstelleNummerInformationRequest erstelleNummerInformationRequest = new ErstelleNummerInformationRequest();

            if (nummerDefinition != null)
            {
                erstelleNummerInformationRequest.Nummer_definition_id = nummerDefinition.Id;
                int      anzahlQuellen = nummerDefinition.NummerDefinitionQuellen.Count;
                object[] quellen       = new object[anzahlQuellen];
                int      index         = 0;
                foreach (var NummerDefinitionQuelle in nummerDefinition.NummerDefinitionQuellen)
                {
                    object value = null;
                    switch ((Datentypwerte)NummerDefinitionQuelle.DatentypenId)
                    {
                    case Datentypwerte.String:
                        value = Guid.NewGuid().ToString();
                        break;

                    case Datentypwerte.Integer:
                        value = Random_Helper.GetLong(0L, 100000L);
                        break;

                    case Datentypwerte.Guid:
                        value = Guid.NewGuid().ToString();
                        break;

                    default:
                        break;
                    }
                    quellen[index] = value;
                    index++;
                }
                erstelleNummerInformationRequest.Quellen = quellen;
            }
            return(erstelleNummerInformationRequest);
        }