예제 #1
0
        public LoginPage()
        {
            InitializeComponent();

            LoginCell.Command = new Command(async() =>
            {
                var username = UsernameEntry.Text;
                var password = PasswordEntry.Text;

                var result = await QuantiServer.Login(username, password);

                if (result)
                {
                    await Navigation.PopModalAsync();
                }
                else
                {
                    await DisplayAlert("Login Failed!", "Please verify the inserted fields and try again.", "OK");
                }
            });

            SignupCell.Command = new Command(() =>
            {
                Device.OpenUri(new Uri(QuantiServer.SignupURL));
            });
        }
        public RemoteHistoryPage()
        {
            InitializeComponent();

            HistoryListView.ItemsSource = RemoteLog;

            HistoryListView.ItemSelected += (sender, e) =>
            {
                if (e.SelectedItem == null)
                {
                    return;
                }

                var il = (RemoteInteractionLog)e.SelectedItem;

                Navigation.PushAsync(new PastSharedInteractionPage(il));

                HistoryListView.SelectedItem = null;
            };

            QuantiServer.GetSharedInteractions().ContinueWith((arg) =>
            {
                foreach (var il in arg.Result)
                {
                    RemoteLog.Add(il);
                }
            });
        }
        private async void SaveInteraction()
        {
            if (SelectedTeamMember == null)
            {
                await DisplayAlert("Missing Fields!", "You must select a team member!", "OK");

                return;
            }

            if (Rating == 0)
            {
                await DisplayAlert("Missing Fields!", "A rating is required.", "OK");

                return;
            }

            var date = DateTimeOffset.UtcNow;

            date.AddSeconds(ElapsedTime * -1);

            InteractionLog il = new InteractionLog
            {
                Member      = SelectedTeamMember,
                ElapsedTime = ElapsedTime,
                Rating      = Rating,
                Note        = NotesEditor.Text,
                Date        = date,
                Shared      = LocalSettings.AutomaticallyShareNotes
            };

            var identifier = await QuantiServer.PublishInteractionResult(il).ConfigureAwait(true);

            if (identifier == null)
            {
                await DisplayAlert("Error!", "Unable to contact the QuantiDev server. This interaction will only be saved locally.", "OK");

                return;
            }
            else
            {
                il.RemoteIdentifier = identifier;
            }

            LocalRealmInstance.Write(() =>
            {
                LocalRealmInstance.Add(il);

                Navigation.PopAsync();

                System.Diagnostics.Debug.WriteLine("Saved!");
            });
        }
예제 #4
0
        private async void LogOut(object sender, EventArgs e)
        {
            var answer = await DisplayAlert("Log Out", "Are you sure you want to log out from InteractDev?", "Log Out", "Cancel");

            if (answer)
            {
                QuantiServer.DeleteSavedProperties();
                LocalSettings.DeleteSavedProperties();

                var realm = Realm.GetInstance();

                realm.Write(() =>
                {
                    realm.RemoveAll();
                });

                await Navigation.PushModalAsync(new NavigationPage(new LoginPage()));
            }
        }
예제 #5
0
        public static async Task <bool> UpdateLocalInteractionNotes()
        {
            var interactions = await QuantiServer.DownloadInteractionNotes();

            if (interactions == null)
            {
                return(false);
            }

            using (var realm = Realm.GetInstance())
            {
                foreach (var interaction in interactions)
                {
                    var exists = realm.All <InteractionLog>().Where(il => il.RemoteIdentifier == interaction.identifier).Count() != 0;

                    if (!exists)
                    {
                        var members = realm.All <TeamMember>().Where(tm => tm.Identifier == interaction.intervenient.id);

                        if (members.Count() == 0)
                        {
                            continue;                                   //	Meh. Do not even bother!
                        }
                        realm.Write(() =>
                        {
                            realm.Add(new InteractionLog
                            {
                                RemoteIdentifier = interaction.identifier,
                                ElapsedTime      = interaction.duration,
                                Shared           = interaction.shared,
                                Rating           = interaction.rating,
                                Note             = interaction.notes,
                                Date             = interaction.StartDateOffset,
                                Member           = members.First()
                            });
                        });
                    }
                }
            }

            return(true);
        }
        public async void DeleteInteraction(object sender, EventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("Tapped delete interaction!");

            var answer = await DisplayAlert("Delete Interaction", "Are you sure you want to delete the current interaction?", "Delete", "Cancel");

            if (answer)
            {
                await QuantiServer.DeleteInteractionNotes(Log);

                using (var realm = Realm.GetInstance())
                {
                    realm.Write(() =>
                    {
                        realm.Remove(Log);
                    });
                }

                await Navigation.PopAsync();
            }
        }
 public void ToggleShare(object sender, EventArgs e)
 {
     QuantiServer.UpdateInteractionPrivacy(Log).ContinueWith((arg) => { });
 }
예제 #8
0
        public static async Task <bool> UpdateLocalTeamMembers()
        {
            using (var realm = Realm.GetInstance())
            {
                var members = await QuantiServer.GetTeamMembers();

                if (members == null)
                {
                    return(false);
                }

                foreach (var m in members)
                {
                    if (m.username == QuantiServer.Username)                            //	Don't add self!
                    {
                        continue;
                    }

                    var objs = realm.All <TeamMember>().Where(tm => tm.Identifier == m.id);

                    if (objs.Count() == 0)
                    {
                        //	The team member does not exist in the database...

                        realm.Write(() =>
                        {
                            realm.Add(new TeamMember
                            {
                                Identifier = m.id,
                                Name       = m.name,
                                Username   = m.username
                            });
                        });
                    }
                    else
                    {
                        //	The team member exists...

                        var fo = objs.First();

                        if (fo.Name != m.name)
                        {
                            //	But has changed their name!

                            realm.Write(() =>
                            {
                                fo.Name = m.name;
                            });
                        }
                    }
                }

                //	Now, disabling all the (old) team members, and re-enabling
                //	everyone who may have come back... (Hey, welcome back!)

                var allSaved = realm.All <TeamMember>();

                foreach (var saved in allSaved)
                {
                    bool found = false;

                    foreach (var current in members)
                    {
                        if (current.id == saved.Identifier)
                        {
                            found = true;

                            break;
                        }
                    }

                    realm.Write(() =>
                    {
                        saved.IsCurrentlyMember = found;
                    });
                }

                return(true);
            }
        }