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(); }
/// <summary> /// Заявки пользователя личного кабинета /// </summary> public IEnumerable <RequestDTO> GetListByEmployee(long employeeId, RequestFilter filter, OrderInfo orderInfo, PageInfo pageInfo) { if (filter.StatusIds != null && filter.StatusIds.Any()) { filter.RawStatusIds = new List <long>(); foreach (StatusRequestEnum s in filter.StatusIds) { foreach (long statuId in statusRequestMapService.GetElementsByEquivalence(s)) { filter.RawStatusIds.Add(statuId); } } } return(getList( delegate(PageInfo _pageInfo) { return queryHandler.Handle <EmployeeRequestQueryParam, IEnumerable <RequestDTO>, IEmployeeRequestQuery <Request> > (new EmployeeRequestQueryParam { EmployeeId = employeeId, Filter = filter, OrderInfo = orderInfo, PageInfo = _pageInfo }, _employeeRequestQuery); }, delegate(PageInfo _pageInfo) { return queryHandler.Handle <EmployeeRequestQueryParam, IEnumerable <RequestDTO>, IEmployeeRequestQuery <RequestArch> > (new EmployeeRequestQueryParam { EmployeeId = employeeId, Filter = filter, OrderInfo = orderInfo, PageInfo = _pageInfo }, _employeeRequestArchQuery); }, filter, orderInfo, pageInfo)); }