예제 #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 protected static void Execute(InteraccionModel <InteraccionBusiness> interaccion)
        {
            _isExecuting = true;
            try
            {
                MessageBoxResult result = MessageBoxResult.No;

                if (InteraccionBusiness.InteraccionIsDirty(interaccion))
                {
                    result = CRMMessageBox.ShowAreYouSure("¿Desea descartar los cambios realizados?");
                }
                else
                {
                    result = MessageBoxResult.Yes;
                }

                if (result == System.Windows.MessageBoxResult.Yes)
                {
                    interaccion = null;
                    NavigationHelper.NavigateHome();
                }
            }
            catch (Exception ex)
            {
                App.CurrentLoggingContext.LogException(ex);
            }
            finally
            {
                _isExecuting = false;
            }
        }
예제 #3
0
        public void AddInteraccionToCalendar(InteraccionModel newObj)
        {
            /*
             * DispatcherHelper.UIDispatcher.InvokeAsync(() =>
             * {
             *  loadMonthData(newObj.Fecha);
             * });
             */

            string tipoInteraccionText = _tipoInteraccion[(int)newObj.TipoInteraccion.IdTipoInteraccion];

            Appointment appDia = (from a in AppointmentsMes
                                  where a.Subject == tipoInteraccionText &&
                                  a.Date.Year == newObj.FechaInicioPlanificada.Value.Year &&
                                  a.Date.DayOfYear == newObj.FechaInicioPlanificada.Value.DayOfYear
                                  select a).FirstOrDefault();

            // Si no existía ningúna cita en el día
            if (appDia == null)
            {
                // Se agrega la nueva cita
                addAppointment(newObj.FechaInicioPlanificada.Value, (int)newObj.TipoInteraccion.IdTipoInteraccion, 1);
            }
            else
            {
                // Se suma 1 a la cita actual
                appDia.Count = appDia.Count + 1;
            }
        }
예제 #4
0
        public static void EstadoInteraccion_OnChanged(InteraccionModel <InteraccionBusiness> interaccion)
        {
            if (interaccion.EstadoInteraccion_CodigoSAP != Constants.EstadoInteraccionCodigoSAP.CONCLUIDA)
            {
                return;
            }

            if (
                interaccion.Formulario_CodigoSAP == null
                ||
                (interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_COMERCIAL).ToString() &&
                 interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_COMERCIAL_RETAIL).ToString() &
                 interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_VISITA_RETAIL).ToString())
                )
            {
                cerrarInteraccion(interaccion);
                return;
            }

            // No se puede cambiar de estado si alguna respuesta es NO CUMPLE
            GenericList <RespuestaInteraccionFormulario> respuestasNoCumple = new GenericList <RespuestaInteraccionFormulario>();

            var respuestasFormularioCheck = interaccion.RespuestasInteraccionFormulario;

            foreach (var respuestaFormularioCheck in respuestasFormularioCheck)
            {
                if (respuestaFormularioCheck.Respuesta_CodigoSAP == null)
                {
                    respuestasNoCumple.Add(respuestaFormularioCheck.SUPEntity);
                }
                else
                {
                    Respuesta respuesta = Respuesta.FindByCodigoSAP(respuestaFormularioCheck.Respuesta_CodigoSAP);
                    if (respuesta.CodigoSAP.Trim() == Constants.RespuestaCodigoSAP.NO_CUMPLE)
                    {
                        respuestasNoCumple.Add(respuestaFormularioCheck.SUPEntity);
                    }
                }
            }

            if (respuestasNoCumple.Size() > 0)
            {
                // TODO: Terminar de mostrar la interaccion subsiguiente
                App.Locator.InteraccionSubsiguienteChildViewModelStatic.RespuestasNoCumple = respuestasNoCumple;
                InteraccionSubsiguienteChildView.Show();

                if (App.Locator.InteraccionSubsiguienteChildViewModelStatic.Result)
                {
                    cerrarInteraccion(interaccion);
                }
            }
            else
            {
                cerrarInteraccion(interaccion);
            }
        }
        protected static void Execute(DireccionEntregaModel dirEntrega)
        {
            Interaccion newInteraccion = new Interaccion();

            InteraccionBusiness.InitializeNewInteraccion(newInteraccion, Enums.eTipoInteraccion.TareaCliente, dirEntrega);
            App.Locator.InteraccionViewModelStatic.InteraccionActual = InteraccionModel <InteraccionBusiness> .Create(newInteraccion);

            MainViewModel.MainViewModelMsg.Send(new MainViewModel.MainViewModelMsg(MainViewModel.eMainViewModelMsg.CollapseLeftPanel));
            NavigationHelper.Navigate <InteraccionView>();
        }
        protected static void Execute()
        {
            Interaccion newInteraccion = new Interaccion();

            InteraccionBusiness.InitializeNewInteraccion(newInteraccion, Enums.eTipoInteraccion.TareaRRCC);
            App.Locator.InteraccionViewModelStatic.InteraccionActual = InteraccionModel <InteraccionBusiness> .Create(newInteraccion);

            var list = TipoInteraccion.FindAll();

            MainViewModel.MainViewModelMsg.Send(new MainViewModel.MainViewModelMsg(MainViewModel.eMainViewModelMsg.CollapseLeftPanel));
            NavigationHelper.Navigate <InteraccionView>();
        }
        public static void LoadRespuestas(InteraccionModel<InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario_CodigoSAP == null)
            {
                interaccion.RespuestasInteraccionFormulario = new RespuestaInteraccionFormularioModelCollection();
                return;
            }

            var preguntas = GetPreguntas(interaccion.Formulario);
            var respuestas = interaccion.RespuestasInteraccionFormulario;
            GenerarRespuestasPredeterminadasEnInteraccion(interaccion, respuestas, preguntas);
        }
