コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }