public Answer UpdateExistingActivity(string activityId, string activityName, List <SubActivityViewModel> filteredList) { var activity = Session.Load <Activity>(activityId); if (activity == null) { throw new Exception("Unknown activity ID"); } var existing = Session.Query <Activity>() .Where(x => x.Name == activityName && x.IsSubActivity == false && x.IsSubActivity == false).ToList(); if (existing.Any()) { return(Answer.Error("קיימת פעילות בשם שהוזן")); } var exisitingSubActivities = filteredList .Where(x => x.Id.IsNotEmptyString()) .ToDictionary(x => x.Id, x => x.Name); var newSubActivities = filteredList.Where(x => x.Id.IsEmptyString()); var removedSubActivities = new List <Activity>(); foreach (var subActivity in activity.SubActivities) { if (exisitingSubActivities.MissingKey(subActivity.Id)) { removedSubActivities.Add(subActivity); ; Session.Delete(subActivity.Id); } else { subActivity.Name = exisitingSubActivities[subActivity.Id]; Session.Store(subActivity); } } foreach (var removedSystem in removedSubActivities) { activity.SubActivities.Remove(removedSystem); } foreach (var newSubActivity in newSubActivities) { var subActivity = new Activity { Name = newSubActivity.Name, IsSubActivity = true }; Session.Store(subActivity); activity.SubActivities.Add(subActivity); } activity.Name = activityName; Session.SaveChanges(); return(Answer.Success); }
public Answer AddNewActivity(string name, List <string> subActivities) { var existing = Session.Query <Activity>().Where(x => x.Name == name && x.IsSubActivity == false).ToList(); if (existing.Any()) { return(Answer.Error("קיימת פעילות בשם שהוזן")); } var activity = new Activity(); activity.Name = name; activity.SubActivities = new List <Activity>(); foreach (var subActivity in subActivities) { var eventActivity = new Activity { Name = subActivity, IsSubActivity = true }; Session.Store(eventActivity); activity.SubActivities.Add(eventActivity); } Session.Store(activity); Session.SaveChanges(); return(Answer.Success); }