예제 #8
0
        private static void GenerarRespuestasPredeterminadasEnInteraccion(
            InteraccionModel <InteraccionBusiness> interaccion,
            RespuestaInteraccionFormularioModelCollection respuestas,
            PreguntaFormularioModelCollection preguntas)
        {
            if (respuestas.Count != preguntas.Count)
            {
                if (respuestas.Count == 0)
                {
                    // Agrega todas las preguntas como respuestas predeterminadas
                    respuestas = new RespuestaInteraccionFormularioModelCollection();
                    foreach (var preg in preguntas)
                    {
                        respuestas.Add(new RespuestaInteraccionFormularioModel()
                        {
                            Interaccion        = (InteraccionModel)interaccion,
                            Pregunta_CodigoSAP = preg.Pregunta_CodigoSAP
                        });
                    }
                }
                else // Merge
                {
                    // Eliminar respuestas para las cuales no haya pregunta
                    for (int i = respuestas.Count - 1; i >= 0; i--)
                    {
                        RespuestaInteraccionFormularioModel rta = respuestas[i] as RespuestaInteraccionFormularioModel;
                        if (preguntas.Where((preg) => preg.Pregunta_CodigoSAP == rta.Pregunta_CodigoSAP).FirstOrDefault() == null)
                        {
                            respuestas.Remove(rta);
                        }
                    }

                    // Agregar respuestas que falten para cada pregunta
                    foreach (var preg in preguntas)
                    {
                        if (respuestas.Where((rta) => rta.Pregunta_CodigoSAP == preg.Pregunta_CodigoSAP).FirstOrDefault() == null)
                        {
                            respuestas.Add(new RespuestaInteraccionFormularioModel()
                            {
                                Interaccion        = (InteraccionModel)interaccion,
                                Pregunta_CodigoSAP = preg.Pregunta_CodigoSAP
                            });
                        }
                    }
                }
            }
            else
            {
                // Puede que la cuenta sea igual pero el contenido no.
                // Se asume que nunca va a suceder.
            }
            interaccion.RespuestasInteraccionFormulario = respuestas;
        }
예제 #9
0
        public static void LoadRespuestas(InteraccionModel <InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario_CodigoSAP == null)
            {
                interaccion.RespuestasInteraccionFormulario = new RespuestaInteraccionFormularioModelCollection();
                return;
            }

            var preguntas  = GetPreguntas(interaccion.Formulario);
            var respuestas = interaccion.RespuestasInteraccionFormulario;

            GenerarRespuestasPredeterminadasEnInteraccion(interaccion, respuestas, preguntas);
        }
