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);
        }