static bool LoginAdministrador(IMessageHandling proxy) { var loginCmd = new LoginCommand { UserName = "******", Password = "******", }; var status = proxy.Handle(loginCmd); bool Success = status.GetType() == typeof(Success); if (Success) { Console.WriteLine("Login Aceptado."); // Leer User Role var URquery = new UserRoleQuery(loginCmd.UserName); var result = proxy.Handle(URquery); Console.WriteLine(string.Format(" UserID: {0} Nombre: {1} Rol: {2}", result.UserID, result.UserName, result.UserRole)); // Guardar UserId para Lectura de datos _userID = result.UserID; return(true); } else { Console.WriteLine(string.Format("Login Denegado. Mensaje: {0}", (status as Failure).Errormessage)); return(false); } }
private T HandleAndSaveChanges(IEvent incomingEvent, IMessageHandling handling) { T eventSourced = handling.Handle.Invoke() as T; this.store.Save(eventSourced, incomingEvent); return(eventSourced); }
private void HandleAndSaveChanges(IEvent incomingEvent, IMessageHandling handling) { var eventSourced = handling.Handle.Invoke(); var version = this.store.Save((TEventSourced)eventSourced, incomingEvent); this.bus.Publish(new EventStoreHasBeenUpdated(version)); this.PublishIncomingEventHasBeenProcessed(incomingEvent); }
static void WriteDataAction(IMessageHandling proxy) { Console.WriteLine("\nEjecutando escritura de datos\n"); //WriteDataJefeGrupo(proxy); WriteDataSupervisor(proxy); //WriteDataAdministrador(proxy); }
static bool LoginAction(IMessageHandling proxy) { Console.WriteLine("\nEjecutando login\n"); //return LoginJefeGrupo(proxy); return(LoginSupervisor(proxy)); //return LoginAdministrador(proxy); }
/// <summary> /// Initializes a new instance of the <see cref="Daemon" /> class. /// </summary> public Daemon(ILogger <Daemon> logger, IMessageHandling messageHandling, INow now, IGuid guid, IDbContexts dbContexts) { _logger = logger; _messageHandling = messageHandling; _guid = guid; _now = now; _dbContexts = dbContexts; }
static void WriteDataJefeGrupo(IMessageHandling proxy) { // I Parte inicialmente no hay incidencias, se crean 4 nuevas en las asistencias guardadas //_asist01.IncidenciaCausaIncidencia = 2; //_asist01.IncidenciaObservacion = "Primera Incidencia adicionada."; //_asist02.IncidenciaCausaIncidencia = 4; //_asist02.IncidenciaObservacion = "Segunda Incidencia adicionada."; //_asist03.IncidenciaCausaIncidencia = 7; //_asist03.IncidenciaObservacion = "Tercera Incidencia adicionada."; //_asist04.IncidenciaCausaIncidencia = 9; //_asist04.IncidenciaObservacion = "Cuarta Incidencia adicionada."; // II Parte Ya existen incidencias, se modifican // SE borra la primera y se actualizan 2da y tercera //_asist01.IncidenciaCausaIncidencia = 0; //_asist02.IncidenciaCausaIncidencia = 2; //_asist02.IncidenciaObservacion = "Segunda Incidencia MODIFICADA 3."; ////_asist03.IncidenciaCausaIncidencia = 1; ////_asist03.IncidenciaObservacion = "Tercera Incidencia MODIFICADA."; //_asistencias = new Collection<Asistencia>(); //_asistencias.Add(_asist01); //_asistencias.Add(_asist02); // III Parte Se crea de nuevo la primera _asist01.IncidenciaCausaId = 2; _asist01.IncidenciaObservacion = "Primera Incidencia adicionada."; // Comando de actualizacion AsistenciaUpdateCommand asistCmd = new AsistenciaUpdateCommand(_asistencias, _incidencias); var status = proxy.Handle(asistCmd); bool Success = status.GetType() == typeof(Success); if (Success) { Console.WriteLine("Comando Ejecutado con éxito."); } else { Console.WriteLine("Comando fallido. Error: " + (status as Failure).Errormessage); } }
static void ReadDataSupervisor(IMessageHandling proxy) { // consultar lista de departamentos DepartamentQuery dptQry = new DepartamentQuery(); DepartamentQueryResult dptQryRst = proxy.Handle(dptQry); Console.WriteLine("\nLeida lista de departamentos. Cantidad: " + dptQryRst.Coleccion.Count); foreach (var depart in dptQryRst.Coleccion) { Console.WriteLine(string.Format(" Leído Departamento Id: {0}\t Nombre: {1}", depart.Id, depart.Description)); } // consultar claves mes existentes ClaveMesQuery cmQry = new ClaveMesQuery(); ClaveMesQueryResult cmQryRst = proxy.Handle(cmQry); Console.WriteLine("\nClaves Mes registradas"); foreach (var item in cmQryRst.Coleccion) { Console.WriteLine(string.Format(" Clave Mes: {0}", item.Texto)); } // consultar asistencia para un mes y tres departamentos ClaveMes mk = cmQryRst.Coleccion[1]; Collection <int> departs = new Collection <int>(); departs.Add(dptQryRst.Coleccion[1].Id); departs.Add(dptQryRst.Coleccion[3].Id); departs.Add(dptQryRst.Coleccion[5].Id); AsistenciaQuery asistQry = new AsistenciaQuery(mk.Id, departs); AsistenciaQueryResult asistQryRst = proxy.Handle(asistQry); //Console.WriteLine("\nIncidencias en el Mes registradas: " + asistQryRst.Incidencias.Count); Console.WriteLine("\nAsistencias en el Mes registradas"); Console.WriteLine(string.Format("Recibidos {0} empleados.", asistQryRst.Empleados.Count)); // listando empleados foreach (var item in asistQryRst.Empleados) { Console.WriteLine(string.Format("Nombre: {0}\t Id: {1}\t Codigo: {2} Cant. Asistencias: {3}", item.Nombre, item.Id, item.Code, item.Asistencias.Count)); } foreach (var empleado in asistQryRst.Empleados) { Console.WriteLine(); Console.WriteLine(string.Format(" {0}", empleado.Nombre)); foreach (var asist in empleado.Asistencias) { Console.WriteLine(string.Format(" {0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", asist.State, asist.Id, asist.Fecha, asist.DiaSemana, asist.ChekinTime, asist.ChekoutTime, asist.IncidenciaCausaId, asist.IncidenciaObservacion)); } } }
static bool LoginJefeGrupo(IMessageHandling proxy) { var loginCmd = new LoginCommand { UserName = "******", Password = "******", }; var status = proxy.Handle(loginCmd); bool Success = status.GetType() == typeof(Success); if (Success) { Console.WriteLine("Login Aceptado."); // Leer User Role var URquery = new UserRoleQuery(loginCmd.UserName); var result = proxy.Handle(URquery); Console.WriteLine(string.Format(" UserID: {0} Nombre: {1} Rol: {2}", result.UserID, result.UserName, result.UserRole)); // Guardar UserId para Lectura de datos _userID = result.UserID; // Valor de prueba en DB 72011518751 Console.WriteLine(string.Format(" Comparacion UserID leído: {0} esperado: 72011518751 ", _userID)); return(true); } else { Console.WriteLine(string.Format("Login Denegado. Mensaje: {0}", (status as Failure).Errormessage)); return(false); } }
public static IMessageHandling WithoutDeduplication(this IMessageHandling handling) { ((MessageHandling)handling).DeduplicateBeforeHandling = false; return(handling); }
private void HandleGracefully(IEvent incomingEvent) { try { dynamic me = this; IMessageHandling handling = me.Handle((dynamic)incomingEvent); if (handling.ShouldBeIgnored) { this.Ignore(incomingEvent); return; } /***************************************************** * This was the old way to get a lock. * * this.streamLocksById.TryAdd(id, new object()); * lock (this.streamLocksById.TryGetValue(id)) * ******************************************************/ lock (this.streamLocksById.GetOrAdd(handling.StreamId.ToString(), new object())) { try { if (!this.poisonedStreams.Where(p => p == handling.StreamId).Any()) { this.HandleAndSaveChanges(incomingEvent, handling); } if (this.log.Verbose) { this.log.Trace($"{name} successfully handled message of type {incomingEvent.GetType().Name}"); } } catch (StreamNotFoundException ex) { // we igonore it, just to protect our servers to get down. this.log.Error(ex, $"The stream {handling.StreamId} was not found. Ignoring message. You can retry by reseting the subscription table."); this.Ignore(incomingEvent); } catch (RuntimeBinderException ex) { var list = new List <string>(); list.Add($"The state of {name} seems like it does not have an orveload to update when message of type {incomingEvent.GetType().Name} is processed. Did you forget to write a When-Event-like method?"); list.Add("-----------------------------------------------------------------------------------"); this.log.Error(ex, "", list.ToArray()); this.poisonedStreams.Add(handling.StreamId); throw ex; } catch (Exception ex) { this.log.Error(ex, $"An error was detected while processing a message. Now we will try to check if it is duplicate or the snapshot is currupted"); // Maybe is duplicate try { if (this.store.IsDuplicate(incomingEvent.EventId)) { this.Ignore(incomingEvent); return; } } catch (Exception duplicateEx) { this.log.Error(duplicateEx, "An error ocurred while checking if incoming message is duplicate."); } // Or maybe the snapshot is corrupted try { this.store.DeleteSnapshot(handling.StreamId); this.HandleAndSaveChanges(incomingEvent, handling); return; } catch (Exception deleteSnapshotEx) { this.log.Error(deleteSnapshotEx, "An error ocurred while deleting snapshot and trying to re-process a message."); } this.poisonedStreams.Add(handling.StreamId); throw ex; } } } catch (Exception ex) { var exception = new PoisonMessageException("An error ocurred in Event Processor while processing a message. The message will be marked as poisoned in order to review it. Maybe is just a dynamic binding error.", ex); this.bus.Publish(new IncomingEventIsPoisoned(incomingEvent, exception)); this.log.Error(exception, $"Poison message of type {incomingEvent.GetType().Name} detected in Event Processor"); } }
static void WriteDataAdministrador(IMessageHandling proxy) { }
static void WriteDataSupervisor(IMessageHandling proxy) { }
public UI(IMessageHandling mh) { _mh = mh; }
static void ReadDataJefeGrupo(IMessageHandling proxy) { // consultar dept del usuario UserDepartamentQuery dptQry = new UserDepartamentQuery(_userID); UserDepartamentQueryResult dptQryRst = proxy.Handle(dptQry); Console.WriteLine(string.Format(" Leído Departamento Id: {0}\t Nombre: {1}", dptQryRst.Id, dptQryRst.Name)); // consultar claves mes existentes ClaveMesQuery cmQry = new ClaveMesQuery(); ClaveMesQueryResult cmQryRst = proxy.Handle(cmQry); Console.WriteLine("\nClaves Mes registradas"); foreach (var item in cmQryRst.Coleccion) { Console.WriteLine(string.Format(" Clave Mes: {0}", item.Texto)); } // consultar asistencia para un mes y departamento del usuario // aislar datos de mes ClaveMes mk = cmQryRst.Coleccion[0]; AsistenciaQuery asistQry = new AsistenciaQuery(mk.Id, dptQryRst.Id); AsistenciaQueryResult asistQryRst = proxy.Handle(asistQry); // guardando ref a incidencias recibidas //Console.WriteLine("\nIncidencias en el Mes registradas: " + asistQryRst.Incidencias.Count); _asistencias = new Collection <Asistencia>(); Console.WriteLine("\nAsistencias en el Mes registradas"); Console.WriteLine(string.Format("Recibidos {0} empleados.", asistQryRst.Empleados.Count)); // listando empleados foreach (var item in asistQryRst.Empleados) { Console.WriteLine(string.Format("Nombre: {0}\t Id: {1}\t Codigo: {2} Cant. Asistencias: {3}", item.Nombre, item.Id, item.Code, item.Asistencias.Count)); } Console.WriteLine("\nAsistencias por trabajador"); foreach (var empleado in asistQryRst.Empleados) { Console.WriteLine(); Console.WriteLine(string.Format(" {0}", empleado.Nombre)); foreach (var asist in empleado.Asistencias) { Console.WriteLine(string.Format(" {0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", asist.State, asist.Id, asist.Fecha, asist.DiaSemana, asist.ChekinTime, asist.ChekoutTime, asist.IncidenciaCausaId, asist.IncidenciaObservacion)); if (asist.Id == 177) { _asist01 = asist; } if (asist.Id == 232) { _asist02 = asist; } if (asist.Id == 342) { _asist03 = asist; } if (asist.Id == 452) { _asist04 = asist; } } } _asistencias.Add(_asist01); _asistencias.Add(_asist02); _asistencias.Add(_asist03); _asistencias.Add(_asist04); }
public UserInterface(IMessageHandling mh) { _mh = mh; }
static void ReadDataAdministrador(IMessageHandling proxy) { }