/// <summary> /// Write <seealso cref="DataModel"/> to data storage contoller at defined random index. Then write that index to CurrentCategory index collection, and save changes of category storage controller. /// </summary> /// <param name="category">Adding data</param> public void AddData(DataModel data, CategoryModel toCategory) { List <int> usingIndexes = GetUsingDataIndexes(); int maxValue = dataController.Count(); int newIndex = random.Next(0, maxValue); while (usingIndexes.Contains(newIndex)) { newIndex = random.Next(0, maxValue); } dataController.PasteAt(SecureManager.GetIndexOf(newIndex), data); List <CategoryModel> categories = categoryController.ToList(); for (int i = 0; i < categories.Count; i++) { if (categories[i].Equals(toCategory)) { CategoryModel newCategory = new CategoryModel { DataIndexes = new List <int>(toCategory.DataIndexes), Name = toCategory.Name }; newCategory.DataIndexes.Add(newIndex); categoryController.PasteAt(i, newCategory); break; } } }
/// <summary> /// Replace old data by new. /// </summary> public void ReplaceData(DataModel oldData, DataModel newData) { List <int> usingIndexes = GetUsingDataIndexes(); foreach (var index in usingIndexes) { if (dataController.Get(SecureManager.GetIndexOf(index)).Equals(oldData)) { dataController.PasteAt(SecureManager.GetIndexOf(index), newData); break; } } }
/// <summary> /// Get list of data referenced in CurrentCategory. /// </summary> /// <returns></returns> public List <DataModel> GetData(CategoryModel ofCategory) { List <DataModel> dataList = new List <DataModel>(); if (ofCategory.DataIndexes.Count == 0) { return(dataList); } dataList.Capacity = ofCategory.DataIndexes.Count; foreach (var dataIndex in ofCategory.DataIndexes) { dataList.Add(dataController.Get(SecureManager.GetIndexOf(dataIndex))); } return(dataList); }
/// <summary> /// Finds which category refers to this data, and remove this reference. /// </summary> /// <param name="data">Data to remove.</param> public void RemoveData(DataModel data) { List <CategoryModel> categories = GetCategories(); for (int i = 0; i < categories.Count; i++) { foreach (var dataIndex in categories[i].DataIndexes) { if (dataController.Get(SecureManager.GetIndexOf(dataIndex)).Equals(data)) { CategoryModel newCategory = new CategoryModel { DataIndexes = new List <int>(categories[i].DataIndexes), Name = categories[i].Name }; newCategory.DataIndexes.Remove(dataIndex); categoryController.PasteAt(i, newCategory); return; } } } }
private void SecureStorage() { var dataIndexes = GetUsingDataIndexes(); if (dataIndexes.Count == 0) { return; } List <DataModel> data = new List <DataModel>(); foreach (var index in dataIndexes) { data.Add(dataController.Get(SecureManager.GetIndexOf(index))); } Random rng = new Random(); DataGenerator generator = new DataGenerator(); int storageLength = dataController.Count(); foreach (var item in data) { for (int i = 0; i < storageLength / (50 * data.Count); i++) { int index; do { index = rng.Next(storageLength); } while (dataIndexes.Contains(index)); dataController.PasteAt(SecureManager.GetIndexOf(index), new DataModel { Date = item.Date, Description = item.Description, Login = item.Login, Password = generator.GenerateRandomPassword(item.Password.Length) }); } } }
private void MakePayment() { try { LoadingScreen.ShowLoading(this.View); cardPayment.Card = GatherCardDetails(); SubmitButton.Disable(); _paymentService.MakePayment(cardPayment, new ClientService()).ContinueWith(reponse => { if (reponse.Exception != null) { LoadingScreen.HideLoading(); DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); reponse.Exception.FlattenToJudoFailure(failureCallback); }); } else { var result = reponse.Result; if (JudoSDKManager.Instance.ThreeDSecureEnabled && result.Response != null && result.Response.GetType() == typeof(PaymentRequiresThreeDSecureModel)) { var threedDSecureReceipt = result.Response as PaymentRequiresThreeDSecureModel; SecureManager.SummonThreeDSecure(threedDSecureReceipt, SecureWebView); } else { if (result != null && !result.HasError && result.Response.Result != "Declined") { var paymentreceipt = result.Response as PaymentReceiptModel; if (paymentreceipt != null) { // call success callback if (successCallback != null) { DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); successCallback(paymentreceipt); }); } } else { var threedDSecureReceipt = result.Response as PaymentRequiresThreeDSecureModel; if (threedDSecureReceipt != null) { DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); failureCallback(new JudoError { ApiError = new JudoPayDotNet.Errors.JudoApiErrorModel { ErrorMessage = "Account requires 3D Secure but application is not configured to accept it", ErrorType = JudoApiError.General_Error, ModelErrors = null } }); }); } else { throw new Exception("JudoXamarinSDK: unable to find the receipt in response."); } } } else { // Failure callback if (failureCallback != null) { var judoError = new JudoError { ApiError = result != null ? result.Error : null }; var paymentreceipt = result != null ? result.Response as PaymentReceiptModel : null; if (paymentreceipt != null) { // send receipt even we got card declined DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); failureCallback(judoError, paymentreceipt); }); } else { DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); failureCallback(judoError); }); } } } LoadingScreen.HideLoading(); } } }); } catch (Exception ex) { LoadingScreen.HideLoading(); // Failure callback if (failureCallback != null) { var judoError = new JudoError { Exception = ex }; DispatchQueue.MainQueue.DispatchAfter(DispatchTime.Now, () => { NavigationController.CloseView(); failureCallback(judoError); }); } } }