public void ChangeSubscribeRequestState(long userId, StatusRequestEnum requestState)
        {
            IEnumerable <long> statusRequestIds = statusRequestMapService.GetElementsByEquivalence(requestState);
            IEnumerable <CabinetUserEventSubscribe> subscribes = userEventSubscribeRepository.GetList(s => s.User.Id == userId &&
                                                                                                      statusRequestIds.Contains(s.StatusRequest.Id));

            if (!subscribes.Any())
            {
                foreach (long statusRequestId in statusRequestIds)
                {
                    var subscribe = new CabinetUserEventSubscribe()
                    {
                        StatusRequest = statusRepository.Get(statusRequestId),
                        User          = userRepository.Get(userId)
                    };
                    userEventSubscribeRepository.Save(subscribe);
                }
            }
            else
            {
                userEventSubscribeRepository.Delete(s => s.User.Id == userId && statusRequestIds.Contains(s.StatusRequest.Id));
            }

            repository.SaveChanges();
        }
        public static IEnumerable <long> GetElementsByEquivalence(StatusRequestEnum statusRequest)
        {
            if (elementsByEquivalence.Value.ContainsKey(statusRequest))
            {
                return(elementsByEquivalence.Value[statusRequest]);
            }
            else
            {
                IList <long> keys = new List <long>();
                foreach (long key in equivalenceByElement.Value.Keys)
                {
                    if (equivalenceByElement.Value[key] == statusRequest)
                    {
                        keys.Add(key);
                    }
                }

                elementsByEquivalence.Value[statusRequest] = keys;
                return(keys);
            }
        }
Beispiel #3
0
 public IEnumerable <long> GetElementsByEquivalence(StatusRequestEnum statusRequest)
 {
     return(StatusRequestFactorization.GetElementsByEquivalence(statusRequest));
 }