public ActionResult Group(MvcGroupModel model) { var group = new GroupDetailModel { Id = model.Id, Name = model.Name, Leaders = model.Leaders == null ? new List<SmsPersonModel>() : model.Leaders.Select(l => new SmsPersonModel { Id = Convert.ToInt32(l) }).ToList(), Members = model.Members == null ? new List<SmsPersonModel>() : model.Members.Select(m => new SmsPersonModel { Id = Convert.ToInt32(m) }).ToList(), }; _message.Save(group); return Redirect(Url.Action("Index", "Messaging")); }
public void Save(GroupDetailModel model) { SmsGroup dbGroup; if (model.Id == default(int)) { dbGroup = new SmsGroup { Name = model.Name }; _uow.SmsGroups.Add(dbGroup); } else { dbGroup = _uow .SmsGroups .FindAll() .Include("SmsGroupMembers.SmsPerson") .Include("SmsGroupLeaders.SmsPerson") .First(g => g.Id == model.Id); dbGroup.Name = model.Name; } _uow.SaveChanges(); //To Add var leadersToAdd = model.Leaders.Where(l => !dbGroup.SmsGroupLeaders.Any(x => x.SmsPersonId == l.Id)).ToList(); foreach (var toAdd in leadersToAdd) { _uow.SmsGroupLeaders.Add(new SmsGroupLeader { SmsGroupId = dbGroup.Id, SmsPersonId = toAdd.Id, }); } var membersToAdd = model.Members.Where(l => !dbGroup.SmsGroupMembers.Any(x => x.SmsPersonId == l.Id)).ToList(); foreach (var toAdd in membersToAdd) { _uow.SmsGroupMembers.Add(new SmsGroupMember { SmsGroupId = dbGroup.Id, SmsPersonId = toAdd.Id, }); } //To Delete var leadersToDelete = dbGroup.SmsGroupLeaders.Where(l => !model.Leaders.Any(x => x.Id == l.SmsPersonId)).ToList(); foreach (var toDelete in leadersToDelete) { _uow.SmsGroupLeaders.Remove(toDelete); } var membersToDelete = dbGroup.SmsGroupMembers.Where(l => !model.Members.Any(x => x.Id == l.SmsPersonId)).ToList(); foreach (var toDelete in membersToDelete) { _uow.SmsGroupMembers.Remove(toDelete); } _uow.SaveChanges(); }