예제 #10
0
 public static bool InteraccionIsDirty(InteraccionModel <InteraccionBusiness> interaccion)
 {
     return(interaccion.IsDirty ||
            (interaccion.Formulario != null && interaccion.Formulario.IsDirty) ||
            (interaccion.FormularioMercado != null && interaccion.FormularioMercado.IsDirty) ||
            (interaccion.FormularioPrecios != null && interaccion.FormularioPrecios.IsDirty) ||
            (interaccion.FormularioTransporte != null && interaccion.FormularioTransporte.IsDirty) ||
            (interaccion.RelevamientosTransporte != null) ||
            (interaccion.RelevamientosProveedor != null) ||
            (interaccion.RelevamientosProducto != null) ||
            (interaccion.RelevamientosPrecio != null) ||
            (interaccion.RespuestasInteraccionFormulario != null &&
             interaccion.RespuestasInteraccionFormulario.Where((o) => o.IsDirty).FirstOrDefault() != null));
 }
        protected static bool CanExecute(InteraccionModel <InteraccionBusiness> interaccion)
        {
            if (_isExecuting)
            {
                return(false);
            }

            bool canExecute = InteraccionBusiness.InteraccionIsDirty(interaccion);

            if (!canExecute)
            {
                return(false);
            }

            // Validates all properties
            return(interaccion.ValidateSync());
        }
        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.");
            }
        }
예제 #13
0
        public static void EstadoInteraccion_OnChanged(InteraccionModel<InteraccionBusiness> interaccion)
        {
            if (interaccion.EstadoInteraccion_CodigoSAP != Constants.EstadoInteraccionCodigoSAP.CONCLUIDA)
                return;

            if (
                interaccion.Formulario_CodigoSAP == null
                ||
                (interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_COMERCIAL).ToString() &&
                interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_COMERCIAL_RETAIL).ToString() &
                interaccion.Formulario_CodigoSAP != ((int)Enums.eFormulario.CHECK_VISITA_RETAIL).ToString())
                )
            {
                cerrarInteraccion(interaccion);
                return;
            }

            // No se puede cambiar de estado si alguna respuesta es NO CUMPLE
            GenericList<RespuestaInteraccionFormulario> respuestasNoCumple = new GenericList<RespuestaInteraccionFormulario>();

            var respuestasFormularioCheck = interaccion.RespuestasInteraccionFormulario;
            foreach (var respuestaFormularioCheck in respuestasFormularioCheck)
            {
                if (respuestaFormularioCheck.Respuesta_CodigoSAP == null)
                    respuestasNoCumple.Add(respuestaFormularioCheck.SUPEntity);
                else
                {
                    Respuesta respuesta = Respuesta.FindByCodigoSAP(respuestaFormularioCheck.Respuesta_CodigoSAP);
                    if (respuesta.CodigoSAP.Trim() == Constants.RespuestaCodigoSAP.NO_CUMPLE)
                        respuestasNoCumple.Add(respuestaFormularioCheck.SUPEntity);
                }
            }

            if (respuestasNoCumple.Size() > 0)
            {
                // TODO: Terminar de mostrar la interaccion subsiguiente
                App.Locator.InteraccionSubsiguienteChildViewModelStatic.RespuestasNoCumple = respuestasNoCumple;
                InteraccionSubsiguienteChildView.Show();

                if (App.Locator.InteraccionSubsiguienteChildViewModelStatic.Result)
                    cerrarInteraccion(interaccion);
            }
            else
                cerrarInteraccion(interaccion);
        }
 async protected static void Execute(InteraccionModel <InteraccionBusiness> interaccion)
 {
     _isExecuting = true;
     //this.RaiseCanExecuteChanged();
     try
     {
         saveInteraccionActual(interaccion);
     }
     catch (Exception ex)
     {
         App.CurrentLoggingContext.LogException(ex);
     }
     finally
     {
         _isExecuting = false;
         //InteraccionSaveCommand.RaiseCanExecuteChanged();
     }
 }
