Пример #1
0
        internal static List <TransactionImportExport> GetTransactionForExport(Account account, string type, DateTime from, DateTime to)
        {
            var transactionsExport = new List <TransactionImportExport>();
            var transactions       = SilverCoinsManager.GetTransactions().Where(x => x.CreatedDate >= from && x.CreatedDate <= to).ToList();

            if (account.Id != 0)
            {
                transactions.Where(x => x.Account == account.Id).ToList();
            }

            if (type != "Both")
            {
                transactions.Where(x => x.Type == type).ToList();
            }

            foreach (var transaction in transactions)
            {
                var category  = SilverCoinsManager.GetCategory(transaction.Category);
                var accountAc = SilverCoinsManager.GetAccount(transaction.Account);
                transactionsExport.Add(new TransactionImportExport
                {
                    Account     = accountAc.Name,
                    Category    = category.Name,
                    Type        = transaction.Type,
                    Amount      = transaction.Amount.ToString("N2"),
                    Currency    = accountAc.Currency,
                    Date        = transaction.CreatedDate.ToString("dd/MM/yyyy"),
                    PaymentType = transaction.PaymentType,
                    Name        = transaction.Name,
                    Balance     = accountAc.Balance.ToString("N2")
                });
            }

            return(transactionsExport);
        }
        private void PopulateListView(Account account)
        {
            if (account.Id == 0)
            {
                var list = SilverCoinsManager.GetTransactions().ToList();
                transactions = list.ToList();
                foreach (var item in list.Where(x => x.Type == "Transfer"))
                {
                    transactions.Insert(transactions.IndexOf(item) + 1, new Transaction()
                    {
                        Id          = item.Id,
                        Name        = item.Name,
                        Category    = item.Category,
                        Amount      = item.Amount * item.CurrencyRate,
                        Account     = item.AccountTransfer,
                        CreatedDate = item.CreatedDate,
                        PaymentType = item.PaymentType,
                        Type        = "Income"
                    });
                }
            }
            else
            {
                transactions = SilverCoinsManager.GetAllTransactionsForAccount(account.Id);
            }

            transactionAdapter = new TransactionListAdapter(Activity, transactions, account);
            listView.Adapter   = transactionAdapter;
        }
Пример #3
0
        internal static List <ObservableArrayList> BarChartData(Account account)
        {
            var transactions = SilverCoinsManager.GetTransactions()
                               .Where(x => x.Type != "Transfer" && x.CreatedDate >= DateTime.Today.AddYears(-1))
                               .OrderBy(x => x.CreatedDate)
                               .ToList();

            if (account.Id != 0)
            {
                transactions = transactions.Where(x => x.Account == account.Id).ToList();
            }

            List <ResultLine> resultListIncome  = GetDataForTransactionsGroupByMonth(transactions.Where(x => x.Type == "Income").ToList());
            List <ResultLine> resultListExpense = GetDataForTransactionsGroupByMonth(transactions.Where(x => x.Type == "Expense").ToList());

            ObservableArrayList listIncome  = new ObservableArrayList();
            ObservableArrayList listExpense = new ObservableArrayList();

            foreach (var item in resultListIncome)
            {
                listIncome.Add(new ChartDataPoint(item.Name, Convert.ToDouble(item.Value)));
            }

            foreach (var item in resultListExpense)
            {
                listExpense.Add(new ChartDataPoint(item.Name, Convert.ToDouble(item.Value)));
            }

            List <ObservableArrayList> dataModel = new List <ObservableArrayList>();

            dataModel.Add(listIncome);
            dataModel.Add(listExpense);

            return(dataModel);
        }
