private async void btnLoadBatchAsuntos_Click(object sender, RoutedEventArgs e)
        {
            try {
                List <Entidades.Asunto> lstToDistribute;
                if (!bllSelectedOnly)
                {
                    CheckLoadedUsersInAsunto();
                    lstToDistribute = lstAsuntoToAssign.ToList();
                }
                else
                {
                    isOneOperatorLoaded();
                    lstToDistribute = lstAsuntoToAssign.Where(asunto => asunto.Oper != null).ToList();
                }
                // Set sending time to current
                DateTime dtSendingTime = DateTime.Now;
                // On all filtered asuntos save sending date
                lstToDistribute.ForEach(asunto => asunto.SendingDate = dtSendingTime);
                // Generate a new logic asunto object
                Logica.Asunto      logAsunto      = new Logica.Asunto();
                Entidades.Operador currBackOffice = App.Current.Properties["user"] as Entidades.Operador;
                // Call for asunto distribution in batch
                await logAsunto.SentBatchAsuntoToOperators(currBackOffice, lstToDistribute);

                // Update balance with asuntos sented
                lstToDistribute.ForEach(asuntoToDeliver => currentBalanceFromOperators.Increment(asuntoToDeliver));
                currentBalanceFromOperators.UpdateAverage();
                // Refresh report of caller method
                (Owner as frmBackoffice).RefreshReportBalanceCurrentDay();
                Util.MsgBox.Error("Completado correctamente");
            }
            catch (Exception ex) {
                Except.Throw(ex);
            }
        }
Exemple #2
0
 private void newAsuntoFromService(List <Asunto> lstOfNewAsuntos)
 {
     try {
         // Get current user properties and save in a temporary variable
         Operador operatorCurrentlyLogeed = App.Current.Properties["user"] as Operador;
         // Compare all asuntos with operator to confirm if all are the same
         if (!lstOfNewAsuntos.TrueForAll(asunto => asunto.Oper.UserName == operatorCurrentlyLogeed.UserName))
         {
             string[] lstOfAsuntosCorrupted = lstOfNewAsuntos.FindAll(asunto => asunto.Oper.UserName != asunto.Oper.UserName).Select(asunto => asunto.Numero).ToArray();
             throw new Exception("Se ha encontrado que los siguientes asuntos no estaban destinados a vos: " + string.Join(", ", lstOfAsuntosCorrupted) + ". Informe al administrador");
         }
         // On all asuntos generate starting status
         lstOfNewAsuntos.ForEach(asunto => generateInitialStatusOfAsunto(asunto));
         // Generate new logic asunto object
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Save list of non duplicated asuntos in a new list
         List <Asunto> lstNonDuplicatedAsuntos = logAsunto.GetNonDuplicatedAsuntosFromList(lstOfNewAsuntos);
         // Select from the list only the asuntos non duplicated
         if (lstNonDuplicatedAsuntos.Count > 0)
         {
             // Procedd with add al filtered asuntos
             logAsunto.Add(lstNonDuplicatedAsuntos);
             // Show on UI layer reporting new asunto count
             NotifyUIOfNewAsunto(lstNonDuplicatedAsuntos.Count.ToString(), true);
         }
     } catch (Exception ex) {
         Except.Throw(ex);
     }
 }
Exemple #3
0
 private void btnEliminarAsuntoDiario_Click(object sender, RoutedEventArgs e)
 {
     // Consulta de eliminación
     if (Util.MsgBox.Consulta("¿Está seguro que desea eliminar el asunto " + (dgAsuntosDia.SelectedItem as Entidades.AsuntoDiario).Numero + "?") == true)
     {
         try
         {
             // Generamos un nuevo objeto lógica de asunto
             Logica.Asunto logAsunto = new Logica.Asunto();
             // Generamos la entidad a eliminar
             Entidades.Asunto entAsunto = new Entidades.Asunto()
             {
                 Numero = (dgAsuntosDia.SelectedItem as Entidades.AsuntoDiario).Numero,
                 Oper   = App.Current.Properties["user"] as Entidades.Operador
             };
             // Procesamos la entidad y la eliminamos
             logAsunto.Remove(entAsunto);
             // Cargamos los asuntos diarios nuevamente.
             CargarAsuntosDiarios();
             // Cargamos el listado general
             pagListadogeneral.ActualizarListado();
         }
         catch (Exception ex)
         {
             Util.MsgBox.Error("Ha ocurrido un error al intentar eliminar el asunto de la base : " + ex.Message);
         }
     }
 }
