private static void ProcessMessage(AgentUpdateMessage message) { using (AgentsMonitorContext context = new AgentsMonitorContext()) { Server existingServer = GetExistingServer(context, message); UpdateServerFields(existingServer, message, context); context.SaveChanges(); } }
private static Server GetExistingServer(AgentsMonitorContext context, AgentUpdateMessage agentUpdateMessage) { Server existingServer = context.Servers.FirstOrDefault(server => server.MacAddress == agentUpdateMessage.MacAddress); if (existingServer == null) { existingServer = context.Servers.Create(); context.Servers.Add(existingServer); } return existingServer; }
private void UpdateServerFields( Server existingServer, AgentUpdateMessage agentUpdateMessage, UsersManager userManager) { existingServer.MacAddress = agentUpdateMessage.MacAddress; existingServer.Name = agentUpdateMessage.Name; existingServer.FreeSpace = agentUpdateMessage.FreeSpace; existingServer.UsedSpace = agentUpdateMessage.UsedSpace; existingServer.User = userManager.FindById(agentUpdateMessage.UserId); }
private static void UpdateServerFields( Server existingServer, AgentUpdateMessage agentUpdateMessage, AgentsMonitorContext context) { existingServer.MacAddress = agentUpdateMessage.MacAddress; existingServer.Name = agentUpdateMessage.Name; existingServer.FreeSpace = agentUpdateMessage.FreeSpace; existingServer.UsedSpace = agentUpdateMessage.UsedSpace; User user = context.Users.Find(agentUpdateMessage.UserId); existingServer.User = user; }
private static AgentUpdateInfo GetAgentUpdateInfo(AgentUpdateMessage message, Server existingServer) { bool isNew = existingServer.Id == default(int); bool spaceIsUpdated = existingServer.FreeSpace != message.FreeSpace || existingServer.UsedSpace != message.UsedSpace; if (!isNew && !spaceIsUpdated) { return null; } return new AgentUpdateInfo { IsNew = isNew, Server = existingServer, UserId = message.UserId }; }
private void ProcessMessage(AgentUpdateMessage message) { using (UnitOfWorkService unitOfWork = new UnitOfWorkService()) { Server existingServer = unitOfWork.ServersRepository.GetServerByMacAddress(message.MacAddress) ?? new Server(); AgentUpdateInfo agentUpdateInfo = GetAgentUpdateInfo(message, existingServer); this.UpdateServerFields(existingServer, message, unitOfWork.UsersManager); unitOfWork.ServersRepository.Save(existingServer); if (agentUpdateInfo != null) { this.ServerInfoUpdated?.Invoke(this, agentUpdateInfo); } } }