Пример #1
0
        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);
        }
Пример #2
0
        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
                );
        }
Пример #3
0
 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;
     }
 }
Пример #4
0
 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;
     }
 }
Пример #5
0
        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);
        }
Пример #6
0
        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();
        }
Пример #7
0
        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();
        }
Пример #8
0
        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();
        }
Пример #9
0
        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);
        }
Пример #10
0
 public PaperPresenter(IPaperModel model, IPaperView view)
     : base(model, view)
 {
 }