private string DownloadPaperDocs(IPaperModel model, IPaperView view, IMainPresenter presenter) { string errorMessage = string.Empty; string outputFolder = view.OutputFolder; string fileAccessToken = ApplicationResource.DefaultAccessToken; IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.DownloadPaperDocUrl = ApplicationResource.ActionDownloadPaperDocs; service.UserAgentVersion = ApplicationResource.UserAgent; IServiceResponse response = null; foreach (PaperListViewItemModel item in model.Paper) { if (item.IsChecked) { response = service.DownloadPaperDoc(item.MemberId, item.PaperId, outputFolder, item.PaperName, fileAccessToken); if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Downloaded Paper doc [" + item.PaperName + "]")); }, null); } } } return(errorMessage); }
private void OnDataChanged(object sender, System.EventArgs e) { IPaperView view = base._view as IPaperView; IPaperModel model = base._model as IPaperModel; PresenterBase.SetModelPropertiesFromView <IPaperModel, IPaperView>( ref model, view ); }
protected override void UnWireViewEvents() { if (IsViewEventsWired) { IPaperView view = base._view as IPaperView; view.DataChanged -= OnDataChanged; view.CommandGetPaper -= OnCommandGetPaper; view.CommandDownloadPaper -= OnCommandDownloadPaper; view.CommandDeletePaper -= OnCommandDeletePaper; view.CommandExportToCSV -= OnCommandExportPaper; IsViewEventsWired = false; } }
protected override void WireViewEvents() { if (!IsViewEventsWired) { IPaperView view = base._view as IPaperView; view.DataChanged += OnDataChanged; view.CommandGetPaper += OnCommandGetPaper; view.CommandDownloadPaper += OnCommandDownloadPaper; view.CommandDeletePaper += OnCommandDeletePaper; view.CommandExportToCSV += OnCommandExportPaper; IsViewEventsWired = true; } }
protected override void Initialize() { IPaperView view = base._view as IPaperView; IPaperModel model = base._model as IPaperModel; PresenterBase.SetViewPropertiesFromModel <IPaperView, IPaperModel>( ref view, model ); SyncContext.Post(delegate { view.RefreshAccessToken(); }, null); }
private void OnCommandDownloadPaper(object sender, System.EventArgs e) { IPaperView view = base._view as IPaperView; IPaperModel model = base._model as IPaperModel; IMainPresenter presenter = SimpleResolver.Instance.Get <IMainPresenter>(); if (SyncContext != null) { SyncContext.Post(delegate { presenter.EnableControl(false); presenter.ActivateSpinner(true); presenter.UpdateProgressInfo("Processing..."); }, null); } Thread downloadpaperdocs = new Thread(() => { if (string.IsNullOrEmpty(model.AccessToken)) { SyncContext.Post(delegate { presenter.EnableControl(true); presenter.ActivateSpinner(false); presenter.UpdateProgressInfo(""); }, null); } else { this.DownloadPaperDocs(model, view, presenter); if (SyncContext != null) { SyncContext.Post(delegate { // update result and update view. PresenterBase.SetViewPropertiesFromModel <IPaperView, IPaperModel>( ref view, model ); // update result and update view. view.RenderPaperList(); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } } }); downloadpaperdocs.Start(); }
private void OnCommandExportPaper(object sender, System.EventArgs e) { IPaperView view = base._view as IPaperView; IPaperModel model = base._model as IPaperModel; IMainPresenter presenter = SimpleResolver.Instance.Get <IMainPresenter>(); if (SyncContext != null) { SyncContext.Post(delegate { presenter.EnableControl(false); presenter.ActivateSpinner(true); presenter.UpdateProgressInfo("Processing..."); }, null); } Thread exportpapertocsv = new Thread(() => { if (string.IsNullOrEmpty(model.AccessToken)) { SyncContext.Post(delegate { presenter.EnableControl(true); presenter.ActivateSpinner(false); presenter.UpdateProgressInfo(""); }, null); } else { if (SyncContext != null) { SyncContext.Post(delegate { PresenterBase.SetViewPropertiesFromModel <IPaperView, IPaperModel>( ref view, model ); string sPath = string.Empty; if (model.Paper.Count > 0) { //create CSV file in My Documents folder sPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\PaperDocExport.csv"; CsvConfiguration config = new CsvConfiguration() { HasHeaderRecord = true, Delimiter = ",", Encoding = System.Text.Encoding.UTF8 }; config.RegisterClassMap(new PaperHeaderMap()); int total = model.Paper.Count; using (CsvWriter writer = new CsvWriter(new StreamWriter(sPath), config)) { writer.WriteHeader <PaperHeaderRecord>(); int count = 0; foreach (var item in model.Paper) { writer.WriteField <string>(item.PaperName); writer.WriteField <string>(item.PaperId); writer.WriteField <string>(item.FolderPath); writer.WriteField <string>(item.Status); writer.WriteField <string>(item.Owner); writer.WriteField <string>(item.CreatedDate.ToString()); writer.WriteField <string>(item.LastUpdatedDate.ToString()); writer.WriteField <string>(item.LastEditor); writer.WriteField <string>(item.Revision.ToString()); count++; if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Writing Record: {0}/{1}", (count), total)); }, null); } writer.NextRecord(); } } if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo("Completed. Exported file located at " + sPath); }, null); } } if (model.Paper.Count == 0) { presenter.UpdateProgressInfo("No Paper docs were chosen to export."); } presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } } }); exportpapertocsv.Start(); }
private void OnCommandGetPaper(object sender, System.EventArgs e) { IPaperView view = base._view as IPaperView; IPaperModel model = base._model as IPaperModel; IMainPresenter presenter = SimpleResolver.Instance.Get <IMainPresenter>(); if (SyncContext != null) { SyncContext.Post(delegate { presenter.EnableControl(false); presenter.ActivateSpinner(true); presenter.UpdateProgressInfo("Processing..."); }, null); } Thread getpaperdocs = new Thread(() => { if (string.IsNullOrEmpty(model.AccessToken)) { SyncContext.Post(delegate { presenter.EnableControl(true); presenter.ActivateSpinner(false); presenter.UpdateProgressInfo(""); }, null); } else { // clear existing data first model.Paper.Clear(); //get members first IList <TeamListViewItemModel> members = SearchOwners(model, presenter); //get Paper Ids Parallel.ForEach(members, (member) => { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Retrieving member's Paper docs: {0}", member.Email)); }, null); } IList <PaperListViewItemModel> docIds = new List <PaperListViewItemModel>(); docIds = this.GetPaperDocs(model, presenter, member); //get metadata from ids foreach (PaperListViewItemModel item in docIds) { this.GetPaperMetadata(model, presenter, item.PaperId, item.MemberId); } }); if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Sorting Paper docs...")); }, null); } // sort by email then by folder path model.Paper = model.Paper.OrderBy(s => s.Owner).ThenBy(s => s.LastUpdatedDate).ToList(); if (SyncContext != null) { SyncContext.Post(delegate { // update result and update view. PresenterBase.SetViewPropertiesFromModel <IPaperView, IPaperModel>( ref view, model ); // update result and update view. view.RenderPaperList(); presenter.ActivateSpinner(false); presenter.EnableControl(true); presenter.UpdateProgressInfo("Paper doc list completed. Total Docs [" + model.Paper.Count.ToString() + "]"); }, null); } } }); getpaperdocs.Start(); }
private string DeletePaperDocs(IPaperModel model, IPaperView view, IMainPresenter presenter) { string errorMessage = string.Empty; string fileAccessToken = ApplicationResource.DefaultAccessToken; IMemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ArchivePaperDocUrl = ApplicationResource.ActionArchivePaperDocs; service.UserAgentVersion = ApplicationResource.UserAgent; IServiceResponse response = null; IMemberServices servicePerm = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); servicePerm.PermDeletePaperDocUrl = ApplicationResource.ActionPermanentlyDeletePaperDocs; servicePerm.UserAgentVersion = ApplicationResource.UserAgent; IServiceResponse responsePerm = null; try { foreach (PaperListViewItemModel item in model.Paper) { if (view.ArchiveSetting && item.IsChecked) { response = service.ArchivePaperDoc(item.MemberId, fileAccessToken, item.PaperId); if (response.StatusCode == HttpStatusCode.OK) { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Archived Paper doc [" + item.PaperName + "]")); }, null); } } else { errorMessage = ErrorMessages.FAILED_TO_DELETE_PAPER; } } if (view.PermanentSetting && item.IsChecked) { responsePerm = servicePerm.PermDeletePaperDoc(item.MemberId, fileAccessToken, item.PaperId); if (responsePerm.StatusCode == HttpStatusCode.OK) { if (SyncContext != null) { SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Permanently deleted Paper doc [" + item.PaperName + "]")); }, null); } } else { errorMessage = ErrorMessages.FAILED_TO_DELETE_PAPER; } } } } catch (Exception) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(ErrorMessages.FAILED_TO_DELETE_PAPER, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return(errorMessage); }
public PaperPresenter(IPaperModel model, IPaperView view) : base(model, view) { }