public void UpdateCommitments() { var commitments = (from m in Meetings() where m.iscommitted select m.MeetingDate).ToList(); if (Commit == null) { Commit = new DateTime[] { }; } var decommits = from currcommit in commitments join newcommit in Commit on currcommit equals newcommit into j from newcommit in j.DefaultIfEmpty(DateTime.MinValue) where newcommit == DateTime.MinValue select currcommit; var commits = from newcommit in Commit join currcommit in commitments on newcommit equals currcommit into j from currcommit in j.DefaultIfEmpty(DateTime.MinValue) where currcommit == DateTime.MinValue select newcommit; int?mid = null; foreach (var currcommit in decommits) { mid = Attend.MarkRegistered(DbUtil.Db, OrgId, PeopleId, currcommit, AttendCommitmentCode.Regrets); } foreach (var newcommit in commits) { mid = Attend.MarkRegistered(DbUtil.Db, OrgId, PeopleId, newcommit, AttendCommitmentCode.Attending); } if (mid.HasValue) { var slots = FetchSlots(); Meeting.AddEditExtraData(DbUtil.Db, mid.Value, "Description", slots.First().Description); } var om = DbUtil.Db.OrganizationMembers.SingleOrDefault(mm => mm.PeopleId == PeopleId && mm.OrganizationId == OrgId); if (om == null) { OrganizationMember.InsertOrgMembers(DbUtil.Db, OrgId, PeopleId, MemberTypeCode.Member, DateTime.Now, null, false); } }