public static void Process(EMailAccountSyncFilter filter, List <EMailSyncAccount> accounts, Object uid, string screenid)
        {
            //Check that process is singleton
            foreach (RowTaskInfo info in PXLongOperation.GetTaskList())
            {
                if (Object.Equals(uid, info.NativeKey))
                {
                    continue;
                }

                PXLongRunStatus status = PXLongOperation.GetStatus(info.NativeKey);
                if (status != PXLongRunStatus.InProcess)
                {
                    continue;
                }

                string company = PXLogin.ExtractCompany(info.User);
                string screen  = (info.Screen ?? String.Empty).Replace(".", "");
                if (screen == screenid && company == PXAccess.GetCompanyName())
                {
                    throw new PXException(ErrorMessages.PrevOperationNotCompleteYet);
                }
            }

            EmailsSyncMaint graph = CreateInstance <EmailsSyncMaint>();

            using (new PXUTCTimeZoneScope())
            {
                graph.ProcessInternal(new ProcessingContext(filter, accounts, graph.GetPolicies()));
            }
        }
        public EmailsSyncMaint()
        {
            Object uid      = this.UID;
            string screenid = PXSiteMap.CurrentScreenID;
            EMailAccountSyncFilter currentFilter = Filter.Current;

            SelectedItems.SetProcessDelegate(delegate(List <EMailSyncAccount> accounts) { Process(currentFilter, accounts, uid, screenid); });

            SelectedItems.SetProcessCaption(ActionsMessages.Process);
            SelectedItems.SetProcessAllCaption(ActionsMessages.ProcessAll);
            SelectedItems.SetSelected <EMailSyncAccount.selected>();

            OperationLog.AllowInsert = false;
            OperationLog.AllowUpdate = false;
            OperationLog.AllowDelete = false;

            PXUIFieldAttribute.SetEnabled(CurrentItem.Cache, null, true);

            ResetContacts.SetEnabled(false);
            ResetTasks.SetEnabled(false);
            ResetEvents.SetEnabled(false);
            ResetEmails.SetEnabled(false);

            this.FieldVerifying.AddHandler(typeof(EMailSyncAccount), typeof(EMailSyncAccount.contactsExportDate).Name + "_Date",
                                           EMailSyncAccount_ContactsExportDate_FieldVerifying);

            this.FieldVerifying.AddHandler(typeof(EMailSyncAccount), typeof(EMailSyncAccount.tasksExportDate).Name + "_Date",
                                           EMailSyncAccount_TasksExportDate_FieldVerifying);

            this.FieldVerifying.AddHandler(typeof(EMailSyncAccount), typeof(EMailSyncAccount.eventsExportDate).Name + "_Date",
                                           EMailSyncAccount_EventsExportDate_FieldVerifying);

            this.FieldVerifying.AddHandler(typeof(EMailSyncAccount), typeof(EMailSyncAccount.emailsExportDate).Name + "_Date",
                                           EMailSyncAccount_EmailsExportDate_FieldVerifying);
        }
 public ProcessingContext(EMailAccountSyncFilter filter, List <EMailSyncAccount> accounts, Dictionary <string, EMailSyncPolicy> policies)
 {
     Filter     = filter;
     Accounts   = accounts;
     Policies   = policies;
     Exceptions = new Dictionary <int, List <string> >();
 }
        protected virtual IEnumerable selectedItems()
        {
            EMailAccountSyncFilter filter = Filter.Current;

            BqlCommand cmd = SelectedItems.View.BqlSelect;

            if (filter != null && filter.ServerID != null)
            {
                cmd = cmd.WhereAnd <Where <EMailSyncAccount.serverID, Equal <Current <EMailAccountSyncFilter.serverID> > > >();
            }
            if (filter != null && !String.IsNullOrEmpty(filter.PolicyName))
            {
                cmd = cmd.WhereAnd <Where <EMailSyncAccount.policyName, Equal <Current <EMailAccountSyncFilter.policyName> > > >();
            }

            int    totalRows = 0;
            int    startRow  = PXView.StartRow;
            PXView view      = new PXView(this, false, cmd); view.Clear( );

            foreach (PXResult <EMailSyncAccount, EMailSyncServer, EPEmployee, Contact> item in
                     view.Select(PXView.Currents, PXView.Parameters, PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows))
            {
                Contact          contact = item;
                EMailSyncAccount account = item;
                account.Address = (contact != null ? contact.EMail : null) ?? account.Address;

                //SelectedItems.Cache.SetStatus(account, PXEntryStatus.Notchanged);

                yield return(item);
            }
        }