예제 #15
0
        async protected static void Execute(InteraccionModel <InteraccionBusiness> interaccion)
        {
            _isExecuting = true;
            try
            {
                string caption = "Acceso a la edición del formulario";

                if (interaccion.Motivo == null || interaccion.Negocio == null)
                {
                    string msg = "Para proceder a completar el formulario,\r\ndebe seleccionar un motivo y negocio (negocio por segmento).";
                    CRMMessageBox.Show(msg, caption, MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }


                FormularioModel frm = InteraccionBusiness.GetFormularioXSeleccion(interaccion.Motivo, interaccion.Negocio);

                if (frm == null)
                {
                    string msg = "El grupo de motivo, segmento y negocio seleccionado\r\nno posee formulario asociado.";
                    CRMMessageBox.Show(msg, caption, MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }

                // Es formulario nuevo?
                if (interaccion.Formulario_CodigoSAP == null || interaccion.Formulario_CodigoSAP != frm.CodigoSAP)
                {
                    // Set el nuevo formulario
                    interaccion.Formulario = frm;
                }

                App.Locator.FormularioViewModelStatic.FormularioActual = FormularioModel <FormularioCheckListBusiness> .Create(interaccion.Formulario);

                NavigationHelper.Navigate <FormularioView>();
            }
            catch (Exception ex)
            {
                App.CurrentLoggingContext.LogException(ex);
            }
            finally
            {
                _isExecuting = false;
            }
        }
예제 #16
0
        public void RemoveInteraccionFromLeftPanel(InteraccionModel interaccionModel)
        {
            switch ((Enums.eTipoInteraccion)interaccionModel.TipoInteraccion.IdTipoInteraccion)
            {
            case Enums.eTipoInteraccion.VisitaRRCC:
                Visitas.Remove(Visitas.Where((v) => v.IdInteraccion == interaccionModel.IdInteraccion).FirstOrDefault());
                break;

            case Enums.eTipoInteraccion.TareaRRCC:
                TareasRRCC.Remove(TareasRRCC.Where((v) => v.IdInteraccion == interaccionModel.IdInteraccion).FirstOrDefault());
                break;

            case Enums.eTipoInteraccion.TareaCliente:
                TareasCliente.Remove(TareasCliente.Where((v) => v.IdInteraccion == interaccionModel.IdInteraccion).FirstOrDefault());
                break;

            default:
                break;
            }
        }
예제 #17
0
        public void AddInteraccionToLeftPanel(InteraccionModel interaccionModel)
        {
            switch ((Enums.eTipoInteraccion)interaccionModel.TipoInteraccion.IdTipoInteraccion)
            {
            case Enums.eTipoInteraccion.VisitaRRCC:
                Visitas.Add(interaccionModel);
                break;

            case Enums.eTipoInteraccion.TareaRRCC:
                TareasRRCC.Add(interaccionModel);
                break;

            case Enums.eTipoInteraccion.TareaCliente:
                TareasCliente.Add(interaccionModel);
                break;

            default:
                break;
            }
        }
예제 #18
0
        private void guardarFormularios(InteraccionModel <InteraccionBusiness> interaccion)
        {
            switch ((Enums.eFormulario) int.Parse(interaccion.Formulario_CodigoSAP))
            {
            case Enums.eFormulario.CHECK_COMERCIAL:
            case Enums.eFormulario.CHECK_COMERCIAL_RETAIL:
            case Enums.eFormulario.CHECK_VISITA_RETAIL:
            case Enums.eFormulario.CHECK_VISITA_ESPECIALISTA:
            case Enums.eFormulario.CHECK_VISITA_INTEGRAL:
            case Enums.eFormulario.PLAN_VENTA:
                FormularioCheckListBusiness.Save(interaccion);
                break;

            case Enums.eFormulario.MERCADO:
                if (interaccion.FormularioMercado != null)
                {
                    ;
                }
                interaccion.FormularioMercado.Save();
                break;

            case Enums.eFormulario.PRECIOS:
                if (interaccion.FormularioPrecios != null)
                {
                    return;
                }
                interaccion.FormularioPrecios.Save();
                break;

            case Enums.eFormulario.TRANSPORTE:
                if (interaccion.FormularioTransporte != null)
                {
                    return;
                }
                interaccion.FormularioTransporte.Save();
                break;

            default:
                break;
            }
        }
예제 #19
0
        public void RemoveInteraccionFromCalendar(InteraccionModel interaccionModel)
        {
            string tipoInteraccionText = _tipoInteraccion[(int)InteraccionBusiness.GetTipoInteraccion(interaccionModel.SUPEntity)];

            Appointment appDia = (from a in AppointmentsMes
                                  where a.Subject == tipoInteraccionText &&
                                  a.Date.Year == interaccionModel.FechaInicioPlanificada.Value.Year &&
                                  a.Date.DayOfYear == interaccionModel.FechaInicioPlanificada.Value.DayOfYear
                                  select a).FirstOrDefault();

            // Si no existía ningúna cita en el día
            if (appDia == null)
            {
                return;
            }
            else
            {
                // Se suma 1 a la cita actual
                appDia.Count = appDia.Count - 1;
            }
        }
예제 #20
0
        public static void Save(InteraccionModel <InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario == null)
            {
                return;
            }
            interaccion.Formulario.Save();

            if (interaccion.RespuestasInteraccionFormulario == null)
            {
                return;
            }

            foreach (var respuestaInteraccion in interaccion.RespuestasInteraccionFormulario)
            {
                respuestaInteraccion.Save();
            }

            if (!interaccion.Formulario.CalculaPuntuacion)
            {
                interaccion.Puntaje = 0; // Evita guardar algún valor que no corresponde
            }
        }
예제 #21
0
        private static void cerrarInteraccion(InteraccionModel <InteraccionBusiness> interaccion)
        {
            try
            {
                interaccion.EstadoInteraccion_CodigoSAP = Constants.EstadoInteraccionCodigoSAP.CONCLUIDA;
                interaccion.FechaInicioReal             = ModelHelper.DateTime_ToDate(DateTime.Now);
                interaccion.HoraInicioReal = ModelHelper.DateTime_ToTime(DateTime.Now);
                interaccion.FechaFinReal   = ModelHelper.DateTime_ToDate(DateTime.Now);
                interaccion.HoraFinReal    = ModelHelper.DateTime_ToTime(DateTime.Now);

                interaccion.Update();

                CRMMessageBox.ShowSuccess("La interaccion ha sido cerrada.");
                App.Locator.SUPServiceStatic.SincronizarInteraccionesXInterlocutorActual();

                NavigationHelper.NavigateHome();
            }
            catch (Exception ex)
            {
                App.CurrentLoggingContext.LogException(ex);
                throw;
            }
        }
예제 #22
0
 public static bool InteraccionIsDirty(InteraccionModel<InteraccionBusiness> interaccion)
 {
     return interaccion.IsDirty ||
                 (interaccion.Formulario != null && interaccion.Formulario.IsDirty) ||
                 (interaccion.FormularioMercado != null && interaccion.FormularioMercado.IsDirty) ||
                 (interaccion.FormularioPrecios != null && interaccion.FormularioPrecios.IsDirty) ||
                 (interaccion.FormularioTransporte != null && interaccion.FormularioTransporte.IsDirty) ||
                 (interaccion.RelevamientosTransporte != null) ||
                 (interaccion.RelevamientosProveedor != null) ||
                 (interaccion.RelevamientosProducto != null) ||
                 (interaccion.RelevamientosPrecio != null) ||
                 (interaccion.RespuestasInteraccionFormulario != null &&
                     interaccion.RespuestasInteraccionFormulario.Where((o) => o.IsDirty).FirstOrDefault() != null);
 }
예제 #23
0
        private void guardarRelevamientos(InteraccionModel<InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario.SeleccionTablasRelevamiento == null ||
                interaccion.Formulario.SeleccionTablasRelevamiento.Count == 0)
                return;

            foreach (var tblRelevamiento in interaccion.Formulario.SeleccionTablasRelevamiento)
            {
                switch ((Enums.eTablaRelevamiento)tblRelevamiento.IdTablaRelevamiento)
                {
                    case Enums.eTablaRelevamiento.TRANSPORTE:
                        foreach (var item in interaccion.RelevamientosTransporte.RemovedItems)
                        {
                            item.Interaccion = null; // Importante para eliminar la relacion
                            item.Save();
                        }
                        foreach (var item in interaccion.RelevamientosTransporte)
                        {
                            item.Save();
                        }
                        break;
                    case Enums.eTablaRelevamiento.PRECIOS:
                        foreach (var item in interaccion.RelevamientosPrecio.RemovedItems)
                        {
                            item.Interaccion = null; // Importante para eliminar la relacion
                            item.Save();
                        }
                        foreach (var item in interaccion.RelevamientosPrecio)
                        {
                            item.Save();
                        }
                        break;
                    case Enums.eTablaRelevamiento.PRODUCTO:
                        foreach (var item in interaccion.RelevamientosProducto.RemovedItems)
                        {
                            item.Interaccion = null; // Importante para eliminar la relacion
                            item.Save();
                        }
                        foreach (var item in interaccion.RelevamientosProducto)
                        {
                            item.Save();
                        }
                        break;
                    case Enums.eTablaRelevamiento.PROVEEDOR:
                        foreach (var item in interaccion.RelevamientosProveedor.RemovedItems)
                        {
                            item.Interaccion = null; // Importante para eliminar la relacion
                            item.Save();
                        }
                        foreach (var item in interaccion.RelevamientosProveedor)
                        {
                            item.Save();
                        }
                        break;
                    default:
                        break;
                }
            }
        }
