/// <summary>
            /// Gets the shift.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>A single entity data service response.</returns>
            private SingleEntityDataServiceResponse <Shift> GetShift(GetShiftDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.NullOrWhiteSpace(request.TerminalId, "request.TerminalId");

                long channelId = request.RequestContext.GetPrincipal().ChannelId;

                // Loads shift.
                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria();

                criteria.ChannelId           = channelId;
                criteria.TerminalId          = request.TerminalId;
                criteria.ShiftId             = request.ShiftId;
                criteria.SearchByTerminalId  = true;
                criteria.IncludeSharedShifts = true;

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, QueryResultSettings.SingleRecord);
                Shift shift = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, request.RequestContext).PagedEntityCollection.FirstOrDefault();

                if (shift != null)
                {
                    // Load shift tender lines.
                    PagedResult <ShiftTenderLine> shiftTenderLines = this.GetShiftEntity <ShiftTenderLine>(string.Empty, ShiftTenderLinesView, request.TerminalId, request.ShiftId, request, queryByPrimaryKey: false);

                    // Load shift account lines.
                    PagedResult <ShiftAccountLine> shiftAccountLines = this.GetShiftEntity <ShiftAccountLine>(string.Empty, ShiftAccountsView, request.TerminalId, request.ShiftId, request, queryByPrimaryKey: false);

                    shift.AccountLines = shiftAccountLines.Results.ToList();
                    shift.TenderLines  = shiftTenderLines.Results.ToList();
                }

                return(new SingleEntityDataServiceResponse <Shift>(shift));
            }
 private Response GetShiftData(GetShiftDataDataRequest request)
 {
     using (SqliteDatabaseContext databaseContext = new SqliteDatabaseContext(request.RequestContext))
     {
         GetShiftDataProcedure procedure = new GetShiftDataProcedure(request.Criteria, databaseContext);
         return(procedure.Execute());
     }
 }
 /// <summary>
 /// The data service method to get the shift data.
 /// </summary>
 /// <param name="request">The get shift data request.</param>
 /// <returns>A response.</returns>
 private Response GetShiftData(GetShiftDataDataRequest request)
 {
     using (SqlServerDatabaseContext databaseContext = new SqlServerDatabaseContext(request))
     {
         GetShiftDataProcedure procedure = new GetShiftDataProcedure(request, databaseContext);
         return(procedure.Execute(request.QueryResultSettings));
     }
 }
            internal static IList <Shift> GetAllStoreShiftsWithStatus(RequestContext context, long channelId, ShiftStatus status, QueryResultSettings settings, bool includeSharedShifts)
            {
                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria
                {
                    ChannelId           = channelId,
                    Status              = (int)status,
                    IncludeSharedShifts = includeSharedShifts
                };

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, settings);

                return(context.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, context).PagedEntityCollection.Results);
            }
            internal static IList <Shift> GetAllOpenedShiftsOnTerminal(RequestContext context, long channelId, string terminalId, bool includeSharedShifts)
            {
                ThrowIf.NullOrWhiteSpace(terminalId, "terminalId");

                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria
                {
                    ChannelId  = channelId,
                    TerminalId = terminalId,
                    Status     = (int)ShiftStatus.Open,
                    SearchByCurrentTerminalId = true,
                    IncludeSharedShifts       = includeSharedShifts
                };

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, QueryResultSettings.AllRecords);

                return(context.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, context).PagedEntityCollection.Results);
            }
            internal static IList <Shift> GetShiftsForStaffWithStatus(RequestContext context, long channelId, string staffId, ShiftStatus status, QueryResultSettings settings, bool includeSharedShifts)
            {
                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria
                {
                    ChannelId           = channelId,
                    Status              = (int)status,
                    SearchByStaffId     = true,
                    IncludeSharedShifts = includeSharedShifts
                };

                if (!string.IsNullOrWhiteSpace(staffId))
                {
                    criteria.StaffId = staffId;
                }

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, settings);

                return(context.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, context).PagedEntityCollection.Results);
            }
            /// <summary>
            /// Gets the current shift and sets it on the context.
            /// </summary>
            /// <param name="context">The context.</param>
            private static void PopulateContextWithShiftInformation(RequestContext context)
            {
                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria
                {
                    ChannelId  = context.GetPrincipal().ChannelId,
                    TerminalId = context.GetTerminal().TerminalId,
                    StaffId    =
                        string.IsNullOrWhiteSpace(context.GetPrincipal().OriginalUserId)
                            ? context.GetPrincipal().UserId
                            : context.GetPrincipal().OriginalUserId,
                    Status                    = (int)ShiftStatus.Open,
                    SearchByStaffId           = true,
                    SearchByCurrentStaffId    = true,
                    SearchByTerminalId        = true,
                    SearchByCurrentTerminalId = true
                };

                // Get original staff id (not a manager's) during elevated permission operations.
                GetEmployeePermissionsDataRequest permissionsDataRequest = new GetEmployeePermissionsDataRequest(criteria.StaffId, new ColumnSet());
                EmployeePermissions employeePermissions = context.Runtime.Execute <SingleEntityDataServiceResponse <EmployeePermissions> >(
                    permissionsDataRequest, context, skipRequestTriggers: true).Entity;

                if (employeePermissions != null)
                {
                    criteria.IncludeSharedShifts = employeePermissions.HasManagerPrivileges ||
                                                   employeePermissions.AllowManageSharedShift ||
                                                   employeePermissions.AllowUseSharedShift ||
                                                   employeePermissions.AllowMultipleShiftLogOn;
                }

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, QueryResultSettings.SingleRecord);
                Shift shift = context.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, context, skipRequestTriggers: true).PagedEntityCollection.Results.FirstOrDefault();

                if (shift != null)
                {
                    // TerminalId is the identifier of the terminal which creates the shift
                    context.GetPrincipal().ShiftId         = shift.ShiftId;
                    context.GetPrincipal().ShiftTerminalId = shift.TerminalId;
                }
            }
            internal static IList <Shift> GetShifts(RequestContext context, long channelId, string staffId, string terminalId, long shiftId, bool includeSharedShifts)
            {
                ThrowIf.NullOrWhiteSpace(terminalId, "terminalId");

                ShiftDataQueryCriteria criteria = new ShiftDataQueryCriteria
                {
                    ChannelId           = channelId,
                    TerminalId          = terminalId,
                    ShiftId             = shiftId,
                    SearchByTerminalId  = true,
                    IncludeSharedShifts = includeSharedShifts
                };

                if (!string.IsNullOrWhiteSpace(staffId))
                {
                    criteria.StaffId                = staffId;
                    criteria.SearchByStaffId        = true;
                    criteria.SearchByCurrentStaffId = true;
                }

                GetShiftDataDataRequest dataServiceRequest = new GetShiftDataDataRequest(criteria, QueryResultSettings.SingleRecord);

                return(context.Runtime.Execute <EntityDataServiceResponse <Shift> >(dataServiceRequest, context).PagedEntityCollection.Results);
            }
Exemple #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GetShiftDataProcedure"/> class.
 /// </summary>
 /// <param name="request">The request object.</param>
 /// <param name="databaseContext">The database context object.</param>
 public GetShiftDataProcedure(GetShiftDataDataRequest request, SqlServerDatabaseContext databaseContext)
 {
     this.request         = request;
     this.databaseContext = databaseContext;
 }