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); } }
public IEnumerable <long> GetElementsByEquivalence(StatusRequestEnum statusRequest) { return(StatusRequestFactorization.GetElementsByEquivalence(statusRequest)); }