예제 #24
0
        private void guardarRelevamientos(InteraccionModel <InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario.SeleccionTablasRelevamiento == null ||
                interaccion.Formulario.SeleccionTablasRelevamiento.Count == 0)
            {
                return;
            }

            foreach (var tblRelevamiento in interaccion.Formulario.SeleccionTablasRelevamiento)
            {
                switch ((Enums.eTablaRelevamiento)tblRelevamiento.IdTablaRelevamiento)
                {
                case Enums.eTablaRelevamiento.TRANSPORTE:
                    foreach (var item in interaccion.RelevamientosTransporte.RemovedItems)
                    {
                        item.Interaccion = null;     // Importante para eliminar la relacion
                        item.Save();
                    }
                    foreach (var item in interaccion.RelevamientosTransporte)
                    {
                        item.Save();
                    }
                    break;

                case Enums.eTablaRelevamiento.PRECIOS:
                    foreach (var item in interaccion.RelevamientosPrecio.RemovedItems)
                    {
                        item.Interaccion = null;     // Importante para eliminar la relacion
                        item.Save();
                    }
                    foreach (var item in interaccion.RelevamientosPrecio)
                    {
                        item.Save();
                    }
                    break;

                case Enums.eTablaRelevamiento.PRODUCTO:
                    foreach (var item in interaccion.RelevamientosProducto.RemovedItems)
                    {
                        item.Interaccion = null;     // Importante para eliminar la relacion
                        item.Save();
                    }
                    foreach (var item in interaccion.RelevamientosProducto)
                    {
                        item.Save();
                    }
                    break;

                case Enums.eTablaRelevamiento.PROVEEDOR:
                    foreach (var item in interaccion.RelevamientosProveedor.RemovedItems)
                    {
                        item.Interaccion = null;     // Importante para eliminar la relacion
                        item.Save();
                    }
                    foreach (var item in interaccion.RelevamientosProveedor)
                    {
                        item.Save();
                    }
                    break;

                default:
                    break;
                }
            }
        }
 public void AddInteraccionToCalendar(InteraccionModel newObj)
 {
     throw new NotImplementedException();
 }
 public void RemoveInteraccionFromCalendar(InteraccionModel interaccionModel)
 {
     throw new NotImplementedException();
 }
