コード例 #1
0
        private void LaunchAnswerDialog(string questionID, ListBoxRow row)
        {
            answerDialog = new AnswerDialog(questions[questionID], this);

            SolverApp.GetApp().AddWindow(answerDialog);
            answerDialog.ShowAll();
        }
コード例 #2
0
        private async Task AuthenticateUser()
        {
            var email = emailBox.Text;
            var pass  = passwordBox.Text;

            var loginBody = new JObject();

            loginBody["email"]    = email;
            loginBody["password"] = pass;

            var response = await SolverApp.PostRequest("/api/auth/login", loginBody);

            if (response == null)
            {
                return;
            }

            SolverApp.SetJwt(response["auth_token"].ToString());
            SolverApp.SetEmail(response["email"].ToString());

            var mainWindow = new MainWindow();

            SolverApp.GetApp().AddWindow(mainWindow);
            mainWindow.ShowAll();

            SolverApp.GetApp().RemoveWindow(this);
            this.Hide();
        }
コード例 #3
0
 private void CloseButton_Clicked(object sender, EventArgs args)
 {
     SolverApp.GetApp().RemoveWindow(this);
     issueWindow.Sensitive    = true;
     issueWindow.answerDialog = null;
     this.Dispose();
 }
コード例 #4
0
 private void Window_DeleteEvent(object sender, DeleteEventArgs args)
 {
     mainWindow.Sensitive   = true;
     mainWindow.issueWindow = null;
     SolverApp.GetApp().RemoveWindow(this);
     this.Dispose();
 }
コード例 #5
0
 private void Window_DeleteEvent(object sender, DeleteEventArgs args)
 {
     SolverApp.GetApp().RemoveWindow(this);
     issueWindow.Sensitive    = true;
     issueWindow.answerDialog = null;
     this.Dispose();
 }
コード例 #6
0
        private void LoginButton_Clicked(object sender, EventArgs a)
        {
            var loginWindow = new LoginWindow();

            SolverApp.GetApp().AddWindow(loginWindow);
            loginWindow.ShowAll();

            SolverApp.GetApp().RemoveWindow(this);
            this.Hide();
        }
コード例 #7
0
        private void RegisterButton_Clicked(object sender, EventArgs a)
        {
            var registerWindow = new RegisterWindow();

            SolverApp.GetApp().AddWindow(registerWindow);
            registerWindow.ShowAll();

            SolverApp.GetApp().RemoveWindow(this);
            this.Hide();
        }
コード例 #8
0
        private void AddQuestionButton_Clicked(object sender, EventArgs a)
        {
            if (issue.State == "unassigned")
            {
                return;
            }
            var questionDialog = new QuestionDialog(this, issue.ID);

            SolverApp.GetApp().AddWindow(questionDialog);
            questionDialog.ShowAll();
        }
コード例 #9
0
        private async Task FetchQuestions()
        {
            var endpoint = $"/api/solver/{issue.ID}/question";
            var response = await SolverApp.GetRequest(endpoint);

            var fetchedQuestions = response["questions"].ToObject <JArray>();

            for (var i = 0; i < fetchedQuestions.Count; i++)
            {
                InsertQuestion(fetchedQuestions[i]);
            }
        }
コード例 #10
0
        private async Task Solve()
        {
            var endpoint    = $"/api/solver/{issue.ID}/solved";
            var requestBody = new JObject();

            requestBody["answer"] = answerBox.Buffer.Text;
            var response = await SolverApp.PutRequest(endpoint, requestBody);

            if (response["issue"] != null)
            {
                mainWindow.Sensitive = true;
                mainWindow.myIssuesList.Remove(row);
                this.Hide();
                SolverApp.GetApp().RemoveWindow(this);
            }
        }