Пример #4
0
        internal static ObservableArrayList PieChartData(Account account)
        {
            List <Transaction> transactions = new List <Transaction>();

            if (account.Id != 0)
            {
                transactions = SilverCoinsManager.GetTransactions().Where(x => x.Type != "Transfer" && x.Account == account.Id).ToList();
            }
            else
            {
                transactions = SilverCoinsManager.GetTransactions().Where(x => x.Type != "Transfer").ToList();
            }

            List <ResultLine> resultList = transactions.GroupBy(x => x.Category)
                                           .Select(r => new ResultLine
            {
                Name  = SilverCoinsManager.GetCategory(r.First().Category).Name,
                Value = r.Sum(s => s.Amount)
            })
                                           .ToList();

            ObservableArrayList list = new ObservableArrayList();

            foreach (var item in resultList)
            {
                list.Add(new ChartDataPoint(item.Name, Convert.ToDouble(item.Value)));
            }

            return(list);
        }
Пример #5
0
        private static ObservableArrayList GetBalanceGroupByMonthPerAccount(Account account)
        {
            var transactions = SilverCoinsManager.GetTransactions()
                               .Where(x => x.Type != "Transfer" &&
                                      x.CreatedDate >= DateTime.Today.AddYears(-1) &&
                                      x.Account == account.Id)
                               .OrderBy(x => x.CreatedDate)
                               .ToList();

            List <ResultLine> resultList = transactions.GroupBy(x => x.CreatedDate.Month)
                                           .Select(r => new ResultLine
            {
                Name  = r.First().CreatedDate.ToString("MMM"),
                Value = r.Sum(x => (x.Type == "Income" ? x.Amount : -x.Amount))
            })
                                           .ToList();

            ObservableArrayList list    = new ObservableArrayList();
            decimal             balance = 0;

            foreach (var item in resultList)
            {
                balance += item.Value;
                list.Add(new ChartDataPoint(item.Name, Convert.ToDouble(balance)));
            }

            return(list);
        }
        private void SaveTransaction()
        {
            decimal oldAmount = 0;

            if (EditMode)
            {
                oldAmount = transaction.Amount;
            }
            Account accountFrom = listOfAccounts.ElementAt(spinnerTransactionAccount.SelectedItemPosition);
            Account accountTo   = listOfAccounts.ElementAt(spinnerTransactionAccountTransfer.SelectedItemPosition);

            transaction.Name         = edtTransactionName.Text;
            transaction.Amount       = Convert.ToDecimal(txtTransactionAmount.Text);
            transaction.Account      = accountFrom.Id;
            transaction.PaymentType  = spinnerTransactionPaymentType.SelectedItem.ToString();
            transaction.Type         = Type;
            transaction.CurrencyRate = 1;

            var date     = Convert.ToDateTime(txtTransactionDate.Text);
            var datetime = new DateTime(date.Year, date.Month, date.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

            transaction.CreatedDate = datetime;

            if (Type == "Transfer")
            {
                transaction.AccountTransfer = accountTo.Id;
                transaction.Category        = SilverCoinsManager.GetCategoryByName("Transfer").Id;

                if (accountFrom.Currency != accountTo.Currency)
                {
                    transaction.CurrencyRate = Convert.ToDecimal(edtCurrencyRate.Text);
                }
                else
                {
                    transaction.CurrencyRate = 1;
                }
            }
            else if (Type == "Income")
            {
                transaction.Category = listOfIncomeCategories.ElementAt(spinnerTransactionCategory.SelectedItemPosition).Id;
            }
            else
            {
                transaction.Category = listOfExpenseCategories.ElementAt(spinnerTransactionCategory.SelectedItemPosition).Id;
            }

            SilverCoinsManager.SaveTransaction(transaction);

            if (EditMode)
            {
                AccountCalculations.AccountCalculations.UpdateBalanceAfterTransactionUpdate(accountFrom, accountTo, transaction, oldAmount);
            }
            else
            {
                AccountCalculations.AccountCalculations.UpdateBalanceAfterTransactionCreate(accountFrom, accountTo, transaction);
            }
            Finish();
        }
Пример #7
0
        private void SaveAccount()
        {
            account.Name        = editName.Text;
            account.Description = editDescription.Text;
            account.Currency    = Regex.Match((string)spinnerCurrency.SelectedItem, @"(?<=\().+?(?=\))").ToString();
            account.Icon        = iconDrawable;

            account.CreatedDate = DateTime.Today;

            SilverCoinsManager.SaveAccount(account);
            Finish();
        }
Пример #8
0
 private void CheckIfCategoryCanBeDeleted(int categoryId)
 {
     if (SilverCoinsManager.GetTransactionsByCategory(categoryId).Any())
     {
         Toast.MakeText(this, Utils.Constants.CategoryDeletionWarning, ToastLength.Short).Show();
     }
     else
     {
         SilverCoinsManager.DeleteCategory(categoryId);
         OnBackPressed();
     }
 }
Пример #9
0
        public static void UpdateBalanceAfterTransactionUpdate(Account accountFrom, Account accountTo, Transaction transaction, decimal oldAmount)
        {
            var difference = oldAmount - transaction.Amount;

            if (transaction.Type == "Transfer")
            {
                accountTo.Balance = accountTo.Balance - (difference * transaction.CurrencyRate);
                SilverCoinsManager.SaveAccount(accountTo);
            }

            accountFrom.Balance = accountFrom.Balance + difference;
            SilverCoinsManager.SaveAccount(accountFrom);
        }
Пример #10
0
 private void DeleteAccount()
 {
     new AlertDialog.Builder(this)
     .SetCancelable(true)
     .SetMessage("Delete this item?")
     .SetPositiveButton("Yes", (sender, args) =>
     {
         SilverCoinsManager.DeleteAccount(account.Id);
         OnBackPressed();
         Finish();
     })
     .SetNegativeButton("No", (sender, args) => { })
     .Show();
 }
Пример #11
0
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            View itemView = convertView;

            if (itemView == null)
            {
                itemView = context.LayoutInflater.Inflate(Resource.Layout.list_view_item_transaction, parent, false);
            }

            Transaction transaction = this[position];
            var         category    = SilverCoinsManager.GetCategory(transaction.Category);
            var         account     = SilverCoinsManager.GetAccount(transaction.Account);

            itemView.FindViewById <ImageView>(Resource.Id.tran_category_icon).SetImageResource(category.Icon != 0 ? category.Icon : Resource.Drawable.ic_launcher);
            itemView.FindViewById <TextView>(Resource.Id.tran_category_name).Text      = category.Name;
            itemView.FindViewById <TextView>(Resource.Id.transaction_name).Text        = transaction.Name;
            itemView.FindViewById <TextView>(Resource.Id.tran_payment_type).Text       = transaction.PaymentType;
            itemView.FindViewById <TextView>(Resource.Id.tran_account).Text            = account.Name;
            itemView.FindViewById <TextView>(Resource.Id.transaction_amount).Text      = transaction.Amount.ToString("N2");
            itemView.FindViewById <TextView>(Resource.Id.transaction_crated_date).Text = transaction.CreatedDate.ToString("dd/MM/yyyy");
            itemView.FindViewById <TextView>(Resource.Id.transaction_currency).Text    = " " + account.Currency;

            if (transaction.Type == "Transfer" && transaction.AccountTransfer == this.account.Id)
            {
                transaction.Type = "Income";
            }

            switch (transaction.Type)
            {
            case "Income":
                itemView.FindViewById <TextView>(Resource.Id.transaction_amount).SetTextColor(Android.Graphics.Color.ForestGreen);
                break;

            case "Expense":
                itemView.FindViewById <TextView>(Resource.Id.transaction_amount).SetTextColor(Android.Graphics.Color.OrangeRed);
                itemView.FindViewById <TextView>(Resource.Id.transaction_amount).Text = "-" + transaction.Amount.ToString("N2");
                break;

            case "Transfer":
                itemView.FindViewById <TextView>(Resource.Id.transaction_amount).SetTextColor(Android.Graphics.Color.OrangeRed);
                itemView.FindViewById <TextView>(Resource.Id.transaction_amount).Text = "-" + transaction.Amount.ToString("N2");
                break;

            default:
                break;
            }

            return(itemView);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            ((HomeActivity)Activity).SupportActionBar.SetDisplayShowTitleEnabled(false);
            ((HomeActivity)Activity).SupportActionBar.SetDisplayShowCustomEnabled(true);
            ((HomeActivity)Activity).SupportActionBar.SetCustomView(Resource.Layout.layout_spinnerAccounts);
            HasOptionsMenu = true;

            view                = inflater.Inflate(Resource.Layout.fragment_overview, null);
            listView            = view.FindViewById <ListView>(Resource.Id.listViewTransactions);
            listView.ItemClick += OnListItemClick;

            listOfAccounts.Insert(0, new Account()
            {
                Name = "All accounts", Id = 0
            });

            spinnerAccounts = Activity.FindViewById <Spinner>(Resource.Id.spinnerAccounts);
            adapterAccounts = new ArrayAdapter <Account>(Activity, Resource.Layout.spinner_item, listOfAccounts);
            adapterAccounts.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            spinnerAccounts.Adapter = adapterAccounts;

            spinnerAccounts.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(SpinnerTransactionAccount_ItemClick);

            FloatingActionButton fab = view.FindViewById <FloatingActionButton>(Resource.Id.fab);

            fab.Click += (o, e) =>
            {
                if (SilverCoinsManager.GetAccounts().ToList().Any())
                {
                    Intent intent = new Intent(fab.Context, typeof(SaveTransactionActivity));
                    StartActivity(intent);
                }
                else
                {
                    new Android.Support.V7.App.AlertDialog.Builder(Activity)
                    .SetCancelable(true)
                    .SetMessage("You need to create account first!")
                    .SetPositiveButton("OK", (sender, args) =>
                    {
                        Intent intent = new Intent(fab.Context, typeof(SaveAccountActivity));
                        StartActivity(intent);
                    })
                    .SetNegativeButton("Cancel", (sender, args) => { })
                    .Show();
                }
            };

            return(view);
        }
