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(); } }
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); } }
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); } }
/// <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));
private void SaveBatchEventInDB(BatchEventViewModel batchEventViewModel) { var beDB = JsonConvert.SerializeObject(batchEventViewModel); DatabaseConnection.InsertUnsentEvent("BATCH_EVENT", beDB); }