Exemple #4
0
 /// <summary>
 /// Controla si al hacer hacer click en modificar del menu contextual hay algún elemento seleccionado y elimina llegado el caso de confirmación
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void mniEliminarAsunto_Click(object sender, RoutedEventArgs e)
 {
     if (dgListadoGeneral.SelectedItem != null)
     {
         if (Util.MsgBox.Consulta("¿Estás seguro de que deseas eliminar el asunto " + (dgListadoGeneral.SelectedItem as DataRowView)["num_asunto"].ToString()) == true)
         {
             try
             {
                 // Generamos un objeto de lógica para procesar la solicitud de baja
                 Logica.Asunto logAsunto = new Logica.Asunto();
                 // Generamos un nueva entidad de asunto que será cargada con los datos requieridos para que la baja se procese
                 Entidades.Asunto entAsunto = new Entidades.Asunto()
                 {
                     Numero = (dgListadoGeneral.SelectedItem as DataRowView)["num_asunto"].ToString(),
                     Oper   = App.Current.Properties["user"] as Entidades.Operador
                 };
                 // Procesamos el pedido de baja utilizando el objeto de lógica
                 logAsunto.Remove(entAsunto);
                 // Informamos que la baja fue procesada
                 Util.MsgBox.Error("Se ha procesado la baja del asunto de manera correcta.");
                 // Recargamos el resumen de tickets mensuales
                 CargarResumenTicketsMensuales();
                 // Disponemos del objeto de ventana principal
                 frmMainFrame ventPrincip = App.Current.MainWindow as frmMainFrame;
                 // Actualizamos los asuntos diarios cargados
                 ventPrincip.CargarAsuntosDiarios();
             }
             catch (Exception ex)
             {
                 Util.MsgBox.Error("No se ha podido completar la baja del asunto : " + ex.Message);
             }
         }
     }
 }
Exemple #5
0
 /// <summary>
 /// Process a request from the service for new asunto
 /// </summary>
 /// <param name="a"></param>
 private void newAsuntoFromService(Asunto a)
 {
     try {
         // Generamos un objeto de logica para procesar el agregado de los asuntos
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Gestionamos una variable operador disponible para el método
         Operador operLogged = App.Current.Properties["user"] as Operador;
         // Si el operador al que era destino de este asunto no es el logueado, se lanza una excepción
         if (a.Oper.UserName != operLogged.UserName)
         {
             throw new Exception("Se ha recibido un asunto de un operador erroneo. Informar al administrador. Asunto: " + a.Numero + ". Operador: " + a.Oper.UserName);
         }
         // TODO : A modo de prueba inicial, el primer estado lo generamos en la capa de presentación. Esto debería ser generado en el servicio, para mantener fidelidad con el horario de entrada del asunto en bandeja
         generateInitialStatusOfAsunto(a);
         // Consultamos si el asunto en cuestion existe en la base de datos del operador
         if (!logAsunto.Exist(a))
         {
             // Si no existe, se agrega a la base de datos
             logAsunto.Add(a);
             // Actualizamos la capa de presentación y los casos diarios
             NotifyUIOfNewAsunto(a.Numero, false);
         }
     }
     catch (Exception ex) {
         Except.Throw(ex);
     }
 }
Exemple #6
0
 private void btnConfirm_Click(object sender, RoutedEventArgs e)
 {
     try {
         // Prepares new entity to travel to service
         Entidades.Asunto newAsunto = new Entidades.Asunto()
         {
             Numero                = txtAsuntoNumber.Text,
             DescripcionBreve      = txtShortDescription.Text,
             Oper                  = operatorToSent,
             isCreatedByBackoffice = true
         };
         // Generates a new logic asunto object
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Gets operator logged on application
         Entidades.Operador backofficeOperator = App.Current.Properties["user"] as Entidades.Operador;
         // Calls a sent method
         logAsunto.SentAsuntoToOperator(backofficeOperator, newAsunto);
         // Set property on public property
         confirmedNewAsunto = newAsunto;
         // Sets result to true
         DialogResult = true;
     }
     catch (Exception ex) {
         Except.Throw(ex);
     }
 }
