private bool TryPersistRecord(IUserSessionData requestData, out IResponse response)
        {
            if (requestData is NopePet)
            {
                return(TryCreateNewPetDbRecord(requestData as NopePet, out response));
            }

            var error = new ErrorMessage(ErrorCode.RequestDataNotRecognised);

            response = new UserSessionResponse().SetErrorResponse(error);
            return(false);
        }
        private IResponse ReadFromState(IUserSessionData payload)
        {
            if (payload is UserSession)
            {
                var sessionData = GetUserSession();
                return(new UserSessionResponse().SetSuccessResponse(sessionData));
            }

            var error = new ErrorMessage(ErrorCode.UserSessionNotFound);

            return(new UserSessionResponse().SetErrorResponse(error));
        }
        private bool TryUpdateRecord(IUserSessionData requestData, out IResponse response)
        {
            if (requestData is UserPetCareAction)
            {
                var userPetCareAction    = requestData  as UserPetCareAction;
                var requestedInteraction = _interactionRepository.Find(userPetCareAction.InteractionId);
                var metricInteraction    = _interactionRepository.FindAssociated(requestedInteraction);
                var newPetVital          = _userSessionBuilder.RebuildPetVital(metricInteraction, userPetCareAction);
                return(TryPersistRecordUpdate(newPetVital, out response));
            }

            response = new UserSessionResponse().SetErrorResponse(new ErrorMessage(ErrorCode.RequestDataNotRecognised));
            return(false);
        }
        private bool TryPersistRecordUpdate(IUserSessionData processedData, out IResponse response)
        {
            if (processedData is PetVital)
            {
                var          petCareResponse = new UserSessionPetCareResponse();
                var          petMetric       = (processedData as PetVital).ToPetMetricModel();
                ErrorMessage error;
                if (!_petMetricPersister.TryPersistUpdate(petMetric, out error))
                {
                    response = petCareResponse.SetErrorResponse(error);
                    return(false);
                }

                response = petCareResponse.SetSuccessResponse(processedData as PetVital);
                return(true);
            }

            var genericError = new ErrorMessage(ErrorCode.RequestDataNotRecognised);

            response = new UserSessionResponse().SetErrorResponse(genericError);
            return(false);
        }
 private bool TryDeleteRecord(IUserSessionData request, out IResponse response)
 {
     throw new NotImplementedException();
 }