예제 #1
0
        private async void ExistingBatchEvent(BatchEventViewModel batchEventViewModel)
        {
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                OldRecordCouldNotSent();
                return;
            }
            try
            {
                var(success, statusCode) = await _probaHttpClient.SendBatchEventAsync(batchEventViewModel);

                if (!success)
                {
                    OldRecordCouldNotSent();
                    return;
                }

                if (statusCode != HttpStatusCode.OK)
                {
                    OldRecordCouldNotSent();
                    _probaLogger.LogWarning($"couldn't send batch event with {statusCode} status");
                    return;
                }

                OldRecordSent();
            }
            catch (Exception e)
            {
                _probaLogger.LogError(e.Message, e.StackTrace);
                OldRecordCouldNotSent();
            }
        }
예제 #2
0
        private void AddEventToQueue(BaseEventDataViewModel baseEventDataViewModel)
        {
            if (_batchEventViewModel == null || _totalEventCount == 0)
            {
                _batchEventViewModel = new BatchEventViewModel();
                Invoke("SendByTime", MAX_TIME);
            }

            var className = GetClass(baseEventDataViewModel);

            switch (className)
            {
            case "AchievementEvent":
                _batchEventViewModel.Achievements.Add((AchievementEventViewModel)baseEventDataViewModel);
                break;

            case "AdvertisementEvent":
                _batchEventViewModel.Advertisements.Add((AdvertisementEventViewModel)baseEventDataViewModel);
                break;

            case "BusinessEvent":
                _batchEventViewModel.Businesses.Add((BusinessEventViewModel)baseEventDataViewModel);
                break;

            case "ContentViewEvent":
                _batchEventViewModel.ContentViews.Add((ContentViewEventViewModel)baseEventDataViewModel);
                break;

            case "DesignEvent":
                _batchEventViewModel.DesignEvent.Add((DesignEventViewModel)baseEventDataViewModel);
                break;

            case "ProgressionEvent":
                _batchEventViewModel.Progressions.Add((ProgressionEventViewModel)baseEventDataViewModel);
                break;

            case "SocialEvent":
                _batchEventViewModel.Socials.Add((SocialEventViewModel)baseEventDataViewModel);
                break;

            case "TapEvent":
                _batchEventViewModel.Taps.Add((TapEventViewModel)baseEventDataViewModel);
                break;

            default:
                className = "Default";
                break;
            }

            _totalEventCount++;

            if (_totalEventCount >= MAX_EVENT_COUNT)
            {
                if (_sending)
                {
                    return;
                }
                SendBatchEventAsync(_batchEventViewModel);
            }
        }
예제 #3
0
        private async void SendBatchEventAsync(BatchEventViewModel batchEventViewModel)
        {
            if (Application.internetReachability == NetworkReachability.NotReachable || _sending)
            {
                SaveBatchEventInDB(batchEventViewModel);
                return;
            }
            try
            {
                var(success, statusCode) = await _probaHttpClient.SendBatchEventAsync(batchEventViewModel);

                if (!success)
                {
                    SaveBatchEventInDB(batchEventViewModel);
                    return;
                }

                if (statusCode != HttpStatusCode.OK)
                {
                    SaveBatchEventInDB(batchEventViewModel);
                    _probaLogger.LogWarning($"couldn't send batch event with {statusCode} status");
                    return;
                }

                _totalEventCount = 0;
            }
            catch (Exception e)
            {
                _probaLogger.LogError(e.Message, e.StackTrace);
                SaveBatchEventInDB(batchEventViewModel);
            }
        }
예제 #4
0
        /// <summary>Sends a event batch asynchronous.</summary>
        /// <param name="batchEventViewModel">event batch</param>
        /// <returns>
        ///   <br />
        /// </returns>
        internal async Task <(bool sucess, HttpStatusCode statusCode)> SendBatchEventAsync(BatchEventViewModel batchEventViewModel)
        {
            try
            {
                var(success, statusCode, content) = await PostJsonRequestAsync($"{BaseURL}/{APIVersion}/Events/BatchEvent/{PublicKey}", JsonConvert.SerializeObject(batchEventViewModel), CancellationTokenSource);

                return(success ? (success, statusCode) : (default, statusCode));
예제 #5
0
        private void SaveBatchEventInDB(BatchEventViewModel batchEventViewModel)
        {
            var beDB = JsonConvert.SerializeObject(batchEventViewModel);

            DatabaseConnection.InsertUnsentEvent("BATCH_EVENT", beDB);
        }