Exemple #7
0
 private void txtNumAsunto_TextChanged(object sender, TextChangedEventArgs e)
 {
     // Si se comprueba que el número de asunto tiene el largo maximo del textbox (indica que esta completo)
     if (txtNumAsunto.Text.Length == txtNumAsunto.MaxLength && txtNumAsunto.IsEnabled)
     {
         // Comprobamos que ls validaciones sean correctas para poder avanzar con la consulta a la base de datos
         if (Validador.EsValido(txtNumAsunto))
         {
             try
             {
                 // Generamos un objeto de logica asunto para averiguar si el asunto está cargado
                 Logica.Asunto logAsunto = new Logica.Asunto();
                 // Generamos un asunto que contenga solo este número cargado
                 Entidades.Asunto entAsunto = new Entidades.Asunto()
                 {
                     Numero = txtNumAsunto.Text, Oper = App.Current.Properties["user"] as Entidades.Operador
                 };
                 // Ejecutamos la consulta a la base de datos con el valor del campo cargado
                 if (logAsunto.Exist(entAsunto))
                 {
                     if (Util.MsgBox.Consulta("El asunto " + txtNumAsunto.Text + " se encuentra cargado. ¿Deseas traer el asunto guardado?") == true)
                     {
                         // Traemos el asunto y todos sus campos en la página de asuntos.
                         GestionarModificacionAsunto(txtNumAsunto.Text);
                     }
                 }
             }
             catch (Exception ex)
             {
                 Util.MsgBox.Error("Ha ocurrido un error al traer la información de la base de datos: " + ex.Message);
             }
         }
     }
 }
Exemple #8
0
        private async void getAsuntosWithoutAssignation()
        {
            // On notification receipt, loads asuntos from service. Generate a new logic object
            Logica.Asunto logAsunto = new Logica.Asunto();
            // Gets from the logic object all asuntos
            lstAsuntosWithoutAssign = await logAsunto.GetUnassignedAsuntos();

            // Update total of asuntos pendientes
            await Dispatcher.BeginInvoke((Action)(() =>
            {
                txtTotalAsuntoWithoutAssign.Text = lstAsuntosWithoutAssign.Count.ToString();
            }));
        }
Exemple #9
0
 private void FiltrarListadoGeneral(object sender, TextChangedEventArgs e)
 {
     try
     {
         // Generamos un objeto de lógica disponible para utilzarlo en el procedimiento
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Traemos el listado de asuntos filtrado según el dato cargado en el TextBox
         CargarResumenTicketsMensuales(logAsunto.getFilteredByNumber(App.Current.Properties["user"] as Entidades.Operador, txtFiltroAsunto.Text).AsDataView());
     }
     catch (Exception ex)
     {
         Util.MsgBox.Error(ex.Message);
     }
 }
Exemple #10
0
 /// <summary>
 /// Carga el listado de asuntos diarios y actualiza el datagrid vinculado
 /// </summary>
 public void CargarAsuntosDiarios()
 {
     try
     {
         // Generamos un nuevo objeto de Logica Asunto
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Cargamos el ItemSource del dg Asuntos Diarios con la información recolectada de la base personal
         dgAsuntosDia.ItemsSource = logAsunto.getCurrentDayList(App.Current.Properties["user"] as Entidades.Operador);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
         //MsgBox.Error("Ha ocurrido un error al intentar traer los asuntos diarios: " + ex.Message);
     }
 }
        /// <summary>
        /// Utilizando los enlaces a lógica se realiza una consulta de años cargados en base de datos para que sean utilizados en los combos
        /// </summary>
        /// <returns></returns>
        public static List <int> CargarYear()
        {
            // Generamos un listado de años para procesar
            List <int> lstYears = new List <int>();

            // Generamos el objeto logica asunto para traer la información de la base de datos
            Logica.Asunto logAsunto = new Logica.Asunto();
            // Traemos el año minimo cargado en la base de datos
            int iYearMinimo = logAsunto.getMinYear();
            int iYearMaximo = logAsunto.getMaxYear();

            // Diferencia entre año maximo y minimo
            for (int i = 0; i <= iYearMaximo - iYearMinimo; i++)
            {
                // Agregamos el año al listado cargado
                lstYears.Add(iYearMinimo + i);
            }
            // Devolvemos el listado de años procesado
            return(lstYears);
        }