コード例 #11
0
        private async Task AutheticateSolver()
        {
            try {
                var email = emailBox.Text;
                var name  = nameBox.Text;
                var pass  = passBox.Text;
                var conf  = confBox.Text;

                var registerBody = new JObject();
                registerBody["email"]        = email;
                registerBody["username"]     = name;
                registerBody["password"]     = pass;
                registerBody["passwordConf"] = conf;
                registerBody["role"]         = "solver";

                var response = await SolverApp.PostRequest("/api/users/", registerBody);

                if (response == null)
                {
                    return;
                }

                var loginBody = new JObject();
                loginBody["email"]    = email;
                loginBody["password"] = pass;

                var loginResponse = await SolverApp.PostRequest("/api/auth/login", loginBody);

                if (loginResponse == null)
                {
                    return;
                }

                SolverApp.SetJwt(loginResponse["auth_token"].ToString());
                SolverApp.SetEmail(loginResponse["email"].ToString());

                var mainWindow = new MainWindow();
                SolverApp.GetApp().AddWindow(mainWindow);
                mainWindow.ShowAll();

                SolverApp.GetApp().RemoveWindow(this);
                this.Hide();
            } catch (Exception e) {
                Console.WriteLine(e);
            }
        }
コード例 #12
0
        private async Task Assign()
        {
            var endpoint    = $"/api/solver/{issue.ID}/assigned";
            var requestBody = new JObject();
            var response    = await SolverApp.PutRequest(endpoint, requestBody);

            if (response["issue"] != null)
            {
                solveButton.Label    = "Solve";
                issue.State          = "assigned";
                solveButton.Clicked -= AssignButton_Clicked;
                solveButton.Clicked += SolveButton_Clicked;

                mainWindow.unassignedIssues.Remove(row);
                mainWindow.myIssuesList.Add(row);
            }
        }
コード例 #13
0
        public static void Main(string[] args)
        {
            DotNetEnv.Env.Load();
            Application.Init();

            var app = new Application(null, GLib.ApplicationFlags.None);

            app.Register(GLib.Cancellable.Current);

            SolverApp.Init(app);

            var win = new LoginWindow();

            app.AddWindow(win);

            win.Show();
            Application.Run();
        }
コード例 #14
0
        private async Task SendQuestion()
        {
            try {
                Console.WriteLine("coiso");
                var endpoint    = $"http://localhost:3000/api/solver/{issueID}/question";
                var requestBody = new JObject();
                requestBody["question"]   = questionText.Buffer.Text;
                requestBody["department"] = departmentEntry.Text;

                var response = await SolverApp.PostRequest(endpoint, requestBody);

                if (response["question"] == null)
                {
                    return;
                }

                var responseQuestion = response["question"];

                issueWindow.questions[responseQuestion["question"].ToString()] = new Question()
                {
                    Text       = responseQuestion["question"].ToString(),
                    Department = responseQuestion["department"].ToString(),
                    State      = responseQuestion["state"].ToString(),
                    Date       = responseQuestion["createdAt"].ToString()
                };

                var questionRow = new ListBoxRow();
                questionRow.Add(new Label {
                    Text = responseQuestion["question"].ToString(), Expand = true
                });
                issueWindow.questionsList.Add(questionRow);
                questionRow.ShowAll();

                issueWindow.Sensitive = true;
                SolverApp.GetApp().RemoveWindow(this);
                this.Dispose();
            } catch (Exception e) {
                Console.WriteLine(e.ToString());
            }
        }
コード例 #15
0
        private async Task FetchIssues()
        {
            var response = await SolverApp.GetRequest("/api/solver/");

            if (response["issues"] == null)
            {
                return;
            }
            var fetchedIssues = response["issues"].ToObject <JArray>();

            for (int i = 0; i < fetchedIssues.Count; i++)
            {
                var issue = fetchedIssues[i];
                if (issue["assignee"].ToObject <String>() == null)
                {
                    InsertUnassignedIssue(issue);
                }
                else if (issue["assignee"].ToObject <String>() == SolverApp.GetEmail() &&
                         issue["state"].ToObject <String>() != "solved")
                {
                    InsertSolverIssues(issue);
                }
            }
        }
コード例 #16
0
 private void LaunchIssueWindow(string issueID, ListBoxRow row)
 {
     issueWindow = new IssueWindow(issues[issueID], this, row);
     SolverApp.GetApp().AddWindow(issueWindow);
     issueWindow.ShowAll();
 }
コード例 #17
0
 private void CancelButton_Clicked(object sender, EventArgs args)
 {
     SolverApp.GetApp().RemoveWindow(this);
     issueWindow.Sensitive = true;
     this.Dispose();
 }