public void AddSession(IPersonSession session) { var sessionImpl = (Session)session; sessionImpl.BeginTime = Round(sessionImpl.BeginTime); lock (_sessionsLock) { var wrappers = LoadSessions(); var wrapper = wrappers.FirstOrDefault(w => w.PersonId == session.PersonId); if (wrapper == null) throw new Exception("Person not found"); wrapper.Sessions = wrapper.Sessions.Add(sessionImpl); Save(wrappers); } }
public void UpdateSession(IPersonSession session) { var sessionImpl = (Session)session; sessionImpl.BeginTime = Round(sessionImpl.BeginTime); if (sessionImpl.EndTime != null) sessionImpl.EndTime = Round(sessionImpl.EndTime.Value); lock (_sessionsLock) { // TODO: оптимизировать бы var wrappers = LoadSessions(); var wrapper = wrappers.Where(w => w.Sessions != null).FirstOrDefault(w => w.Sessions.Any(s => s.Id == session.Id)); if (wrapper == null) throw new Exception("Session not found"); var ss = wrapper.Sessions.First(s => s.Id == session.Id); wrapper.Sessions = wrapper.Sessions.Remove(ss); wrapper.Sessions = wrapper.Sessions.Add(sessionImpl); Save(wrappers); } }