/// <summary> /// Create an <see cref="IQueryable"/> of <typeparamref name="TData"/> /// that expects a single <typeparamref name="TData"/> item. /// </summary> /// <param name="singleResultQuery">The query.</param> public virtual IQueryable <TData> CreateQueryable(ISingleResultQuery <TQueryStrategy, TData> singleResultQuery) { IQueryable <TData> queryable = singleResultQuery.QueryStrategy.QueryPredicate == null?GetEmptyQueryPredicate() : GeneratePredicate(singleResultQuery.QueryStrategy.QueryPredicate); ApplySorting(singleResultQuery.QueryStrategy, ref queryable); return(queryable); }
public virtual ISingleResultQuery <TQueryStrategy, TData> Retrieve(ISingleResultQuery <TQueryStrategy, TData> singleResultQuery, bool throwExceptionWhenNoQueryResults = true) { IQueryable <TData> query = QueryBuilder.CreateQueryable(singleResultQuery); IEnumerable <TData> result = query.AsEnumerable(); try { return(new SingleResultQuery <TQueryStrategy, TData> { QueryStrategy = singleResultQuery.QueryStrategy, Result = throwExceptionWhenNoQueryResults ? result.Single() : result.SingleOrDefault() }); } finally { // This is disabled until I can figure out a better way to handle disposing these... as it will most likely dispose the data store... and that's not cool. /* * var disposable = result as IDisposable; * if (disposable != null) * disposable.Dispose(); */ } }
public virtual ISingleResultQuery <TQueryStrategy, TData> Retrieve(ISingleResultQuery <TQueryStrategy, TData> singleResultQuery, bool throwExceptionWhenNoQueryResults = true) { // The .Select(i => i) is necessary due to inheritance // http://stackoverflow.com/questions/1021274/linq-to-sql-mapping-exception-when-using-abstract-base-classes IQueryable <TData> query = QueryBuilder.CreateQueryable(singleResultQuery).Select(i => i); IEnumerable <TData> result = query.AsEnumerable(); try { return(new SingleResultQuery <TQueryStrategy, TData> { QueryStrategy = singleResultQuery.QueryStrategy, Result = throwExceptionWhenNoQueryResults ? result.Single() : result.SingleOrDefault() }); } finally { // This is disabled until I can figure out a better way to handle disposing these... as it will most likely dispose the data store... and that's not cool. /* * var disposable = result as IDisposable; * if (disposable != null) * disposable.Dispose(); */ } }
public string GetCurrentUsersName() { // Define Query ISingleResultQuery <UserQueryStrategy, UserEntity> query = QueryFactory.CreateNewSingleResultQuery <UserQueryStrategy, UserEntity>(); query.QueryStrategy.WithRsn(GetCurrentUser()); // Retrieve Data query = UserRepository.Retrieve(query); return(query.Result.FirstName); }
partial void OnGetByRsn(IServiceRequestWithData <Cqrs.Authentication.ISingleSignOnToken, UserServiceGetByRsnParameters> serviceRequest, ref IServiceResponseWithResultData <Entities.UserEntity> results) { // Define Query ISingleResultQuery <UserQueryStrategy, Entities.UserEntity> query = QueryFactory.CreateNewSingleResultQuery <UserQueryStrategy, Entities.UserEntity>(); query.QueryStrategy.WithRsn(serviceRequest.Data.rsn); // Retrieve Data, but remember if no items exist, the value is null query = UserRepository.Retrieve(query); Entities.UserEntity user = query.Result; results = new ServiceResponseWithResultData <Entities.UserEntity>(user); }
partial void OnGetByRsn(IServiceRequestWithData <ISingleSignOnToken, InventoryItemServiceGetByRsnParameters> serviceRequest, ref IServiceResponseWithResultData <InventoryItemEntity> results) { // Define Query ISingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity> query = QueryFactory.CreateNewSingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity>(); query.QueryStrategy.WithRsn(serviceRequest.Data.rsn); // Retrieve Data, but remember if no items exist, the value is null query = InventoryItemRepository.Retrieve(query); InventoryItemEntity inventoryItem = query.Result; results = new ServiceResponseWithResultData <InventoryItemEntity>(inventoryItem); }
public HttpResponseMessage <ServiceResponseWithResultData <Guid?> > Login(UserLogin userLogin) { if (userLogin == null || string.IsNullOrEmpty(userLogin.EmailAddress) || string.IsNullOrEmpty(userLogin.Password)) { return(CompleteResponseWithData(new ServiceResponseWithResultData <Guid?> { State = ServiceResponseStateType.FailedValidation })); } // Define Query ISingleResultQuery <CredentialQueryStrategy, CredentialEntity> query = QueryFactory.CreateNewSingleResultQuery <CredentialQueryStrategy, CredentialEntity>(); string hash = AuthenticationHashHelper.GenerateCredentialHash(userLogin.EmailAddress, userLogin.Password); query.QueryStrategy.WithHash(hash); // Retrieve Data query = CredentialRepository.Retrieve(query, false); CredentialEntity queryResults = query.Result; var responseData = new ServiceResponseWithResultData <Guid?> { State = queryResults == null ? ServiceResponseStateType.FailedAuthentication : ServiceResponseStateType.Succeeded, ResultData = queryResults == null ? (Guid?)null : queryResults.UserRsn }; // Complete the response HttpResponseMessage <ServiceResponseWithResultData <Guid?> > response = CompleteResponseWithData(responseData); // If authentication has succeeded then return now. if (responseData.State != ServiceResponseStateType.Succeeded || responseData.ResultData == null) { return(response); } // Copy encrypted auth token to X-Token for SignalR string authenticationTokenName = DependencyResolver.Current.Resolve <IConfigurationManager>().GetSetting("Cqrs.Web.AuthenticationTokenName") ?? "X-Token"; var cookie = new CookieHeaderValue(authenticationTokenName, responseData.ResultData.Value.ToString("N")) { Expires = DateTimeOffset.Now.AddDays(1), }; response.Headers.AddCookies(new[] { cookie }); return(response); }
private void DeleteDetailedItem(InventoryItemDeactivated @event) { // Define Query ISingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity> query = QueryFactory.CreateNewSingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity>(); query.QueryStrategy.WithRsn(@event.Rsn); // Retrieve Data, but remember if no items exist, the value is null query = InventoryItemRepository.Retrieve(query, false); InventoryItemEntity inventoryItem = query.Result; // As a previous event will have created this instance we should throw an exception if it is not found. if (inventoryItem == null) { throw new NullReferenceException(string.Format("No entity was found by the id '{0}'", @event.Rsn)); } InventoryItemRepository.Delete(inventoryItem); }
partial void OnHandle(ItemsRemovedFromInventory @event) { // Define Query ISingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity> query = QueryFactory.CreateNewSingleResultQuery <InventoryItemQueryStrategy, InventoryItemEntity>(); query.QueryStrategy.WithRsn(@event.Rsn); // Retrieve Data, but remember if no items exist, the value is null query = InventoryItemRepository.Retrieve(query, false); InventoryItemEntity inventoryItem = query.Result; // As a previous event will have created this instance we should throw an exception if it is not found. if (inventoryItem == null) { throw new NullReferenceException(string.Format("No entity was found by the id '{0}'", @event.Rsn)); } inventoryItem.CurrentCount -= @event.Count; // Again, this MUST be an update as commented above. InventoryItemRepository.Update(inventoryItem); }
/// <summary> /// Validate the provided <paramref name="serviceRequest">credentials</paramref> are valid. /// </summary> /// <param name="serviceRequest">The user credentials to validate.</param> /// <returns>The users identifier.</returns> public virtual IServiceResponseWithResultData <Guid?> Login(IServiceRequestWithData <Guid, LoginParameters> serviceRequest) { AuthenticationTokenHelper.SetAuthenticationToken(serviceRequest.AuthenticationToken); CorrelationIdHelper.SetCorrelationId(serviceRequest.CorrelationId); var userLogin = serviceRequest.Data; if (userLogin == null || string.IsNullOrEmpty(userLogin.EmailAddress) || string.IsNullOrEmpty(userLogin.Password)) { return(CompleteResponse(new ServiceResponseWithResultData <Guid?> { State = ServiceResponseStateType.FailedValidation })); } // Define Query ISingleResultQuery <CredentialQueryStrategy, CredentialEntity> query = QueryFactory.CreateNewSingleResultQuery <CredentialQueryStrategy, CredentialEntity>(); string hash = AuthenticationHashHelper.GenerateCredentialHash(userLogin.EmailAddress, userLogin.Password); query.QueryStrategy.WithHash(hash); // Retrieve Data query = CredentialRepository.Retrieve(query, false); CredentialEntity queryResults = query.Result; var responseData = new ServiceResponseWithResultData <Guid?> { State = queryResults == null ? ServiceResponseStateType.FailedAuthentication : ServiceResponseStateType.Succeeded, ResultData = queryResults == null ? (Guid?)null : queryResults.UserRsn }; // Complete the response ServiceResponseWithResultData <Guid?> response = CompleteResponse(responseData); return(response); }