/// <summary>
        /// This call requieres  ServiceLocator.Current.GetInstance<ILoggingContext>()
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="syncTask"></param>
        /// <returns></returns>
        async public virtual Task <Enums.eSyncResult> SaveAndSync(ISUPModel sender, Func <ISUPModel, Task <bool> > syncTask = null)
        {
            bool synchronized = false;

            sender.SaveAndSubmitPending();

            if (InternetConnection.IsOnline)
            {
                try
                {
                    if (syncTask == null)
                    {
                        synchronized = await new Func <ISUPModel, Task <bool> >(getDefaultSyncTask).Invoke(sender);
                    }
                    else
                    {
                        synchronized = await new Func <ISUPModel, Task <bool> >(syncTask).Invoke(sender);
                    }
                }
                catch (Exception ex)
                {
                    ServiceLocator.Current.GetInstance <ILoggingContext>().LogException(ex);
                }
            }

            return(synchronized ? Enums.eSyncResult.Synchronized : Enums.eSyncResult.Pending);
        }
示例#2
0
        public override async Task<Enums.eSyncResult> SaveAndSync(ISUPModel sender)
        {
            InteraccionModel<InteraccionBusiness> interaccion = sender as InteraccionModel<InteraccionBusiness>;
            Enums.eSyncResult syncResult = Enums.eSyncResult.Synchronized;

            LocalTransaction localTransaction = CRMMobileDesaDB.BeginTransaction();
            try
            {
                if (interaccion.Formulario_CodigoSAP != null)
                {
                    // Save formularios
                    guardarFormularios(interaccion);
                    guardarRelevamientos(interaccion);
                }
                // Save this and sync Transacciones
                syncResult = await base.SaveAndSync(sender, new Func<ISUPModel, Task<bool>>(syncTransacciones));

                localTransaction.Commit();
            }
            catch (Exception ex)
            {
                localTransaction.Rollback();
                throw ex;
            }
            return syncResult;
        }
示例#3
0
        public override async Task <Enums.eSyncResult> SaveAndSync(ISUPModel sender)
        {
            InteraccionModel <InteraccionBusiness> interaccion = sender as InteraccionModel <InteraccionBusiness>;

            Enums.eSyncResult syncResult = Enums.eSyncResult.Synchronized;

            LocalTransaction localTransaction = CRMMobileDesaDB.BeginTransaction();

            try
            {
                if (interaccion.Formulario_CodigoSAP != null)
                {
                    // Save formularios
                    guardarFormularios(interaccion);
                    guardarRelevamientos(interaccion);
                }
                // Save this and sync Transacciones
                syncResult = await base.SaveAndSync(sender, new Func <ISUPModel, Task <bool> >(syncTransacciones));

                localTransaction.Commit();
            }
            catch (Exception ex)
            {
                localTransaction.Rollback();
                throw ex;
            }
            return(syncResult);
        }
示例#4
0
        private string getEntitySyncGroup(ISUPModel sender)
        {
            MethodInfo syncGroupMethod = sender.GetType().GetMethod("GetSynchronizationGroup");
            if (syncGroupMethod == null) return null;

            ISynchronizationGroup syncGroup = (ISynchronizationGroup)syncGroupMethod.Invoke(this, null);
            if (syncGroup == null) return null;

            return syncGroup.Name;
        }
示例#5
0
 private Task<bool> getDefaultSyncTask(ISUPModel sender)
 {
     string syncGroup = getEntitySyncGroup(sender);
     if (syncGroup == null)
     {
         return new Task<bool>(() => { return false; });
     }
     else
     {
         return new Task<bool>(() =>
         {
             return ModelHelper.GetSUPContext().Sync(syncGroup);
         });
     }
 }
        private Task <bool> getDefaultSyncTask(ISUPModel sender)
        {
            string syncGroup = getEntitySyncGroup(sender);

            if (syncGroup == null)
            {
                return(new Task <bool>(() => { return false; }));
            }
            else
            {
                return(new Task <bool>(() =>
                {
                    return ModelHelper.GetSUPContext().Sync(syncGroup);
                }));
            }
        }
        private string getEntitySyncGroup(ISUPModel sender)
        {
            MethodInfo syncGroupMethod = sender.GetType().GetMethod("GetSynchronizationGroup");

            if (syncGroupMethod == null)
            {
                return(null);
            }

            ISynchronizationGroup syncGroup = (ISynchronizationGroup)syncGroupMethod.Invoke(this, null);

            if (syncGroup == null)
            {
                return(null);
            }

            return(syncGroup.Name);
        }
示例#8
0
        /// <summary>
        /// This call requieres  ServiceLocator.Current.GetInstance<ILoggingContext>()
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="syncTask"></param>
        /// <returns></returns>
        async public virtual Task<Enums.eSyncResult> SaveAndSync(ISUPModel sender, Func<ISUPModel, Task<bool>> syncTask = null )
        {
            bool synchronized = false;
            
            sender.SaveAndSubmitPending();            
            
            if (InternetConnection.IsOnline)
            {
                try
                {
                    if(syncTask == null)
                        synchronized = await new Func<ISUPModel, Task<bool>>(getDefaultSyncTask).Invoke(sender);
                    else
                        synchronized = await new Func<ISUPModel, Task<bool>>(syncTask).Invoke(sender);
                }
                catch (Exception ex)
                {
                    ServiceLocator.Current.GetInstance<ILoggingContext>().LogException(ex);
                }
            }

            return synchronized ? Enums.eSyncResult.Synchronized : Enums.eSyncResult.Pending;
        }
 /// <summary>
 /// This call requieres  ServiceLocator.Current.GetInstance<ILoggingContext>()
 /// </summary>
 /// <param name="sender"></param>
 /// <returns></returns>
 async public virtual Task <Enums.eSyncResult> SaveAndSync(ISUPModel sender)
 {
     return(await SaveAndSync(sender, null));
 }
示例#10
0
 private async Task<bool> syncTransacciones(ISUPModel sender)
 {
     App.Locator.SUPServiceStatic.SincronizarInteraccionesXInterlocutor(Session.RepresentanteComercialStatic.CodigoInterlocutor);
     return true;
 }
示例#11
0
 /// <summary>
 /// This call requieres  ServiceLocator.Current.GetInstance<ILoggingContext>()
 /// </summary>
 /// <param name="sender"></param>
 /// <returns></returns>
 async public virtual Task<Enums.eSyncResult> SaveAndSync(ISUPModel sender)
 {
     return await SaveAndSync(sender, null);
 }
示例#12
0
 private async Task <bool> syncTransacciones(ISUPModel sender)
 {
     App.Locator.SUPServiceStatic.SincronizarInteraccionesXInterlocutor(Session.RepresentanteComercialStatic.CodigoInterlocutor);
     return(true);
 }