コード例 #1
0
        public bool ProcessRequest(IUserSessionRequest <IUserSessionData> request, out IResponse response)
        {
            ErrorMessage error;

            if (!_validator.IsValid(request, out error))
            {
                response = new UserSessionResponse().SetErrorResponse(error);
                return(false);
            }

            if (!_sessionRequestProcessor.TryProcess(request, out response) && response != null)
            {
                return(false);
            }

            var requestType = request.RequestType;

            if (request.RequestType == RequestType.Read || request.RequestType == RequestType.ReadAll)
            {
                response = ReadFromState(request.Payload ??
                                         (IUserSessionData)Activator.CreateInstance(request.PayloadType));
            }


            else
            {
                ApplyToState(requestType, response);
            }

            return(true);
        }
コード例 #2
0
        public bool TryProcess(IUserSessionRequest <IUserSessionData> request, out IResponse response)
        {
            switch (request.RequestType)
            {
            case RequestType.Create:
                return(TryPersistRecord(request.Payload, out response));

            case RequestType.Update:
                return(TryUpdateRecord(request.Payload, out response));

            case RequestType.Delete:
                return(TryDeleteRecord(request.Payload, out response));

            case RequestType.Read:
            case RequestType.ReadAll:
            {
                //There's no real processing to do here
                response = null;
                return(true);
            }

            default:
            {
                var errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported);
                response = new UserSessionResponse().SetErrorResponse(errorMessage);
                return(false);
            }
            }
        }
コード例 #3
0
        public bool IsValid(IUserSessionRequest <IUserSessionData> request, out ErrorMessage errorMessage)
        {
            errorMessage = null;
            var requestData   = request.Payload;
            var requestUserId = request.UserId;

            if (!requestUserId.HasValue || requestUserId != _user.UserId)
            {
                errorMessage = new ErrorMessage(ErrorCode.UserSessionNotFound);
                return(false);
            }

            if (requestData == null && request.RequestType == RequestType.ReadAll)
            {
                //This is a request for all data of a particular kind and requires no validation
                return(true);
            }

            if (requestData is NopePet)
            {
                return(_petRegistrationValidator.IsValid(_user, (NopePet)request.Payload, out errorMessage));
            }

            if (requestData is UserPetCareAction)
            {
                var petCareActionData = (UserPetCareAction)requestData;
                return(IsUsersPet(petCareActionData.PetId, requestUserId.Value, out errorMessage) &&
                       _petCareActionValidator.IsValid(_user, petCareActionData, out errorMessage));
            }

            errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported);
            return(false);
        }