123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using Xamarin.Essentials;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- using Document = InABox.Core.Document;
- using PRSSecurity = InABox.Core.Security;
- namespace comal.timesheets
- {
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class PDFList
- {
-
- public IList<IDocumentShell> Documents { get; set; }
-
- public bool AllowUpload { get; set; }
- public bool AllowPrintShare { get; set; }
- public bool AllowView { get; set; }
- public bool AllowDelete { get; set; }
- public PDFList()
- {
- InitializeComponent();
- }
- protected override void OnAppearing()
- {
- _documents.ItemsSource = Documents;
- _upload.IsVisible = AllowUpload;
- base.OnAppearing();
-
- }
-
- // private DocShell AssignIcon(DocShell shell)
- // {
- // if (shell.FileName.ToLower().EndsWith("pdf"))
- // shell.ImageSource = "pdficon.png";
- // else if (shell.FileName.ToLower().EndsWith("docx") || shell.FileName.ToLower().EndsWith("doc"))
- // shell.ImageSource = "worddoc.png";
- // else if (shell.FileName.ToLower().EndsWith("png") || shell.FileName.ToLower().EndsWith("jpg"))
- // shell.ImageSource = "productimage.png";
- // return shell;
- // }
-
- private async void Upload_Clicked(object sender, EventArgs e)
- {
- // var result = await FilePicker.PickAsync(new PickOptions { FileTypes = FilePickerFileType.Pdf });
- // if (result != null)
- // {
- // using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Saving"))
- // {
- // string fileName = $"File Name: {result.FileName}";
- // var stream = await result.OpenReadAsync();
- // var memoryStream = new MemoryStream();
- // stream.CopyTo(memoryStream);
- // var data = memoryStream.ToArray();
- // var doc = new Document { FileName = fileName, Data = data };
- // new Client<Document>().Save(doc, "Uploaded from mobile device");
- // pDFShells.Add(new DocShell { FileName = fileName, DocID = doc.ID });
- // pdfListView.ItemsSource = null;
- // pdfListView.ItemsSource = pDFShells;
- // SaveEntityDoc(doc.ID);
- // }
- // }
- }
- // private void SaveEntityDoc(Guid docID)
- // {
- // if (Entity is EmployeeQualification)
- // {
- // EmployeeQualificationDocument empDoc = new EmployeeQualificationDocument();
- // empDoc.DocumentLink.ID = docID;
- // empDoc.EntityLink.ID = Entity.ID;
- // new Client<EmployeeQualificationDocument>().Save(empDoc, "Upload from mobile device");
- // }
- // if (Entity is Notification)
- // {
- // NotificationDocument notificationDoc = new NotificationDocument();
- // notificationDoc.DocumentLink.ID = docID;
- // notificationDoc.EntityLink.ID = Entity.ID;
- // new Client<NotificationDocument>().Save(notificationDoc, "Upload from mobile device");
- // }
- // }
- // private async void List_Tapped(object sender, EventArgs e)
- // {
- // DocShell shell = pdfListView.SelectedItem as DocShell;
- // if (!bAllowView)
- // {
- // DisplayAlert("Alert", "Opening is not allowed from this module", "OK");
- // return;
- // }
- //
- // if (bAllowDelete)
- // {
- // string chosenOption = await DisplayActionSheet("Choose an option", "Cancel", null, "View", "Delete File");
- // switch (chosenOption)
- // {
- // case "Cancel":
- // return;
- // default:
- // return;
- // case "View":
- // OpenDocViewer(shell);
- // break;
- // case "Delete File":
- // ConfirmDelete(shell);
- // break;
- // }
- // }
- // else
- // {
- // OpenDocViewer(shell);
- // }
- // }
- //
- // private async void ConfirmDelete(DocShell shell)
- // {
- // string chosenOption = await DisplayActionSheet("Confirm Delete?", "Cancel", null, "Yes", "No");
- // switch (chosenOption)
- // {
- // case "Cancel":
- // return;
- // default:
- // return;
- // case "No":
- // return;
- // case "Yes":
- // using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Working"))
- // {
- // pDFShells.Remove(shell);
- // pdfListView.ItemsSource = null;
- // pdfListView.ItemsSource = pDFShells;
- // Document document = new Document { ID = shell.DocID };
- // DeleteEntityDocument(shell.DocID);
- // new Client<Document>().Delete(document, "Deleted from mobile device");
- // }
- // break;
- // }
- // }
- //
- // void DeleteEntityDocument(Guid id)
- // {
- // if (Entity is EmployeeQualification)
- // {
- // CoreTable table = new Client<EmployeeQualificationDocument>().Query(new Filter<EmployeeQualificationDocument>(x => x.DocumentLink.ID).IsEqualTo(id),
- // new Columns<EmployeeQualificationDocument>(x => x.ID));
- // EmployeeQualificationDocument empDoc = new EmployeeQualificationDocument();
- // empDoc.ID = Guid.Parse(table.Rows.First().Values[0].ToString());
- // new Client<EmployeeQualificationDocument>().Delete(empDoc, "Deleted from mobile device");
- // }
- // }
- void OpenDocViewer(DocShell shell)
- {
- shell.FileName = shell.FileName.ToLower();
- if (shell.FileName.EndsWith("pdf"))
- {
- if (Device.RuntimePlatform.Equals(Device.Android) && PRSSecurity.IsAllowed<CanOpenMobileNativePDFViewer>())
- OpenNativeViewer(shell);
- else
- {
- PDFViewer viewer = new PDFViewer(shell.DocID) { AllowPrintShare = this.AllowPrintShare };
- Navigation.PushAsync(viewer);
- }
- }
- else if (shell.FileName.EndsWith("docx") || shell.FileName.EndsWith("doc"))
- {
- CoreTable table = new Client<Document>().Query(new Filter<Document>(x => x.ID).IsEqualTo(shell.DocID),
- new Columns<Document>(x => x.Data));
- Document doc = table.Rows.First().ToObject<Document>();
- MemoryStream memoryStream = new MemoryStream(doc.Data);
- DisplayAlert("Error", "Word documents not available at this time", "OK");
- }
- else if (shell.FileName.EndsWith("png") || shell.FileName.EndsWith("jpg") || shell.FileName.EndsWith("jpeg"))
- {
- CoreTable table = new Client<Document>().Query(new Filter<Document>(x => x.ID).IsEqualTo(shell.DocID),
- new Columns<Document>(x => x.Data));
- Document doc = table.Rows.First().ToObject<Document>();
- ImageSource src = ImageSource.FromStream(() => new MemoryStream(doc.Data));
- ImageViewer viewer = new ImageViewer(src);
- Navigation.PushAsync(viewer);
- }
- }
- private async void OpenNativeViewer(DocShell shell)
- {
- CoreTable table = new Client<Document>().Query(new Filter<Document>(x => x.ID).IsEqualTo(shell.DocID));
- Document doc = table.Rows.First().ToObject<Document>();
- var filePath = Path.Combine(FileSystem.AppDataDirectory, doc.FileName);
- File.WriteAllBytes(filePath, doc.Data);
- await Launcher.OpenAsync(new OpenFileRequest
- {
- File = new ReadOnlyFile(filePath)
- });
- }
- // void SearchEnt_Changed(object sender, EventArgs e)
- // {
- // pdfListView.ItemsSource = pDFShells.Where(x =>
- // x.FileName.Contains(searchEnt.Text) || x.FileName.Contains(searchEnt.Text.ToLower())
- // || x.FileName.Contains(searchEnt.Text.ToUpper()) || x.FileName.Contains(UpperCaseFirst(searchEnt.Text))
- // );
- // }
-
- private void MaterialCard_OnClicked(object sender, EventArgs e)
- {
- //throw new NotImplementedException();
- }
- private void _documents_OnItemTapped(object sender, MobileListItemTappedEventArgs args)
- {
- //throw new NotImplementedException();
- }
- }
- public class DocShell
- {
- public string FileName { get; set; }
- public Guid DocID { get; set; }
- public ImageSource ImageSource { get; set; }
- public double FirstRowHeight { get; set; }
- public string Type { get; set; }
- public double ImageHeightRequest { get; set; }
- public double ImageWidthRequest { get; set; }
- public double ColumnWidth { get; set; }
- public double ImageRow { get; set; }
- public double ImageRowSpan { get; set; }
- public byte[] ThumbNail { get; set; }
- public double TypeColumn { get; set; }
- public double TypeColumnSpan { get; set; }
- public string FileDetails { get; set; }
- public bool ExpandVisible { get; set; }
- public DocShell()
- {
- FileName = "";
- DocID = Guid.Empty;
- ImageSource = "";
- FirstRowHeight = 0;
- Type = "";
- ImageHeightRequest = 30;
- ImageWidthRequest = 30;
- ColumnWidth = 40;
- ImageRow = 1;
- ImageRowSpan = 1;
- TypeColumn = 0;
- TypeColumnSpan = 2;
- FileDetails = "";
- ExpandVisible = false;
- }
- }
- }
|