Exemple #12
0
 /// <summary>
 /// Modifica un asunto en el listado de asuntos
 /// </summary>
 /// <param name="entAsunto"></param>
 public void ModificarAsunto(Entidades.Asunto entAsunto)
 {
     try
     {
         // Generamos un objeto de lógica de asunto
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Modificamos el asunto procesado
         logAsunto.Modify(entAsunto);
         // Enviamos el mensaje de actualización
         Util.MsgBox.Error("Se ha actualizado un asunto de manera correcta.");
         // Actualizamos el listado de asuntos
         VentanaPadre.pagListadogeneral.ActualizarListado();
         // Actualizamos los asuntos diarios
         VentanaPadre.CargarAsuntosDiarios();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #13
0
 /// <summary>
 /// Carga un asunto en el listado de asuntos
 /// </summary>
 /// <param name="pEntAsunto"></param>
 public void CargarAsunto(Entidades.Asunto pEntAsunto)
 {
     try
     {
         // Generamos un objeto de logica asunto
         Logica.Asunto logAsunto = new Logica.Asunto();
         // Procesamos el pedido de alta
         logAsunto.Add(pEntAsunto);
         // Mostramos un mensaje de exito en solicitud
         Util.MsgBox.Error("Se ha cargado el asunto de manera correcta");
         // Actualizamos el listado de asuntos cargados
         VentanaPadre.pagListadogeneral.ActualizarListado();
         // Actualizamos el listado de asuntos diarios
         VentanaPadre.CargarAsuntosDiarios();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #14
0
 public void CargarResumenTicketsMensuales(DataView dvLoad = null)
 {
     try
     {
         if (dvLoad == null)
         {
             // Generamos un nuevo objeto logica de estado de asuntos
             Logica.Asunto logEAsunto = new Logica.Asunto();
             // Cargamos el DataView con la información recolectada desde la base de
             dvLoad = logEAsunto.GetByPeriod(_iMonth, _iYear, App.Current.Properties["user"] as Entidades.Operador).AsDataView();
         }
         dvListadoAsuntos = dvLoad;
         // A modo de ejemplo practico, se utiliza el periodo actual y el usuario presente
         dgListadoGeneral.ItemsSource = dvListadoAsuntos;
         // Reordenamos el DataGrid segun fecha
         dgListadoGeneral.ReordenarDatagrid(3);
     }
     catch (Exception ex)
     {
         Util.MsgBox.Error(ex.Message);
     }
 }
Exemple #15
0
 /// <summary>
 /// Interfaz abierta para poder recibir peticiones de modificación
 /// </summary>
 /// <param name="pSNumero"></param>
 public bool GestionarModificacionAsunto(String pSNumero)
 {
     try
     {
         // Si el procedimiento llega a completarse correctamente se procesa el descartado del asunto
         if (DescartarModificacionesAsunto())
         {
             HabilitarCampos();
             ModificandoAsunto = true;
             // Generamos un objeto lógica asunto para procesar la extraccion de información del asunto
             Logica.Asunto logAsunto = new Logica.Asunto();
             // Recuperamos la información del asunto y la almacenamos en la entidad
             entAsunto = new Entidades.Asunto()
             {
                 Numero = pSNumero,
                 Oper   = App.Current.Properties["user"] as Entidades.Operador
             };
             entAsunto = logAsunto.Get(entAsunto);
             // Cargamos los campos correspondientes
             CargarCamposAsunto(entAsunto);
             // Cargamos los datos correspondientes a la actuación si la entidad viene cargada
             if (entAsunto.Actuacion != null)
             {
                 VentanaPadre.pagActuacion.CargarActuacion(entAsunto.Actuacion);
             }
             // Devolvemos una respuesta positiva al proceso
             return(true);
         }
         return(false);
     }
     catch (Exception ex)
     {
         Util.MsgBox.Error("Ha ocurrido un error al intentar recuperar el asunto " + pSNumero + ". Detalle : " + ex.Message);
         return(false);
     }
 }