public void UpdateAdminEnabled(Dto.ServerProvidersAdminSettings source) { var session = _sessionFactory.OpenSession(); var statuses = session.Query<Models.ServerStatus>().Where(s => s.ServerId == source.ServerId).ToArray(); if (statuses.Any()) { using (var tran = session.BeginTransaction()) { var yahoo = statuses.FirstOrDefault(s => s.Provider == Provider.Yahoo); if (yahoo == null) { yahoo = new Models.ServerStatus() { ServerId = source.ServerId, Provider = Provider.Yahoo, AdminEnabled = source.YahooEnabled, LastStatus = Status.Stopped, LastStatusChange = DateTime.Now, DateModified = DateTime.Now, LastIsAliveReceived = (DateTime) SqlDateTime.MinValue }; session.Save(yahoo); } else if (yahoo.AdminEnabled != source.YahooEnabled) { yahoo.AdminEnabled = source.YahooEnabled; session.Update(yahoo); } var hotmail = statuses.FirstOrDefault(s => s.Provider == Provider.Hotmail); if (hotmail == null) { hotmail = new Models.ServerStatus() { ServerId = source.ServerId, Provider = Provider.Hotmail, AdminEnabled = source.HotmailEnabled, LastStatus = Status.Stopped, LastStatusChange = DateTime.Now, DateModified = DateTime.Now, LastIsAliveReceived = (DateTime) SqlDateTime.MinValue }; session.Save(hotmail); } else if (hotmail.AdminEnabled != source.HotmailEnabled) { hotmail.AdminEnabled = source.HotmailEnabled; session.Update(hotmail); } var aol = statuses.FirstOrDefault(s => s.Provider == Provider.Aol); if (aol == null) { aol = new Models.ServerStatus() { ServerId = source.ServerId, Provider = Provider.Aol, AdminEnabled = source.AolEnabled, LastStatus = Status.Stopped, LastStatusChange = DateTime.Now, DateModified = DateTime.Now, LastIsAliveReceived = (DateTime) SqlDateTime.MinValue }; session.Save(aol); } else if (aol.AdminEnabled != source.AolEnabled) { aol.AdminEnabled = source.AolEnabled; session.Update(aol); } tran.Commit(); } } session.Close(); }
public void EngagerPhoneHome(Provider provider, Status status) { if (_serverId == -1) { return; } try { var session = _sessionFactory.OpenSession(); using (var tran = session.BeginTransaction()) { var serverStatus = session.Query<Models.ServerStatus>().FirstOrDefault(s => s.ServerId == _serverId && s.Provider == provider); if (serverStatus == null && !session.Query<Models.Server>().Any(s => s.ServerId == _serverId)) { session.Save(new Models.Server() { ServerId = _serverId, Name = Environment.MachineName, Address = Environment.MachineName, }); } if (serverStatus == null) { serverStatus = new Models.ServerStatus() { ServerId = _serverId, Provider = provider, AdminEnabled = true }; } if ((int) serverStatus.LastStatus != (int) status || IsInTimeoutState(serverStatus.LastStatus, serverStatus.LastIsAliveReceived)) { serverStatus.LastStatusChange = DateTime.Now; serverStatus.LastStatus = status; } serverStatus.LastIsAliveReceived = DateTime.Now; serverStatus.DateModified = DateTime.Now; session.SaveOrUpdate(serverStatus); tran.Commit(); } session.Close(); } catch (Exception ex) { if (_log != null) { _log.Error("Phone Home Failed, Server Status not updated"); _log.Trace(ex); } } }