Пример #13
0
        private void SaveCategory()
        {
            category.Name        = editName.Text;
            category.Description = editDescription.Text;
            category.Type        = Category.CategoryTypes.Income.ToString() == spinnerCategoryType.SelectedItem.ToString() ? Category.CategoryTypes.Income : Category.CategoryTypes.Expense;
            category.Visible     = 1;
            category.Icon        = iconDrawable;

            if (!editMode)
            {
                category.CreatedDate = DateTime.Today;
            }

            SilverCoinsManager.SaveCategory(category);
            Finish();
        }
 private void DeleteTransaction()
 {
     new AlertDialog.Builder(this)
     .SetCancelable(true)
     .SetMessage("Delete this item?")
     .SetPositiveButton("Yes", (sender, args) =>
     {
         AccountCalculations.AccountCalculations.
         UpdateBalanceAfterTransactionDelete(SilverCoinsManager.GetAccount(transaction.Account),
                                             SilverCoinsManager.GetAccount(transaction.AccountTransfer),
                                             transaction);
         SilverCoinsManager.DeleteTransaction(transaction.Id);
         OnBackPressed();
         Finish();
     })
     .SetNegativeButton("No", (sender, args) => { })
     .Show();
 }
        private void PrepareAccounts()
        {
            Configuration accountConfig = SilverCoinsManager.GetConfigurationRecordByKey("ACCINIT");

            if (accountConfig == null || accountConfig.BooleanValue == false)
            {
                Account[] accounts =
                {
                    new Account()
                    {
                        Name        = "Checking account",
                        Currency    = "EUR",
                        CreatedDate = DateTime.Today,
                        Icon        = Resource.Drawable.euro
                    },
                    new Account()
                    {
                        Name        = "Savings account",
                        Currency    = "EUR",
                        CreatedDate = DateTime.Today,
                        Icon        = Resource.Drawable.deposits
                    },
                    new Account()
                    {
                        Name        = "Cash",
                        Currency    = "EUR",
                        CreatedDate = DateTime.Today,
                        Icon        = Resource.Drawable.cash
                    },
                };

                foreach (var account in accounts)
                {
                    SilverCoinsManager.SaveAccount(account);
                }

                SilverCoinsManager.SaveConfiguration(new Configuration()
                {
                    Name         = "Accounts initalized",
                    Key          = "ACCINIT",
                    BooleanValue = true
                });
            }
        }
        private void FilterTransactions()
        {
            var day     = spinnerDay.SelectedItemPosition;
            var month   = spinnerMonth.SelectedItemPosition;
            var year    = listOfYears[spinnerYear.SelectedItemPosition];
            var account = listOfAccounts[spinnerAccounts.SelectedItemPosition];

            if (day != 0 && month == 0)
            {
                Toast.MakeText(Activity, "Month must be selected!", ToastLength.Short).Show();
            }
            else
            {
                transactions       = SilverCoinsManager.GetTransactionsByDate(day, month, year, account.Id);
                transactionAdapter = new TransactionListAdapter(Activity, transactions, account);
                listView.Adapter   = transactionAdapter;
                showIntervalDialog.Dismiss();
            }
        }
