public virtual async Task <AiSentence> Create(AotModel model)//TO:DO Тут должен быть массив { try { AiSentence aiSentence = new AiSentence(); string result = string.Empty; int i = 0; foreach (var word in model.Words) { result += word.Str + " "; var aiWord = new CrmDbModel.Model.Ai.AiWord(); aiWord.AiSentence = aiSentence; aiWord.Text = word.Str; aiWord.NormalizeText = word.Homonyms[0]; aiWord.Grm = string.Join("", model.Variants[0].Units[i].Grm); aiWord.HomNo = model.Variants[0].Units[i].HomNo.ToString(); word.AiWord = aiWord; _wordDbContext.Add(aiWord); i++; } aiSentence.Text = result; _wordDbContext.Add(aiSentence); await _aiGroup.ParseGroups(_wordDbContext, model.Variants[0], model.Words.ToList(), aiSentence); return(aiSentence); } catch (Exception ex) { throw new Exception("Не удалось создать предложение по словам полсе синтаксического разбора, ошибка -" + ex.Message); } }
public async Task <List <AiGroup> > ParseGroups(WordDbContext wordDbContext, Variant variant, List <Word> words, AiSentence aiSentence) { List <AiGroup> result = new List <AiGroup>(); var gropups = variant.Groups.ToList(); int i = 0; foreach (var item in gropups) { AiGroup aiGroup = new AiGroup(); aiGroup.AiDescription = await FindOrAddAiDescription(wordDbContext, item.Descr); aiGroup.Last = (int)item.Last; aiGroup.Start = (int)item.Start; aiGroup.IsSubj = item.IsSubj; aiGroup.IsGoup = item.IsGroup; item.AiGroup = aiGroup; SetParent(gropups, item, i == 0 ? -1 : i); result.Add(aiGroup); aiGroup.AiSentence = aiSentence; wordDbContext.Add(aiGroup); CreateAiWordsGroup(words, aiGroup, wordDbContext); i++; } //SetParentIdGroups(result); return(result); }