예제 #1
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);
        }
        async private static void saveInteraccionActual(InteraccionModel <InteraccionBusiness> interaccion)
        {
            bool            wasNew        = interaccion.IsNew; // Se resguarda el valor pq luego de guardar ya no es nueva.
            string          resultMsg     = string.Empty;
            MessageBoxImage resultMsgType = MessageBoxImage.Information;

            try
            {
                Enums.eSyncResult syncResult = await interaccion.SaveAndSync();

                switch (syncResult)
                {
                case Enums.eSyncResult.Pending:
                    resultMsg     = "Interacción nro. " + interaccion.IdInteraccion + " creada con éxito. \nPor favor ejecute la SINCRONIZACIÓN cuando esté conectado a internet.";
                    resultMsgType = MessageBoxImage.Warning;
                    break;

                case Enums.eSyncResult.Synchronized:
                    resultMsg = "La interacción nro. " + interaccion.IdInteraccion + " ha sido creada y sincronizada con éxito.";
                    break;
                }

                if (wasNew)
                {
                    App.Locator.MainViewModelStatic.AddInteraccionToLeftPanel((InteraccionModel)interaccion);
                    App.Locator.CalendarViewModelStatic.AddInteraccionToCalendar((InteraccionModel)interaccion);
                }
                ;

                CRMMessageBox.ShowSuccess(resultMsg, resultMsgType);

                // Mostrar la nueva interaccion creada.
                App.Locator.MainViewModelStatic.FechaSeleccionada = interaccion.FechaInicioPlanificada.Value;
                interaccion = null; // Clear ViewModel Interaccion
                NavigationHelper.NavigateHome();
            }
            catch (Exception ex)
            {
                App.CurrentLoggingContext.LogException(ex);

                Task.Factory.StartNew(() => { App.Locator.InteraccionViewModelStatic.ConfigureView(); });

                CRMMessageBox.ShowError("Error al guardar los datos de la interacción.");
            }
        }