Пример #17
0
        internal static List <ObservableArrayList> ColumnChartData(Account account)
        {
            List <ObservableArrayList> dataModel = new List <ObservableArrayList>();

            if (account.Id == 0)
            {
                var accounts = SilverCoinsManager.GetAccounts().ToList();

                foreach (var item in accounts)
                {
                    dataModel.Add(GetBalanceGroupByMonthPerAccount(item));
                }
            }
            else
            {
                dataModel.Add(GetBalanceGroupByMonthPerAccount(account));
            }

            return(dataModel);
        }
Пример #18
0
        public static void UpdateBalanceAfterTransactionDelete(Account accountFrom, Account accountTo, Transaction transaction)
        {
            if (transaction.Type == "Transfer")
            {
                accountFrom.Balance = accountFrom.Balance + transaction.Amount;
                SilverCoinsManager.SaveAccount(accountFrom);

                accountTo.Balance = accountTo.Balance - (transaction.Amount * transaction.CurrencyRate);
                SilverCoinsManager.SaveAccount(accountTo);
            }
            else if (transaction.Type == "Income")
            {
                accountFrom.Balance = accountFrom.Balance - transaction.Amount;
                SilverCoinsManager.SaveAccount(accountFrom);
            }
            else
            {
                accountFrom.Balance = accountFrom.Balance + transaction.Amount;
                SilverCoinsManager.SaveAccount(accountFrom);
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Toolbar.SetNavigationIcon(Resource.Drawable.ic_cancel);

            Window.SetStatusBarColor(Android.Graphics.Color.ParseColor("#00796B"));

            edtTransactionName = FindViewById <EditText>(Resource.Id.edit_transaction_name);

            txtTransactionAmount      = FindViewById <TextView>(Resource.Id.transaction_ammount);
            txtTransactionCategory    = FindViewById <TextView>(Resource.Id.txt_transaction_category);
            txtTransactionAccount     = FindViewById <TextView>(Resource.Id.txt_transaction_account);
            txtTransactionCurrency    = FindViewById <TextView>(Resource.Id.transaction_currency);
            txtTransactionPaymentType = FindViewById <TextView>(Resource.Id.txt_transaction_payment_type);

            txtInputLayoutTranName = FindViewById <TextInputLayout>(Resource.Id.txtInputLayoutTranName);

            Bundle extras = Intent.Extras;

            if (extras != null)
            {
                EditMode = extras.GetBoolean("EDIT_MODE");
                if (EditMode)
                {
                    var transactionId = Newtonsoft.Json.JsonConvert.DeserializeObject <int>(extras.GetString("TRANSACTION_ID"));
                    transaction               = SilverCoinsManager.GetTransaction(transactionId);
                    Type                      = transaction.Type;
                    edtTransactionName.Text   = transaction.Name;
                    txtTransactionAmount.Text = transaction.Amount.ToString("N2");
                }
            }
            else
            {
                transaction = new Transaction();
            }

            InitalizeTransactionTypes();
            InitalizeSpinners();
            InitalizeDatePicker();
        }
Пример #20
0
        internal static void ImportTransactionsFromList(IEnumerable <TransactionImportExport> transactionsForImport)
        {
            if (transactionsForImport.Any())
            {
                // Get list of accounts and categories from document
                var accountsForImport = transactionsForImport.Select(x => new Account
                {
                    Name        = x.Account,
                    Currency    = x.Currency,
                    Balance     = Convert.ToDecimal(x.Balance),
                    CreatedDate = DateTime.Today,
                    Description = string.Empty,
                    Icon        = Resource.Drawable.cash
                });

                var categoriesForImport = transactionsForImport.Select(x => new Category
                {
                    Name        = x.Category,
                    Type        = x.Type == Category.CategoryTypes.Expense.ToString() ? Category.CategoryTypes.Expense : Category.CategoryTypes.Income,
                    Description = string.Empty,
                    CreatedDate = DateTime.Today,
                    Visible     = 1,
                    Icon        = Resource.Drawable.salary
                });

                var accounts   = SilverCoinsManager.GetAccounts();
                var categories = SilverCoinsManager.GetCategories();

                // Find accounts and categories that do not exist in database
                var newAccounts   = accountsForImport.Where(x => !accounts.Any(s => s.Name == x.Name));
                var newCategories = categoriesForImport.Where(x => !categories.Any(s => s.Name == x.Name));

                // Insert missing accounts and categories
                if (newAccounts.Any())
                {
                    foreach (var account in newAccounts)
                    {
                        SilverCoinsManager.SaveAccount(account);
                    }
                }

                if (newCategories.Any())
                {
                    foreach (var category in newCategories)
                    {
                        SilverCoinsManager.SaveCategory(category);
                    }
                }

                foreach (var transaction in transactionsForImport)
                {
                    SilverCoinsManager.SaveTransaction(new Transaction
                    {
                        Name        = transaction.Name,
                        Account     = SilverCoinsManager.GetAccountByName(transaction.Account).Id,
                        Category    = SilverCoinsManager.GetCategoryByName(transaction.Category).Id,
                        Amount      = Convert.ToDecimal(transaction.Amount),
                        PaymentType = transaction.PaymentType,
                        Type        = transaction.Type,
                        CreatedDate = DateTime.Now
                    });
                }
            }
        }
        private void InitalizeSpinners()
        {
            adapterAccount         = new ArrayAdapter <Account>(this, Resource.Layout.spinner_item, listOfAccounts);
            adapterAccountTransfer = new ArrayAdapter <Account>(this, Resource.Layout.spinner_item, listOfAccounts);
            adapterCategory        = new ArrayAdapter <Category>(this, Resource.Layout.spinner_item, EditMode ? (transaction.Type == "Income" ? listOfIncomeCategories : listOfExpenseCategories) : listOfIncomeCategories);
            adapterPaymentType     = new ArrayAdapter <string>(this, Resource.Layout.spinner_item, paymentTypes);

            adapterAccount.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            adapterCategory.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            adapterPaymentType.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            adapterAccountTransfer.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);

            spinnerTransactionAccount         = FindViewById <Spinner>(Resource.Id.spinner_transaction_account);
            spinnerTransactionCategory        = FindViewById <Spinner>(Resource.Id.spinner_transaction_category);
            spinnerTransactionPaymentType     = FindViewById <Spinner>(Resource.Id.spinner_transaction_payment_type);
            spinnerTransactionAccountTransfer = FindViewById <Spinner>(Resource.Id.spinner_transaction_account_transfer);

            spinnerTransactionAccount.Adapter         = adapterAccount;
            spinnerTransactionCategory.Adapter        = adapterCategory;
            spinnerTransactionPaymentType.Adapter     = adapterPaymentType;
            spinnerTransactionAccountTransfer.Adapter = adapterAccountTransfer;

            spinnerTransactionAccount.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(SpinnerTransactionAccount_ItemClick);

            if (EditMode)
            {
                spinnerTransactionAccount.SetSelection(GetIndex(spinnerTransactionAccount, SilverCoinsManager.GetAccount(transaction.Account).Name));
                spinnerTransactionCategory.SetSelection(GetIndex(spinnerTransactionCategory, SilverCoinsManager.GetCategory(transaction.Category).Name));
                spinnerTransactionPaymentType.SetSelection(adapterPaymentType.GetPosition(transaction.PaymentType));
                if (transaction.AccountTransfer != 0)
                {
                    spinnerTransactionAccountTransfer.SetSelection(GetIndex(spinnerTransactionAccountTransfer, SilverCoinsManager.GetAccount(transaction.AccountTransfer).Name));
                }

                switch (transaction.Type)
                {
                case "Income":
                    spinnerTransactionAccountTransfer.Visibility = ViewStates.Gone;
                    break;

                case "Expense":
                    spinnerTransactionAccountTransfer.Visibility = ViewStates.Gone;
                    break;

                case "Transfer":
                    spinnerTransactionCategory.Visibility = ViewStates.Gone;
                    break;

                default:
                    break;
                }
            }
            else
            {
                spinnerTransactionAccountTransfer.Visibility = ViewStates.Gone;
            }
        }
        private void PrepareCategories()
        {
            Configuration categoryConfig = SilverCoinsManager.GetConfigurationRecordByKey("CATINIT");

            if (categoryConfig == null || categoryConfig.BooleanValue == false)
            {
                Category[] categories =
                {
                    new Category {
                        Name        = "Salary",
                        Description = "",
                        Type        = Category.CategoryTypes.Income,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.salary,
                    },
                    new Category {
                        Name        = "Groceries",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.groceries,
                    },
                    new Category {
                        Name        = "Eating out",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.eating_out,
                    },
                    new Category {
                        Name        = "Holidays",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.vacation,
                    },
                    new Category {
                        Name        = "Sport",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.sports,
                    },
                    new Category {
                        Name        = "Car",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.car,
                    },
                    new Category {
                        Name        = "Shopping",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.shopping,
                    },
                    new Category {
                        Name        = "Entertainment",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.entertainment,
                    },
                    new Category {
                        Name        = "Pets",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.pets,
                    },
                    new Category {
                        Name        = "Kids",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.kids,
                    },
                    new Category {
                        Name        = "Electronics",
                        Description = "",
                        Type        = Category.CategoryTypes.Expense,
                        CreatedDate = DateTime.Today,
                        Visible     = 1,
                        Icon        = Resource.Drawable.electronics,
                    },
                    new Category {
                        Name        = "Transfer",
                        Description = "",
                        Type        = Category.CategoryTypes.MoneyTransfer,
                        CreatedDate = DateTime.Today,
                        Visible     = 0,
                        Icon        = Resource.Drawable.transfer
                    },
                };

                foreach (var category in categories)
                {
                    SilverCoinsManager.SaveCategory(category);
                }

                SilverCoinsManager.SaveConfiguration(new Configuration()
                {
                    Name         = "Categories initalized",
                    Key          = "CATINIT",
                    BooleanValue = true
                });
            }
        }