123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- using System;
- using System.Linq;
- using InABox.Mobile;
- using Xamarin.Essentials;
- using Xamarin.Forms.Xaml;
- namespace PRS.Mobile
- {
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class AssignmentEdit
- {
- public AssignmentShell Item
- {
- get => _viewmodel.Item;
- set
- {
- _viewmodel.Item = value;
-
- Title = _viewmodel.Item.ID == Guid.Empty
- ? "New Assignment"
- : $"Assignment {_viewmodel.Item.Number}";
- ReloadForms();
- Forms.Refresh();
- CheckChanged();
- }
- }
-
- public AssignmentEdit()
- {
- InitializeComponent();
- App.Data.Activities.Refresh(false);
- }
- private void CheckChanged()
- {
- Dispatcher.BeginInvokeOnMainThread(() =>
- {
- bool changed = Item.ID == Guid.Empty || Item.IsChanged();
- _save.IsVisible = changed;
- _directions.IsVisible = !changed && _tabStrip.SelectedItem.Index == 1;
- _newimage.IsVisible = !changed && _tabStrip.SelectedItem.Index == 2;
- _newform.IsVisible = !changed && _tabStrip.SelectedItem.Index == 3;
- });
- }
- private void Details_OnOnDetailsChanged(object sender, MobileViewChangedEventArgs eventArgs)
- {
- CheckChanged();
- }
- private void ReloadForms()
- {
- _newform.Items.Clear();
- var forms = App.Data.Activities.FirstOrDefault(x => x.ID == _viewmodel.Item.ActivityID)?.Forms;
- if (forms?.Any() == true)
- {
- foreach (var form in forms)
- {
- MobileMenuItem item = new MobileMenuItem()
- {
- Text = form.FormDescription,
- BindingContext = form
- };
- item.Clicked += (o, args) =>
- {
- var newform = _viewmodel.Forms.AddItem();
- newform.ParentID = _viewmodel.Item.ID;
- newform.FormID = (item.BindingContext as ActivityFormShell)?.FormID ?? Guid.Empty;
- newform.FormDescription = (item.BindingContext as ActivityFormShell)?.FormDescription ?? "Guid.Empty";
- _viewmodel.Forms.CommitItem(newform);
- Forms.Refresh();
- };
- _newform.Items.Add(item);
- }
- }
- }
- private async void TakePhoto_Clicked(object sender, EventArgs e)
- {
- await Images.AddImage<MobileDocumentCameraSource, MobileDocumentCameraOptions>(PhotoUtils.CreateCameraOptions());
- }
- private async void BrowseLibrary_Clicked(object sender, EventArgs e)
- {
- await Images.AddImage<MobileDocumentPhotoLibrarySource, MobileDocumentPhotoLibraryOptions>(PhotoUtils.CreatePhotoLibraryOptions());
- }
- private async void _save_OnClicked(object sender, MobileMenuButtonClickedEventArgs args)
- {
- if (Item.ActivityID == Guid.Empty)
- {
- await DisplayAlert("Please select an Activity before saving this booking!", "Error", "OK");
- return;
- }
- Item.Save("Saved by PRS Mobile");
- CheckChanged();
- }
- private void _newform_OnClicked(object sender, MobileMenuButtonClickedEventArgs args)
- {
- var selector = new NewForms() { AppliesTo = "Assignment" };
- selector.ItemSelected += CreateNewForm;
- Navigation.PushAsync(selector);
- }
- private async void CreateNewForm(object sender, NewFormSelectedArgs args)
- {
- var instance = _viewmodel.Forms.AddItem();
- instance.ParentID = _viewmodel.Item.ID;
- instance.FormID = args.Form.ID;
- instance.FormCode = args.Form.Code;
- instance.FormDescription = args.Form.Description;
- instance.Save("Created on Mobile Device");
-
- Dispatcher.BeginInvokeOnMainThread(() =>
- {
- _viewmodel.Forms.Search(null);
- Forms.Refresh();
- });
-
- }
- private async void RefreshMap_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
- {
- await DisplayAlert("Error", "Not Implemented Yet!", "OK");
- }
- private void _tabStrip_OnSelectionChanged(object sender, EventArgs e)
- {
- _tabView.SelectedItem = _tabView.Items[_tabStrip.SelectedItem.Index];
- if (_tabStrip.SelectedIndex == 1)
- Map.Refresh();
- else if (_tabStrip.SelectedIndex == 3)
- {
- Forms.Refresh();
- ReloadForms();
- }
- CheckChanged();
- }
- private async void Directions_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
- {
- var location = new Xamarin.Essentials.Location(_viewmodel.Coordinates.Y, _viewmodel.Coordinates.X);
- var options = new Xamarin.Essentials.MapLaunchOptions { NavigationMode = Xamarin.Essentials.NavigationMode.Driving };
- await Xamarin.Essentials.Map.OpenAsync(location, options);
- }
- }
- }
|