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); } }
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); } }
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); } } }
/// <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); } } } }
/// <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); } }
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); } }
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); } } } }
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(); })); }
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); } }
/// <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); }
/// <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; } }
/// <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; } }
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); } }
/// <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); } }