Esempio n. 5
0
        protected IEnumerable reset(PXAdapter adapter)
        {
            EMailAccountSyncFilter filter  = Filter.Current;
            EMailSyncAccount       account = SelectedItems.Current;

            if (filter == null || account == null)
            {
                return(adapter.Get());
            }


            EMailSyncAccount accountCopy = (EMailSyncAccount)SelectedItems.Cache.CreateCopy(account);

            accountCopy.ContactsExportDate   = null;
            accountCopy.ContactsExportFolder = null;
            accountCopy.ContactsImportDate   = null;
            accountCopy.ContactsImportFolder = null;

            accountCopy.EmailsExportDate   = null;
            accountCopy.EmailsExportFolder = null;
            accountCopy.EmailsImportDate   = null;
            accountCopy.EmailsImportFolder = null;

            accountCopy.EventsExportDate   = null;
            accountCopy.EventsExportFolder = null;
            accountCopy.EventsImportDate   = null;
            accountCopy.EventsImportFolder = null;

            accountCopy.TasksExportDate   = null;
            accountCopy.TasksExportFolder = null;
            accountCopy.TasksImportDate   = null;
            accountCopy.TasksImportFolder = null;

            PXCache cache = this.Caches[typeof(EMailSyncAccount)];

            cache.Update(accountCopy);
            cache.Persist(PXDBOperation.Update);


            SelectedItems.Cache.ClearQueryCache();
            SelectedItems.View.Clear();
            SelectedItems.Cache.Clear();

            CurrentItem.View.RequestRefresh();
            SelectedItems.View.RequestRefresh();

            return(adapter.Get());
        }
Esempio n. 6
0
        public EmailsSyncMaint()
        {
            Object uid      = this.UID;
            string screenid = PXSiteMap.CurrentScreenID;
            EMailAccountSyncFilter currentFilter = Filter.Current;

            SelectedItems.SetProcessDelegate(delegate(List <EMailSyncAccount> accounts) { Process(currentFilter, accounts, uid, screenid); });

            SelectedItems.SetProcessCaption(ActionsMessages.Process);
            SelectedItems.SetProcessAllCaption(ActionsMessages.ProcessAll);
            SelectedItems.SetSelected <EMailSyncAccount.selected>();

            OperationLog.AllowInsert = false;
            OperationLog.AllowUpdate = false;
            OperationLog.AllowDelete = false;
        }
        protected IEnumerable clearLog(PXAdapter adapter)
        {
            EMailAccountSyncFilter filter  = Filter.Current;
            EMailSyncAccount       account = SelectedItems.Current;

            if (filter == null || account == null)
            {
                return(adapter.Get());
            }


            PXDatabase.Delete <EMailSyncLog>(
                new PXDataFieldRestrict <EMailSyncLog.address>(account.Address),
                new PXDataFieldRestrict <EMailSyncLog.serverID>(account.ServerID));

            OperationLog.View.RequestRefresh();
            OperationLog.View.Clear();

            return(adapter.Get());
        }
        protected IEnumerable resetWarning(PXAdapter adapter)
        {
            EMailAccountSyncFilter filter  = Filter.Current;
            EMailSyncAccount       account = SelectedItems.Current;

            if (filter == null || account == null)
            {
                return(adapter.Get());
            }


            PXDatabase.Update <EMailSyncAccount>(
                new PXDataFieldAssign <EMailSyncAccount.hasErrors>(false),
                new PXDataFieldRestrict <EMailSyncAccount.serverID>(account.ServerID),
                new PXDataFieldRestrict <EMailSyncAccount.employeeID>(account.EmployeeID));

            SelectedItems.View.RequestRefresh();
            SelectedItems.View.Clear();

            return(adapter.Get());
        }
        protected IEnumerable resetTasks(PXAdapter adapter)
        {
            EMailAccountSyncFilter filter  = Filter.Current;
            EMailSyncAccount       account = CurrentItem.Current;

            if (filter == null || account == null)
            {
                return(adapter.Get());
            }

            PXLongOperation.StartOperation(this, delegate()
            {
                foreach (var result in TasksReferences
                         .Select(account.TasksExportDate ?? new DateTime(1900, 1, 1))
                         .RowCast <EMailSyncReference>())
                {
                    Caches[typeof(EMailSyncReference)].Delete(result);
                }
                Caches[typeof(EMailSyncReference)].Persist(PXDBOperation.Delete);

                EMailSyncAccount accountCopy = (EMailSyncAccount)CurrentItem.Cache.CreateCopy(account);

                ToDefault(accountCopy);

                accountCopy.TasksExportDate   = account.TasksExportDate;
                accountCopy.TasksExportFolder = null;
                accountCopy.TasksImportDate   = account.TasksImportDate;
                accountCopy.TasksImportFolder = null;
                accountCopy.IsReset           = true;

                Caches[typeof(EMailSyncAccount)].Update(accountCopy);
                Caches[typeof(EMailSyncAccount)].Persist(PXDBOperation.Update);
            });

            ClearViews();

            return(adapter.Get());
        }