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