/// <summary> /// Updateds the element. /// </summary> /// <param name="element">The element.</param> /// <returns></returns> public override UPMElement UpdatedElement(UPMElement element) { UPMInBoxPage oldPage = (UPMInBoxPage)this.TopLevelElement; UPMInBoxPage page = new UPMInBoxPage(StringIdentifier.IdentifierWithStringId("Inbox")) { UploadFieldGroup = oldPage.UploadFieldGroup, FileNameEditField = oldPage.FileNameEditField, SkipUploadIfPossible = oldPage.SkipUploadIfPossible }; UPInboxFileManager manager = UPInboxFileManager.CurrentInboxFileManager(); List <UPInboxFile> files = manager.AllInboxFiles(); foreach (UPInboxFile inboxFile in files) { UPMInboxFile upmInboxFile = ModelInboxFileFromInboxFile(inboxFile); page.AddChild(upmInboxFile); } this.TopLevelElement = page; this.SortFilesByDate(); page.Invalid = false; this.InformAboutDidChangeTopLevelElement(page, page, null, null); return(element); }
private static UPMInboxFile ModelInboxFileFromInboxFile(UPInboxFile inboxFile) { UPMInboxFile upmInboxFile = new UPMInboxFile(StringIdentifier.IdentifierWithStringId(inboxFile.Path)) { Path = inboxFile.Path, URL = inboxFile.URL }; #if PORTING upmInboxFile.Name = inboxFile.Path.LastPathComponent(); Exception attributesErr; NSDictionary fileAttributes = NSFileManager.DefaultManager().AttributesOfItemAtPathError(inboxFile.Path, attributesErr); if (attributesErr) { DDLogError("UPInBoxPageModelController error no fileAttributes: %@", fileAttributes); } NSNumber fileSizeNumber = fileAttributes.ObjectForKey(NSFileSize); upmInboxFile.Size = fileSizeNumber.LongLongValue(); upmInboxFile.FormattedSize = NSByteCountFormatter.StringFromByteCountCountStyle(upmInboxFile.Size, NSByteCountFormatterCountStyleFile); upmInboxFile.Date = fileAttributes.ObjectForKey(NSFileCreationDate); // Cant use TimeZone here. Called before Login and server independent. upmInboxFile.FormattedDate = UPInBoxPageModelController.UpDateFormatter().StringFromDate(upmInboxFile.Date); UIDocumentInteractionController interactionController = UIDocumentInteractionController.InteractionControllerWithURL(inboxFile.URL); ArrayList icons = interactionController.Icons; //upmInboxFile.Icon = icons.LastObject(); // Adding largest Icon available #endif upmInboxFile.MimeTye = UPInboxFileManager.MimeTypeForPath(upmInboxFile.Path); upmInboxFile.Color = UPInBoxPageModelController.ColorForMimeType(upmInboxFile.MimeTye); return(upmInboxFile); }
/// <summary> /// Uploads the file. /// </summary> /// <param name="file">The file.</param> public void UploadFile(UPMInboxFile file) { this.uploadingFile = file; byte[] data = null; //NSData.DataWithContentsOfURL(file.URL); string fileName = file.Name; foreach (UPEditFieldContext changedField in this.editFieldContexts.Values) { if (changedField.FieldConfig.Function == "Filename" && !string.IsNullOrEmpty(changedField.Value)) { fileName = changedField.Value; // New filename has no extension. Add original extension //if (fileName.PathExtension().Length == 0) //{ // fileName = $"{fileName}.{file.Path.PathExtension()}"; //} break; } } this.docUploadRequest = new UPOfflineUploadDocumentRequest(data, -1, fileName, file.MimeTye, this.recordIdentification, -1); List <UPCRMRecord> docUploadRecords = this.docUploadRequest.CreateOfflineRecords(); string d1RecordId = docUploadRecords[0].RecordId; string d3RecordId = docUploadRecords[1].RecordId; UPCRMRecord d1Record = new UPCRMRecord(d1RecordId, "Update"); UPCRMRecord d3Record = new UPCRMRecord(d3RecordId, "Update"); this.editRecordRequest = new UPOfflineEditRecordRequest(UPOfflineRequestMode.OnlineConfirm, this.ViewReference); foreach (UPEditFieldContext changedField in this.editFieldContexts.Values) { UPCRMRecord record = changedField.FieldConfig.InfoAreaId == "D1" ? d1Record : d3Record; if (changedField.FieldConfig.Function == "Filename") { continue; } UPCRMFieldValue fieldValue = record.NewValueFieldId(changedField.Value, changedField.FieldId); if (!string.IsNullOrEmpty(changedField.DateOriginalValue)) { fieldValue.DateOriginalValue = changedField.DateOriginalValue; } else if (!string.IsNullOrEmpty(changedField.TimeOriginalValue)) { fieldValue.TimeOriginalValue = changedField.TimeOriginalValue; } } this.editRecordRequest.TitleLine = "FieldUploadFields"; this.editRecordRequest.DetailsLine = ""; this.multiRequest = new UPOfflineMultiRequest(this); this.multiRequest.AddRequest(this.docUploadRequest); this.multiRequest.AddRequest(this.editRecordRequest); this.multiRequest.Start(); }