예제 #1
0
        public async Task <NummerInformation> HoleNummerInformationAsync(bool durchQuellen)
        {
            NummerInformation            nummerInformation            = null;
            HoleNummerInformationRequest holeNummerInformationRequest = new HoleNummerInformationRequest();

            holeNummerInformationRequest.Nummer_definition_id = StandardRequirement.Instance.NummerDefinition.Id;
            if (durchQuellen)
            {
                holeNummerInformationRequest.DurchQuellen = true;
                holeNummerInformationRequest.Quellen      = new object[] { StandardRequirement.Instance.DeuWoAuftragsnummer };
            }
            else
            {
                holeNummerInformationRequest.DurchQuellen = false;
                holeNummerInformationRequest.Ziel         = StandardRequirement.Instance.GemasAuftragsnummer;
            }
            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);
        }
예제 #2
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);
        }
예제 #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());
                }
            }
        }