예제 #27
0
 public void AddInteraccionToCalendar(InteraccionModel newObj)
 {
     throw new NotImplementedException();
 }
예제 #28
0
 public void RemoveInteraccionFromCalendar(InteraccionModel interaccionModel)
 {
     throw new NotImplementedException();
 }
        public static void Save(InteraccionModel<InteraccionBusiness> interaccion)
        {
            if (interaccion.Formulario == null) return;
            interaccion.Formulario.Save();

            if (interaccion.RespuestasInteraccionFormulario == null) return;

            foreach (var respuestaInteraccion in interaccion.RespuestasInteraccionFormulario)
            {
                respuestaInteraccion.Save();
            }

            if (!interaccion.Formulario.CalculaPuntuacion)
                interaccion.Puntaje = 0; // Evita guardar algún valor que no corresponde
        }
        private static void GenerarRespuestasPredeterminadasEnInteraccion(
            InteraccionModel<InteraccionBusiness> interaccion,
            RespuestaInteraccionFormularioModelCollection respuestas,
            PreguntaFormularioModelCollection preguntas)
        {
            if (respuestas.Count != preguntas.Count)
            {
                if (respuestas.Count == 0)
                {
                    // Agrega todas las preguntas como respuestas predeterminadas
                    respuestas = new RespuestaInteraccionFormularioModelCollection();
                    foreach (var preg in preguntas)
                    {
                        respuestas.Add(new RespuestaInteraccionFormularioModel()
                        {
                            Interaccion = (InteraccionModel)interaccion,
                            Pregunta_CodigoSAP = preg.Pregunta_CodigoSAP
                        });
                    }
                }
                else // Merge
                {
                    // Eliminar respuestas para las cuales no haya pregunta
                    for (int i = respuestas.Count - 1; i >= 0; i--)
                    {
                        RespuestaInteraccionFormularioModel rta = respuestas[i] as RespuestaInteraccionFormularioModel;
                        if (preguntas.Where((preg) => preg.Pregunta_CodigoSAP == rta.Pregunta_CodigoSAP).FirstOrDefault() == null)
                        {
                            respuestas.Remove(rta);
                        }
                    }

                    // Agregar respuestas que falten para cada pregunta
                    foreach (var preg in preguntas)
                    {
                        if (respuestas.Where((rta) => rta.Pregunta_CodigoSAP == preg.Pregunta_CodigoSAP).FirstOrDefault() == null)
                        {
                            respuestas.Add(new RespuestaInteraccionFormularioModel()
                            {
                                Interaccion = (InteraccionModel)interaccion,
                                Pregunta_CodigoSAP = preg.Pregunta_CodigoSAP
                            });
                        }
                    }
                }
            }
            else
            {
                // Puede que la cuenta sea igual pero el contenido no.
                // Se asume que nunca va a suceder.
            }
            interaccion.RespuestasInteraccionFormulario = respuestas;
        }
