Beispiel #1
0
        /********** CONSTRUCTOR **********/

        public TaskModel(DictModel dict, IReadOnlyList <UserModel> memberList)
        {
            Id          = dict.i("id");
            Title       = dict.s("title");
            Description = dict.s("description");
            ProjectId   = dict.i("project_id");

            foreach (var i in dict.l("members"))
            {
                DictModel d      = i.ToString();
                UserModel member = null;
                foreach (var m in memberList)
                {
                    if (m.Id == d.i("id"))
                    {
                        member = m;
                        break;
                    }
                }
                if (member != null)
                {
                    AddMember(member);
                }
            }
        }
Beispiel #2
0
        public async Task <DictModel> CreateTask(DictModel taskDict)
        {
            DictModel dict = new DictModel("task");

            dict.Add("title", taskDict.s("title"));
            dict.Add("description", taskDict.s("description"));
            dict.Add("list", taskDict.s("list"));

            string uri = Globals.PROJECTS_URI + "/" + taskDict.i("project_id") + "/" + Globals.TASKS_URI;

            return(await MakeRequestAsync(uri, dict, RequestMethod.POST));
        }
Beispiel #3
0
        public static async Task <ProjectModel> CreateProject(string projectName)
        {
            DictModel response = await Instance.ApiManager.CreateProject(projectName);

            response.EnsureValid();

            return(User.AddProject(response.s("project")));
        }
Beispiel #4
0
        /********** CONTROL PANEL **********/

        public static async Task TryAutoLogin()
        {
            DictModel response = await Instance.ApiManager.AutoLogin();

            Debug.WriteLine("AutoLogin response: " + response.ToString());
            response.EnsureValid();

            User.UpdateWithJson(response.s("user"));
        }
Beispiel #5
0
        public static async Task <TaskModel> CreateTask(DictModel taskDict, ProjectModel project)
        {
            taskDict.Add("project_id", project.Id);
            DictModel response = await Instance.ApiManager.CreateTask(taskDict);

            var task = project.AddTask(response.s("task"), taskDict.s("list"));

            return(task);
        }
Beispiel #6
0
        public static async Task Login(string email, string password)
        {
            DictModel response = await Instance.ApiManager.Login(email, password);

            Debug.WriteLine("Login response: " + response.ToString());
            response.EnsureValid();

            User.UpdateWithJson(response.s("user"));
            UseRootPage(new RootSessionPage());
        }
Beispiel #7
0
        public static async Task Register(string email, string password, string username)
        {
            DictModel response = await Instance.ApiManager.Register(email, password, username);

            Debug.WriteLine("Register response: " + response.ToString());
            response.EnsureValid();

            User.UpdateWithJson(response.s("user"));
            UseRootPage(new RootSessionPage());
        }
Beispiel #8
0
        public void UpdateWithJson(string json)
        {
            DictModel dict = json;

            Id    = dict.i("id");
            Email = dict.s("email");

            foreach (var p in dict.l("projects"))
            {
                AddProject(p.ToString());
            }
            UpdatePotentialProjects(dict);
        }
Beispiel #9
0
        private async Task ShowRegister()
        {
            bool success = false;

            while (!success)
            {
                success = true;
                DictModel dict = await OverlayForm(registerForm);

                try {
                    if (dict != null)
                    {
                        if (dict.ContainsKey("email") &&
                            dict.ContainsKey("username") &&
                            dict.ContainsKey("password") &&
                            dict.ContainsKey("confPassword"))
                        {
                            if (dict.s("password") == dict.s("confPassword"))
                            {
                                await App.Register(dict.s("email"), dict.s("password"), dict.s("username"));
                            }
                            else
                            {
                                throw new Exception("Passwords don't match.");
                            }
                        }
                        else
                        {
                            throw new Exception("All fields much be completed.");
                        }
                    }
                } catch (Exception ex) {
                    Debug.WriteLine("ShowRegister(): " + ex.ToString());
                    await DisplayAlert("Error", ex.Message, "OK");

                    success = false;
                }
            }
        }
Beispiel #10
0
        private async Task ShowLogin()
        {
            bool success = false;

            while (!success)
            {
                success = true;
                DictModel dict = await OverlayForm(loginForm);

                try {
                    if (dict != null)
                    {
                        await App.Login(dict.s("email"), dict.s("password"));
                    }
                } catch (Exception ex) {
                    Debug.WriteLine(ex.ToString());
                    await DisplayAlert("Error", ex.Message, "OK");

                    success = false;
                }
            }
        }
Beispiel #11
0
        private async Task ShowProjectForm()
        {
            DictModel dict = await OverlayForm(projectForm);

            try {
                if (dict != null)
                {
                    await App.CreateProject(dict.s("title"));

                    list.BeginRefresh();
                }
            } catch (Exception ex) {
                Debug.WriteLine(ex.ToString());
                await DisplayAlert("Error creating project", ex.Message, "OK");
            }
        }
Beispiel #12
0
        private async Task ProjectActionSelected(ListView sender)
        {
            var a = (sender.SelectedItem as Label);

            if (a != null)
            {
                root.IsPresented    = false;
                sender.SelectedItem = null;
                //TODO: don't check by title
                if (a.Text == "Member list")
                {
                    var memberListPage = MakeNavPage(new MemberListPage(projectContext));
                    PageSelectedCallback.Invoke(memberListPage);
                }
                else if (a.Text == "Invite user to project")
                {
                    var      currentPage = (root.Detail as NavigationPage).CurrentPage;
                    BasePage theCurrentestPage;
                    if (currentPage is TabbedPage)
                    {
                        var theTabbedPage = currentPage as TabbedPage;
                        theCurrentestPage = theTabbedPage.CurrentPage as BasePage;
                    }
                    else
                    {
                        theCurrentestPage = currentPage as BasePage;
                    }

                    //TODO: WHAT'S THIS??
//					theTabbedPage.ToolbarItems

                    DictModel response = await theCurrentestPage.OverlayForm(new InvitationForm (projectContext));

                    if (response != null)
                    {
                        string email = response.s("email");
                        try {
                            await App.InviteUserToProject(email, projectContext.Id);
                            await DisplayAlert("Sweet!", "Successfully invited " + email + " to " + projectContext.Name, "OK");
                        } catch (Exception ex) {
                            await DisplayAlert("Sorry", ex.Message, "OK");
                        }
                    }
                }
            }
        }
Beispiel #13
0
        /********** CONSTRUCTOR **********/

        public ProjectModel(DictModel dict)
        {
            Id   = dict.i("id");
            Name = dict.s("name");

            foreach (var m in dict.l("members"))
            {
                AddMember(m.ToString());
            }
            foreach (var t in dict.l("tasks_todo"))
            {
                AddTask(t.ToString(), "todo");
            }
            foreach (var t in dict.l("tasks_doing"))
            {
                AddTask(t.ToString(), "doing");
            }
            foreach (var t in dict.l("tasks_done"))
            {
                AddTask(t.ToString(), "done");
            }
        }
Beispiel #14
0
 public UserModel(DictModel dict)
 {
     Id    = dict.i("id");
     Email = dict.s("email");
 }