public async Task <int> Remove(Guid grammaticId) { try { Grammatics grammaticDb = _ltContext.Grammatics.Find(grammaticId); if (grammaticDb != null) { VerifiedGrammars vg = _ltContext.VerifiedGrammars.FirstOrDefault(s => s.GrammaticId == grammaticId); GeneratedDLLs genDLL = _ltContext.GeneratedDLLs.FirstOrDefault(s => s.GrammaticId == grammaticId); if (genDLL != null) { _ltContext.GeneratedDLLs.Remove(genDLL); } if (vg != null) { _ltContext.VerifiedGrammars.Remove(vg); } _ltContext.Grammatics.Remove(_ltContext.Grammatics.Find(grammaticId)); await _ltContext.SaveChangesAsync(); await CalculatePath(); return(0); } return(-1); } catch (Exception e) { return(-1); } }
public async Task <dynamic> AddGrammaticWithTransform(GrammaticTransform grammaticTransform) { VerifiedGrammars verifiedGrammars = FindVerifiedGrammar(grammaticTransform.SelectGrammatic); LangExtension langExtension = new LangExtension(); Result result = langExtension.Transform(verifiedGrammars.Path, grammaticTransform.Text); if (result.ResultCode == 1) { Guid grammaticId = await AddGrammatic(new Grammatic { Text = result.ResultMessage, Title = grammaticTransform.Title, FromLanguage = grammaticTransform.FromLanguage, ToLanguage = grammaticTransform.ToLanguage }); return(await FindAsync(grammaticId)); } else { grammaticTransform.Result = new ResultGenerate { ErrorsMessage = new List <string> { result.ResultMessage }, ResultCode = 0 }; return(grammaticTransform); } }
public async Task <Grammatic> GenerataFile(Guid grammaticId) { VerifiedGrammars vgDb = FindVerifiedGrammar(grammaticId); if (vgDb != null) { string path = Directory.GetDirectories(Directory.GetCurrentDirectory() + "/Grammatics/").FirstOrDefault(s => s.Contains(vgDb.Title)); if (path == null) { path = Directory.GetCurrentDirectory() + "/Grammatics/" + vgDb.Title; } Directory.CreateDirectory(path); string strCmdText = "/C coco " + vgDb.Path + " -frames " + Directory.GetCurrentDirectory() + " -o " + path; Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "cmd.exe", Arguments = strCmdText }; process.StartInfo = startInfo; process.Start(); process.WaitForExit(); Grammatic grammatic = await FindAsync(grammaticId); Grammatics grammaticsDb = _ltContext.Grammatics.Find(grammatic.GrammaticId); grammatic.ResultGenerate = GenerateDLL(path, vgDb.Title); if (grammatic.ResultGenerate.ResultCode == 1) { GeneratedDLLs generatedDLL = _ltContext.GeneratedDLLs.FirstOrDefault(s => s.GrammaticId == grammaticId); if (generatedDLL != null) { generatedDLL.Image = grammatic.ResultGenerate.Result; generatedDLL.FromLanguage = grammatic.FromLanguage; generatedDLL.ToLanguage = grammatic.ToLanguage; generatedDLL.Title = grammatic.Title; _ltContext.Entry(generatedDLL).State = EntityState.Modified; } else { generatedDLL = new GeneratedDLLs() { GeneratedDLLId = Guid.NewGuid(), GrammaticId = grammaticId, Image = grammatic.ResultGenerate.Result, Title = grammatic.Title, FromLanguage = grammatic.FromLanguage, ToLanguage = grammatic.ToLanguage }; _ltContext.GeneratedDLLs.Add(generatedDLL); } grammaticsDb.IsEdit = false; _ltContext.Entry(grammaticsDb).State = EntityState.Modified; await _ltContext.SaveChangesAsync(); await CalculatePath(); } return(grammatic); } else { return(null); } }
public async Task <Guid> VerificiedChanges(Guid id, bool isVerificied) { VerifiedGrammars verificiedGrammarDB = FindVerifiedGrammar(id); Grammatics grammaticsDb = _ltContext.Grammatics.Find(id); if (isVerificied) { if (grammaticsDb != null) { if (verificiedGrammarDB == null) { string dir = Directory.GetDirectories(Directory.GetCurrentDirectory()).FirstOrDefault(s => s.Contains("Grammatics")); if (dir == null) { Directory.CreateDirectory(Directory.GetCurrentDirectory() + "/Grammatics"); } string path = @Directory.GetCurrentDirectory() + "/Grammatics/" + grammaticsDb.Title + ".ATG"; File.AppendAllText(path, grammaticsDb.Text); verificiedGrammarDB = new VerifiedGrammars { GrammaticId = id, VerifiedGrammarId = Guid.NewGuid(), EditDate = grammaticsDb.EditDate, Text = grammaticsDb.Text, Title = grammaticsDb.Title, Path = path, FromLanguage = grammaticsDb.FromLanguage, ToLanguage = grammaticsDb.ToLanguage, }; _ltContext.VerifiedGrammars.Add(verificiedGrammarDB); } else { string path = verificiedGrammarDB.Path; File.WriteAllText(path, grammaticsDb.Text); verificiedGrammarDB.Title = grammaticsDb.Title; verificiedGrammarDB.Text = grammaticsDb.Text; verificiedGrammarDB.EditDate = grammaticsDb.EditDate; verificiedGrammarDB.ToLanguage = grammaticsDb.ToLanguage; verificiedGrammarDB.FromLanguage = grammaticsDb.FromLanguage; _ltContext.Entry(verificiedGrammarDB).State = EntityState.Modified; } grammaticsDb.IsValidate = true; _ltContext.Entry(grammaticsDb).State = EntityState.Modified; } else { return(id); } } else { if (grammaticsDb != null) { if (verificiedGrammarDB != null) { grammaticsDb.Title = verificiedGrammarDB.Title; grammaticsDb.Text = verificiedGrammarDB.Text; grammaticsDb.EditDate = verificiedGrammarDB.EditDate; grammaticsDb.ToLanguage = verificiedGrammarDB.ToLanguage; grammaticsDb.FromLanguage = verificiedGrammarDB.FromLanguage; _ltContext.Entry(grammaticsDb).State = EntityState.Modified; } } } await _ltContext.SaveChangesAsync(); return(id); }