Exemplo n.º 1
0
            /// <summary>
            /// Gets all button grids.
            /// </summary>
            /// <param name="request">Request instance.</param>
            /// <returns>Response instance.</returns>
            private static GetButtonGridsServiceResponse GetButtonGrids(GetButtonGridsServiceRequest request)
            {
                // resolves the layout based on the principal (user, terminal, channel) and get the button grid ids for those
                var        getTillLayoutRequest = new GetTillLayoutDataRequest();
                TillLayout layout = request.RequestContext.Execute <SingleEntityDataServiceResponse <TillLayout> >(getTillLayoutRequest).Entity;

                if (layout == null)
                {
                    throw new ConfigurationException(ConfigurationErrors.Microsoft_Dynamics_Commerce_Runtime_LayoutNotFound, "Could not find layout associated with the request.");
                }

                // get all button grids
                var getButtonGridDataRequest         = new GetButtonGridsDataRequest(QueryResultSettings.AllRecords);
                PagedResult <ButtonGrid> buttonGrids = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ButtonGrid> >(getButtonGridDataRequest, request.RequestContext).PagedEntityCollection;

                // get all button grids that participate on the layout (top level)
                var topLevelButtonGridIdsPertainingToLayout = layout.ButtonGridZones.Select(buttonGridZone => buttonGridZone.ButtonGridId);

                // get filter only button grids pertaining to the layout
                var layoutFilteredButtonGrids = new ButtonGridFilter(topLevelButtonGridIdsPertainingToLayout, buttonGrids.Results).GetButtonGrids();

                // paginate result according to client settings
                PagedResult <ButtonGrid> buttonGridPagedResult = new PagedResult <ButtonGrid>(
                    layoutFilteredButtonGrids,
                    request.QueryResultSettings.Paging,
                    layoutFilteredButtonGrids.Count);

                return(new GetButtonGridsServiceResponse(buttonGridPagedResult));
            }
Exemplo n.º 2
0
            /// <summary>
            /// Gets button grids by identifiers.
            /// </summary>
            /// <param name="request">Request instance.</param>
            /// <returns>Response instance.</returns>
            private static GetButtonGridsByIdsServiceResponse GetButtonGridByIds(GetButtonGridsByIdsServiceRequest request)
            {
                var getButtonGridDataRequest         = new GetButtonGridsDataRequest(request.ButtonGridIds, request.QueryResultSettings);
                PagedResult <ButtonGrid> buttonGrids = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ButtonGrid> >(getButtonGridDataRequest, request.RequestContext).PagedEntityCollection;

                return(new GetButtonGridsByIdsServiceResponse(buttonGrids));
            }
Exemplo n.º 3
0
            /// <summary>
            /// Gets a button grid.
            /// </summary>
            /// <param name="request">Request instance.</param>
            /// <returns>Response instance.</returns>
            private static GetButtonGridByIdServiceResponse GetButtonGridById(GetButtonGridByIdServiceRequest request)
            {
                var butonGridIds = new List <string> {
                    request.ButtonGridId
                };
                var        getButtonGridDataRequest = new GetButtonGridsDataRequest(butonGridIds, request.QueryResultSettings);
                ButtonGrid buttonGrid = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ButtonGrid> >(getButtonGridDataRequest, request.RequestContext).PagedEntityCollection.FirstOrDefault();

                return(new GetButtonGridByIdServiceResponse(buttonGrid));
            }
            /// <summary>
            /// Gets a button grids by identifiers.
            /// </summary>
            /// <param name="request">The get button grids data request.</param>
            /// <returns>
            /// Collection of matching button grids.
            /// </returns>
            private EntityDataServiceResponse <ButtonGrid> GetButtonsGrids(GetButtonGridsDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.ButtonGridIds, "request.ButtonGridIds");
                ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings");

                PagedResult <ButtonGrid> buttonGrids = null;

                // Default query to retrieve all the button grids.
                var query = new SqlPagedQuery(request.QueryResultSettings)
                {
                    From    = ButtonGridsView,
                    OrderBy = ButtonGrid.ButtonGridIdColumn
                };

                // Update query when only one button grid is retrieved.
                if (request.ButtonGridIds.Count() == 1)
                {
                    query.Where = string.Format("{0} = @{0}", ButtonGrid.ButtonGridIdColumn);
                    query.Parameters[string.Format("@{0}", ButtonGrid.ButtonGridIdColumn)] = request.ButtonGridIds.FirstOrDefault();
                }

                // Update query for retrieving multiple button grids.
                if (request.ButtonGridIds.HasMultiple())
                {
                    using (StringIdTableType buttonGridIdTableType = new StringIdTableType(request.ButtonGridIds, ButtonGrid.ButtonGridIdColumn))
                    {
                        query.Parameters[ButtonGridIdTableTypeParameterName] = buttonGridIdTableType;

                        // Query execution for retrieving multiple button grids.
                        buttonGrids = this.ExecuteQuery <ButtonGrid>(query, request.RequestContext);
                    }
                }
                else
                {
                    // Query execution for retrieving one or all the button grids.
                    buttonGrids = this.ExecuteQuery <ButtonGrid>(query, request.RequestContext);
                }

                // Get the button grid buttons.
                if (buttonGrids != null && buttonGrids.Results != null)
                {
                    var buttonGridIds = buttonGrids.Results.Select(b => b.Id);

                    ReadOnlyCollection <ButtonGridButton> buttons = this.GetButtonGridButtons(buttonGridIds, request.RequestContext).Results;

                    foreach (var buttonGrid in buttonGrids.Results)
                    {
                        buttonGrid.Buttons = buttons.Where(b => string.Equals(b.ButtonGridId, buttonGrid.Id, StringComparison.OrdinalIgnoreCase));
                    }
                }

                return(new EntityDataServiceResponse <ButtonGrid>(buttonGrids));
            }