Ejemplo n.º 1
0
        private async void Status_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (activeAssignment.Visibility == Windows.UI.Xaml.Visibility.Visible)
            {
                if (assignmentViewModel.ActiveAssignment != null && status.SelectedItem != null)
                {
                    var assignmentStatus = status.SelectedItem;
                    switch ((AssignmentStatus)assignmentStatus)
                    {
                    case AssignmentStatus.Hold:
                        activeAssignment.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                        assignmentViewModel.ActiveAssignment.Status = AssignmentStatus.Hold;
                        await assignmentViewModel.SaveAssignmentAsync(assignmentViewModel.ActiveAssignment);

                        await assignmentViewModel.LoadAssignmentsAsync();

                        break;

                    case AssignmentStatus.Complete:
                        assignmentViewModel.ActiveAssignment.Status = AssignmentStatus.Active;
                        assignmentViewModel.SelectedAssignment      = assignmentViewModel.ActiveAssignment;
                        await assignmentViewModel.SaveAssignmentAsync(assignmentViewModel.ActiveAssignment);

                        await assignmentViewModel.LoadAssignmentsAsync();

                        Helpers.NavigateTo <AssignmentPage> ();
                        Helpers.NavigateTo <ConfirmationsPage> ();
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Event when complete is pressed
        /// </summary>
        partial void Complete()
        {
            //Check if they signed
            if (assignmentViewModel.Signature == null)
            {
                new UIAlertView(string.Empty, "Signature is required.", null, "Ok").Show();
                return;
            }

            alertView            = new UIAlertView("Complete?", "Are you sure?", null, "Yes", "No");
            alertView.Dismissed += (sender, e) => {
                alertView.Dispose();
                alertView = null;

                if (e.ButtonIndex == 0)
                {
                    completeButton.Enabled = false;
                    assignment.Status      = AssignmentStatus.Complete;
                    assignmentViewModel
                    .SaveAssignmentAsync(assignment)
                    .ContinueWith(_ => {
                        BeginInvokeOnMainThread(() => {
                            tableView.ReloadData();

                            var detailsController = controller.ParentViewController as AssignmentDetailsController;
                            detailsController.UpdateAssignment();

                            var menuController = detailsController.ParentViewController.ChildViewControllers[1] as MenuController;
                            menuController.UpdateAssignment();
                        });
                    });
                }
            };
            alertView.Show();
        }
Ejemplo n.º 3
0
        public void SaveAssignment()
        {
            var loadTask = viewModel.LoadAssignmentsAsync();

            loadTask.Wait();

            var assignment = viewModel.Assignments.First();

            assignment.Status = AssignmentStatus.Hold;

            var task = viewModel.SaveAssignmentAsync(assignment);

            task.Wait();

            Assert.That(viewModel.IsBusy, Is.False);
        }
Ejemplo n.º 4
0
        private async void SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var assignmentStatus = status.SelectedItem;

            if (assignmentStatus != null && (AssignmentStatus)assignmentStatus != assignmentViewModel.SelectedAssignment.Status)
            {
                switch ((AssignmentStatus)assignmentStatus)
                {
                case AssignmentStatus.Active:
                    timerControl.Visibility = Windows.UI.Xaml.Visibility.Visible;
                    assignmentViewModel.SelectedAssignment.Status = AssignmentStatus.Active;
                    await assignmentViewModel.SaveAssignmentAsync(assignmentViewModel.SelectedAssignment);

                    await assignmentViewModel.LoadAssignmentsAsync();

                    break;

                case AssignmentStatus.Hold:
                    timerControl.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    assignmentViewModel.SelectedAssignment.Status = AssignmentStatus.Hold;
                    await assignmentViewModel.SaveAssignmentAsync(assignmentViewModel.SelectedAssignment);

                    await assignmentViewModel.LoadAssignmentsAsync();

                    break;

                case AssignmentStatus.Complete:
                    //Set back to old status and navigate
                    assignmentViewModel.SelectedAssignment.Status = (AssignmentStatus)e.RemovedItems.First();
                    Helpers.NavigateTo <ConfirmationsPage> ();
                    break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Save assignment to the view model.
 /// </summary>
 private void SaveAssignment(Assignment assignment, int index)
 {
     assignmentViewModel.SaveAssignmentAsync(assignment).ContinueWith(_ => {
         activity.RunOnUiThread(() => {
             if (assignment.Status == AssignmentStatus.Active || assignment.Status == AssignmentStatus.Declined)
             {
                 activity.ReloadAssignments();
             }
             else
             {
                 activity.ReloadSingleListItem(index);
             }
         });
     });
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Saves the assignment.
        /// </summary>
        private void SaveAssignment()
        {
            assignmentViewModel
            .SaveAssignmentAsync(assignmentViewModel.SelectedAssignment)
            .ContinueWith(t => {
                BeginInvokeOnMainThread(() => {
                    UpdateAssignment();

                    var method = StatusChanged;
                    if (method != null)
                    {
                        method(this, EventArgs.Empty);
                    }
                });
            });
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Saves the assignment.
 /// </summary>
 private void SaveAssignment()
 {
     assignmentViewModel.SaveAssignmentAsync(assignment)
     .ContinueWith(_ => {
         BeginInvokeOnMainThread(() => {
             if (assignment.Status == AssignmentStatus.Active || assignment.Status == AssignmentStatus.Declined)
             {
                 controller.ReloadAssignments();
             }
             else
             {
                 controller.ReloadSingleRow(indexPath);
             }
         });
     });
 }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Create your application here
            SetContentView(Resource.Layout.MapViewLayout);

            assignmentMapViewLayout        = FindViewById <LinearLayout> (Resource.Id.mapViewAssignmentLayout);
            assignmentMapViewLayout.Click += (sender, e) => {
                var intent      = new Intent(this, typeof(SummaryActivity));
                var tabActivity = (AssignmentTabActivity)Parent;
                tabActivity.MapData = null;
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                menuViewModel.MenuIndex = Constants.Navigation.IndexOf("Map");
                StartActivity(intent);
            };
//            mapView = FindViewById<MapView> (Resource.Id.googleMapsView);
//
//            myLocation = new MyLocationOverlay (this, mapView);
//
//            mapView.Overlays.Add (myLocation);
//            mapView.Clickable = true;
//            mapView.Enabled = true;
//            mapView.SetBuiltInZoomControls (true);


            //View containing the active assignment
            var            view     = new View(this);
            LayoutInflater inflator = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);

            view = inflator.Inflate(Resource.Layout.AssignmentItemLayout, null);
            assignmentMapViewLayout.AddView(view);
            view.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            view.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.active_assignment_selector));
            number        = view.FindViewById <TextView> (Resource.Id.assignmentItemNumber);
            job           = view.FindViewById <TextView> (Resource.Id.assignmentJob);
            name          = view.FindViewById <TextView> (Resource.Id.assignmentName);
            phone         = view.FindViewById <TextView> (Resource.Id.assignmentPhone);
            address       = view.FindViewById <TextView> (Resource.Id.assignmentAddress);
            buttonLayout  = view.FindViewById <LinearLayout> (Resource.Id.assignmentButtonLayout);
            timerLayout   = view.FindViewById <LinearLayout> (Resource.Id.assignmentTimerLayout);
            activeSpinner = view.FindViewById <Spinner> (Resource.Id.assignmentStatus);
            spinnerImage  = view.FindViewById <ImageView> (Resource.Id.assignmentStatusImage);
            timer         = view.FindViewById <ToggleButton> (Resource.Id.assignmentTimer);
            timerText     = view.FindViewById <TextView> (Resource.Id.assignmentTimerText);
            phoneButton   = view.FindViewById <RelativeLayout> (Resource.Id.assignmentPhoneLayout);
            mapButton     = view.FindViewById <RelativeLayout> (Resource.Id.assignmentAddressLayout);

            phoneButton.Click += (sender, e) => {
                Extensions.MakePhoneCall(this, phone.Text);
            };

            mapButton.Click += (sender, e) => {
                var intent      = new Intent(this, typeof(SummaryActivity));
                var tabActivity = (AssignmentTabActivity)Parent;
                tabActivity.MapData = null;
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                menuViewModel.MenuIndex = 0;
                StartActivity(intent);
            };

            assignmentViewModel.LoadTimerEntryAsync().ContinueWith(_ => {
                RunOnUiThread(() => {
                    if (assignmentViewModel.Recording)
                    {
                        timer.Checked = true;
                    }
                    else
                    {
                        timer.Checked = false;
                    }
                });
            });

            timer.CheckedChange += (sender, e) => {
                if (e.IsChecked != assignmentViewModel.Recording)
                {
                    if (assignmentViewModel.Recording)
                    {
                        assignmentViewModel.PauseAsync();
                    }
                    else
                    {
                        assignmentViewModel.RecordAsync();
                    }
                }
            };

            activeSpinner.ItemSelected += (sender, e) => {
                if (assignment != null)
                {
                    var selected = assignmentViewModel.AvailableStatuses.ElementAtOrDefault(e.Position);
                    if (selected != assignment.Status)
                    {
                        switch (selected)
                        {
                        case AssignmentStatus.Hold:
                            assignment.Status = selected;
                            assignmentViewModel.SaveAssignmentAsync(assignment).ContinueWith(_ => {
                                RunOnUiThread(() => {
                                    SetAssignment(false);
//                                        mapView.Overlays.Clear ();
//                                        mapView.Overlays.Add (myLocation);
                                    UpdateLocations();
                                });
                            });
                            break;

                        case AssignmentStatus.Complete:
                            //go to confirmations
                            var intent = new Intent(this, typeof(SummaryActivity));
                            menuViewModel.MenuIndex = Constants.Navigation.IndexOf(Constants.Confirmations);
                            StartActivity(intent);
                            break;

                        default:
                            break;
                        }
                    }
                }
            };
        }
Ejemplo n.º 9
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            base.OnCreateView(inflater, container, savedInstanceState);
            var view = inflater.Inflate(Resource.Layout.ConfirmationsLayout, null, true);

            signatureImage = view.FindViewById <ImageView> (Resource.Id.confirmationsSignature);

            photoListView            = view.FindViewById <ListView> (Resource.Id.confirmationPhotoList);
            photoListView.ItemClick += (sender, e) => {
                var image = view.FindViewById <ImageView> (Resource.Id.photoListViewImage);
                if (image != null)
                {
                    int index = (int)image.Tag;
                    var photo = Photos.ElementAtOrDefault(index);
                    photoDialog            = new PhotoDialog(Activity);
                    photoDialog.Activity   = Activity;
                    photoDialog.Assignment = Assignment;
                    photoDialog.Photo      = photo;
                    photoDialog.Show();
                }
            };

            var addPhoto = view.FindViewById <Button> (Resource.Id.confirmationsAddPhoto);

            if (Assignment != null)
            {
                addPhoto.Enabled = !Assignment.IsHistory;
            }
            addPhoto.Click += (sender, e) => {
                var choices = new List <string> ();
                choices.Add(Resources.GetString(Resource.String.Gallery));
                if (mediaPicker.IsCameraAvailable)
                {
                    choices.Add(Resources.GetString(Resource.String.Camera));
                }
                AlertDialog.Builder takePictureDialog = new AlertDialog.Builder(Activity);
                takePictureDialog.SetTitle("Select:");
                takePictureDialog.SetItems(choices.ToArray(), (innerSender, innerE) => {
                    if (innerE.Which == 0)
                    {
                        //gallery
                        mediaPicker.PickPhotoAsync().ContinueWith(t => {
                            if (t.IsCanceled)
                            {
                                return;
                            }
                            Activity.RunOnUiThread(() => {
                                photoDialog             = new PhotoDialog(Activity);
                                photoDialog.Activity    = Activity;
                                photoDialog.Assignment  = Assignment;
                                photoDialog.PhotoStream = t.Result.GetStream();
                                photoDialog.Show();
                            });
                        });
                    }
                    else if (innerE.Which == 1)
                    {
                        //camera
                        StoreCameraMediaOptions options = new StoreCameraMediaOptions();
                        options.Directory = "FieldService";
                        options.Name      = "FieldService.jpg";
                        mediaPicker.TakePhotoAsync(options).ContinueWith(t => {
                            if (t.IsCanceled)
                            {
                                return;
                            }
                            Activity.RunOnUiThread(() => {
                                photoDialog             = new PhotoDialog(Activity);
                                photoDialog.Activity    = Activity;
                                photoDialog.Assignment  = Assignment;
                                photoDialog.PhotoStream = t.Result.GetStream();
                                photoDialog.Show();
                            });
                        });
                    }
                });
                takePictureDialog.Show();
            };

            var addSignature = view.FindViewById <Button> (Resource.Id.confirmationsAddSignature);

            if (Assignment != null)
            {
                addSignature.Enabled = !Assignment.IsHistory;
            }
            addSignature.Click += (sender, e) => {
                signatureDialog            = new SignatureDialog(Activity);
                signatureDialog.Activity   = Activity;
                signatureDialog.Assignment = Assignment;
                signatureDialog.Show();
            };

            var completeSignature = view.FindViewById <Button> (Resource.Id.confirmationsComplete);

            if (Assignment != null)
            {
                completeSignature.Enabled = Assignment.CanComplete;
            }
            completeSignature.Click += (sender, e) => {
                if (assignmentViewModel.Signature == null)
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
                    builder
                    .SetTitle(string.Empty)
                    .SetMessage("No signature!")
                    .SetPositiveButton("Ok", (innerSender, innere) => { })
                    .Show();
                    return;
                }
                completeSignature.Enabled = false;
                Assignment.Status         = AssignmentStatus.Complete;
                assignmentViewModel.SaveAssignmentAsync(Assignment)
                .ContinueWith(_ => {
                    Activity.RunOnUiThread(() => {
                        completeSignature.Enabled = true;
                        Activity.Finish();
                    });
                });
            };

            ReloadListView();

            ReloadSignature();

            return(view);
        }
Ejemplo n.º 10
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.AssignmentsLayout);

            assignmentsListView           = FindViewById <ListView> (Resource.Id.assignmentsListView);
            assignmentActiveLayout        = FindViewById <LinearLayout> (Resource.Id.assignmentSelectedItem);
            assignmentActiveLayout.Click += (sender, e) => AssignmentSelected(-1);

            assignmentsListView.ItemClick += (sender, e) => AssignmentSelected(e.Position);

            //View containing the active assignment
            var            view     = new View(this);
            LayoutInflater inflator = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);

            view = inflator.Inflate(Resource.Layout.AssignmentItemLayout, null);
            assignmentActiveLayout.AddView(view);
            view.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            view.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.active_assignment_selector));
            number        = view.FindViewById <TextView> (Resource.Id.assignmentItemNumber);
            job           = view.FindViewById <TextView> (Resource.Id.assignmentJob);
            name          = view.FindViewById <TextView> (Resource.Id.assignmentName);
            phone         = view.FindViewById <TextView> (Resource.Id.assignmentPhone);
            address       = view.FindViewById <TextView> (Resource.Id.assignmentAddress);
            buttonLayout  = view.FindViewById <LinearLayout> (Resource.Id.assignmentButtonLayout);
            timerLayout   = view.FindViewById <LinearLayout> (Resource.Id.assignmentTimerLayout);
            activeSpinner = view.FindViewById <Spinner> (Resource.Id.assignmentStatus);
            spinnerImage  = view.FindViewById <ImageView> (Resource.Id.assignmentStatusImage);
            timer         = view.FindViewById <ToggleButton> (Resource.Id.assignmentTimer);
            timerText     = view.FindViewById <TextView> (Resource.Id.assignmentTimerText);
            phoneButton   = view.FindViewById <RelativeLayout> (Resource.Id.assignmentPhoneLayout);
            mapButton     = view.FindViewById <RelativeLayout> (Resource.Id.assignmentAddressLayout);

            timer.CheckedChange += (sender, e) => {
                if (e.IsChecked != assignmentViewModel.Recording)
                {
                    if (assignmentViewModel.Recording)
                    {
                        assignmentViewModel.PauseAsync();
                    }
                    else
                    {
                        assignmentViewModel.RecordAsync();
                    }
                }
            };

            activeSpinner.ItemSelected += (sender, e) => {
                if (assignment != null)
                {
                    var selected = assignmentViewModel.AvailableStatuses.ElementAtOrDefault(e.Position);
                    if (selected != assignment.Status)
                    {
                        switch (selected)
                        {
                        case AssignmentStatus.Hold:
                            timer.Checked     = false;
                            assignment.Status = selected;
                            assignmentViewModel.SaveAssignmentAsync(assignment).ContinueWith(_ => RunOnUiThread(ReloadAssignments));
                            break;

                        case AssignmentStatus.Complete:
                            //go to confirmations, this is getting called multiple times.
                            var intent = new Intent(this, typeof(SummaryActivity));
                            assignmentViewModel.SelectedAssignment = assignment;
                            menuViewModel.MenuIndex = Constants.Navigation.IndexOf(Constants.Confirmations);
                            StartActivity(intent);
                            break;

                        default:
                            break;
                        }
                    }
                }
            };

            mapButton.Click += (sender, e) => {
                var activity = (AssignmentTabActivity)Parent;
                var intent   = new Intent(activity, typeof(SummaryActivity));
                menuViewModel.MenuIndex = Constants.Navigation.IndexOf("Map");
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                activity.StartActivity(intent);
            };

            phoneButton.Click += (sender, e) => {
                Extensions.MakePhoneCall(this, phone.Text);
            };
        }