예제 #31
0
 private void guardarFormularios(InteraccionModel<InteraccionBusiness> interaccion)
 {
     switch ((Enums.eFormulario)int.Parse( interaccion.Formulario_CodigoSAP))
     {
         case Enums.eFormulario.CHECK_COMERCIAL:
         case Enums.eFormulario.CHECK_COMERCIAL_RETAIL:
         case Enums.eFormulario.CHECK_VISITA_RETAIL:
         case Enums.eFormulario.CHECK_VISITA_ESPECIALISTA:
         case Enums.eFormulario.CHECK_VISITA_INTEGRAL:
         case Enums.eFormulario.PLAN_VENTA:
             FormularioCheckListBusiness.Save(interaccion);
             break;
         case Enums.eFormulario.MERCADO:
             if (interaccion.FormularioMercado != null) ;
             interaccion.FormularioMercado.Save();
             break;
         case Enums.eFormulario.PRECIOS:
             if (interaccion.FormularioPrecios != null) return;
             interaccion.FormularioPrecios.Save();
             break;
         case Enums.eFormulario.TRANSPORTE:
             if (interaccion.FormularioTransporte != null) return;
             interaccion.FormularioTransporte.Save();
             break;
         default:
             break;
     }
 }
예제 #32
0
 protected static bool CanExecute(InteraccionModel <InteraccionBusiness> interaccion)
 {
     return(true);
 }
예제 #33
0
        private static void cerrarInteraccion(InteraccionModel<InteraccionBusiness> interaccion)
        {
            try
            {
                interaccion.EstadoInteraccion_CodigoSAP = Constants.EstadoInteraccionCodigoSAP.CONCLUIDA;
                interaccion.FechaInicioReal = ModelHelper.DateTime_ToDate(DateTime.Now);
                interaccion.HoraInicioReal = ModelHelper.DateTime_ToTime(DateTime.Now);
                interaccion.FechaFinReal = ModelHelper.DateTime_ToDate(DateTime.Now);
                interaccion.HoraFinReal = ModelHelper.DateTime_ToTime(DateTime.Now);
		
                interaccion.Update();

                CRMMessageBox.ShowSuccess("La interaccion ha sido cerrada.");
                App.Locator.SUPServiceStatic.SincronizarInteraccionesXInterlocutorActual();

                NavigationHelper.NavigateHome();
            }
            catch (Exception ex)
            {
                App.CurrentLoggingContext.LogException(ex);
                throw;
            }
        }