Example #1
0
        public async Task <DealerResponse> AddCredit(StationaryCredit stationaryCredit)
        {
            await connection.InsertAsync(stationaryCredit);

            List <object> payload = new List <object>();

            payload.Add(stationaryCredit);
            return(App.MiddleDealer.OnEvent(MessageAction.BuyCredit, payload));
        }
Example #2
0
        private async void BuyIcon_Tapped(object sender, EventArgs e)
        {
            if (credit.Interest != null && credit.Duration != null && credit.Cost != null)
            {
                if (credit.IsAffordable())
                {
                    AppSettings setting = (await App.LocalDataBase.GetAppSettings())[0];
                    await App.LocalDataBase.ChangeAppTime(DateTime.Parse(setting.LastRealLogin));
                    setting = (await App.LocalDataBase.GetAppSettings())[0];
                    var creditListView = new CreditListView();
                    creditListView.BindingContext = credit;
                    StationaryCredit stationaryCredit = new StationaryCredit();
                    stationaryCredit.Interest = (double)credit.Interest;
                    stationaryCredit.Duration = (double)credit.Duration;
                    stationaryCredit.Cost = (double)credit.Cost;
                    stationaryCredit.DateBought = DateTime.Parse(setting.LastRealLogin);
                    stationaryCredit.MonthsRemaining = (double)credit.Duration;
                    stationaryCredit.LatestPayment = DateTime.Parse(setting.LastLogin);
                    stationaryCredit.AppDateBought = DateTime.Parse(setting.LastLogin);
                    DealerResponse response = await App.LocalDataBase.AddCredit(stationaryCredit);
                    List<StationaryCredit> credits = await App.LocalDataBase.GetCredits();
                    if (response == DealerResponse.Success)
                    {
                        //await DisplayAlert("", "Operation Successful", "OK");
                        await Navigation.PushAsync(new MainView());
                    }
                    else
                    {
                        await DisplayAlert("", "Something went wrong, we're sorry", "OK");
                    }


                }
                else
                {
                    await DisplayAlert("", "You cannot afford the credit", "OK");
                }
            }
            else
            {
                await DisplayAlert("", "Please fill in all the fields", "OK");
            }
        }
Example #3
0
        public DealerResponse OnMessageReceived(MessageAction message, List <object> payload)
        {
            Person         person   = App.User;
            DealerResponse response = DealerResponse.Unreachable;

            switch (message)
            {
            case MessageAction.AddedAuctionBundle:
            {
                person = App.User;

                var    auctionBundle = payload[0] as AuctionBundle;
                double numberToBuy   = double.Parse(auctionBundle.Number, System.Globalization.CultureInfo.InvariantCulture);
                if (payload.Count == 1)
                {
                    double auxNumber   = double.Parse(auctionBundle.Number, System.Globalization.CultureInfo.InvariantCulture);
                    double amountToPay = auctionBundle.CloseValueAtDateBought * auxNumber;
                    person.Amount -= amountToPay;

                    AuctionBundleForHistory bundle = new AuctionBundleForHistory(auctionBundle.Symbol, auctionBundle.Name, auctionBundle.OpenValueAtDateBought, auctionBundle.CloseValueAtDateBought, auctionBundle.DateBought, auctionBundle.Number, AuctionAction.BOUGHT);;
                    bundle.PersonID = person.Id;
                    App.LocalDataBase.AddAuctionBundleToHistory(bundle);
                    App.LocalDataBase.SavePerson(person);
                    response = DealerResponse.Success;
                }
                else
                {
                    AuctionBundleForDb bundleForSymbol = payload[1] as AuctionBundleForDb;
                    bundleForSymbol.MedianValue = ((bundleForSymbol.MedianValue * bundleForSymbol.Number) + (numberToBuy * auctionBundle.CloseValueAtDateBought)) / (double.Parse(auctionBundle.Number, System.Globalization.CultureInfo.InvariantCulture) + bundleForSymbol.Number);
                    bundleForSymbol.Number     += double.Parse(auctionBundle.Number, System.Globalization.CultureInfo.InvariantCulture);
                    AuctionBundleForHistory bundle = new AuctionBundleForHistory(auctionBundle.Symbol, auctionBundle.Name, auctionBundle.OpenValueAtDateBought, auctionBundle.CloseValueAtDateBought, auctionBundle.DateBought, auctionBundle.Number, AuctionAction.BOUGHT);;
                    bundle.PersonID = person.Id;
                    person.Amount  -= numberToBuy * auctionBundle.CloseValueAtDateBought;
                    App.LocalDataBase.SavePerson(person);
                    App.LocalDataBase.AddAuctionBundleToHistory(bundle);
                    SaveAuctionBundle(bundleForSymbol);
                    response = DealerResponse.Success;
                }
                break;
            }

            case MessageAction.GetAllDepositedMoney:
            {
                person = App.User;
                List <Income> incomes = new List <Income>();
                foreach (object o in payload)
                {
                    incomes.Add((Income)o);
                }
                foreach (Income i in incomes)
                {
                    person.Amount += i.AbsoluteValue + i.OverTimeAddition;
                    DeleteIncome(i);
                }

                return(DealerResponse.Success);

                break;
            }

            case MessageAction.ManageIncomes:
            {
                List <Income> incomes = new List <Income>();
                for (int i = 0; i < payload.Count - 1; i++)
                {
                    incomes.Add((Income)payload[i]);
                }
                AppSettings setting = payload[payload.Count - 1] as AppSettings;
                foreach (Income i in incomes)
                {
                    if (i.Times != -1)
                    {
                        if (i.TimesLeft > 0 && i.LastRealPayment != null)
                        {
                            DateTime lastRealLogin = DateTime.Parse(setting.LastRealLogin);
                            TimeSpan span          = lastRealLogin.Subtract(DateTime.Parse(i.LastRealSupposedPayment));
                            double   appMinutes    = span.TotalMinutes * App.Multiplier;

                            if (appMinutes > i.Frequency)
                            {
                                // se sustrage/se adauga la persoana cat trebuie sa plateasca


                                double timesToSubtract = appMinutes / i.Frequency;
                                timesToSubtract           = Math.Floor(timesToSubtract);
                                i.TimesLeft              -= int.Parse(Math.Floor(timesToSubtract).ToString());
                                i.LastSupposedPayment     = (DateTime.Parse(i.LastSupposedPayment).AddMinutes(timesToSubtract * i.Frequency)).ToString();
                                i.LastRealSupposedPayment = (DateTime.Parse(i.LastRealSupposedPayment).AddMinutes((timesToSubtract * i.Frequency) / App.Multiplier)).ToString();
                                i.LastAppPayment          = setting.LastLogin;
                                i.LastRealPayment         = setting.LastRealLogin;
                                SaveIncome(i);
                                person.Amount += (i.AbsoluteValue * timesToSubtract);
                                SavePerson(person);
                            }
                        }
                    }
                    else
                    {
                        switch (i.Category)
                        {
                        case IncomeCategory.DefaultDeposit:
                        {
                            DateTime lastRealLogin = DateTime.Parse(setting.LastRealLogin);
                            TimeSpan span          = lastRealLogin.Subtract(DateTime.Parse(i.LastRealSupposedPayment));
                            double   appMinutes    = span.TotalMinutes * App.Multiplier;
                            if (appMinutes > i.Frequency)
                            {
                                double timesToSubtract = appMinutes / i.Frequency;
                                timesToSubtract           = Math.Floor(timesToSubtract);
                                i.OverTimeAddition       += Math.Floor(timesToSubtract) * ((i.DepositInterest / 100) * i.AbsoluteValue);
                                i.LastSupposedPayment     = (DateTime.Parse(i.LastSupposedPayment).AddMinutes(timesToSubtract * i.Frequency)).ToString();
                                i.LastRealSupposedPayment = (DateTime.Parse(i.LastRealSupposedPayment).AddMinutes((timesToSubtract * i.Frequency) / App.Multiplier)).ToString();
                                i.LastAppPayment          = setting.LastLogin;
                                i.LastRealPayment         = setting.LastRealLogin;
                                SaveIncome(i);
                            }
                            break;
                        }

                        case IncomeCategory.Job:
                        {
                            DateTime lastRealLogin = DateTime.Parse(setting.LastRealLogin);
                            TimeSpan span          = lastRealLogin.Subtract(DateTime.Parse(i.LastRealSupposedPayment));
                            double   appMinutes    = span.TotalMinutes * App.Multiplier;
                            if (appMinutes > i.Frequency)
                            {
                                double timesToSubtract = appMinutes / i.Frequency;
                                timesToSubtract = Math.Floor(timesToSubtract);
                                // se adauga la person banii
                                i.LastSupposedPayment     = (DateTime.Parse(i.LastSupposedPayment).AddMinutes(timesToSubtract * i.Frequency)).ToString();
                                i.LastRealSupposedPayment = (DateTime.Parse(i.LastRealSupposedPayment).AddMinutes((timesToSubtract * i.Frequency) / App.Multiplier)).ToString();
                                i.LastAppPayment          = setting.LastLogin;
                                i.LastRealPayment         = setting.LastRealLogin;
                                person.Amount            += i.AbsoluteValue * timesToSubtract;
                                SavePerson(person);
                                SaveIncome(i);
                            }
                            break;
                        }
                        }
                    }
                }

                return(DealerResponse.Success);

                break;
            }

            case MessageAction.BuyCredit: {
                StationaryCredit credit = payload[0] as StationaryCredit;
                Income           income = new Income();
                income.Category      = IncomeCategory.Credit;
                income.AbsoluteValue = (-1) * (((credit.Cost * (100 + credit.Interest)) / 100) / credit.Duration);
                income.Periodical    = true;
                income.Frequency     = 30;
                // contracttime, lastpayment, lastrealpayment, lastsupppayment, lastrealsupppayment
                income.Times                   = (int)credit.Duration;
                income.TimesLeft               = (int)(income.Times);
                income.ContractTime            = credit.DateBought.ToString();
                income.LastRealPayment         = credit.DateBought.ToString();
                income.LastAppPayment          = credit.AppDateBought.ToString();
                income.LastRealSupposedPayment = credit.DateBought.ToString();
                income.LastSupposedPayment     = credit.AppDateBought.ToString();
                AddIncome(income);
                response = DealerResponse.Success;
                break;
            }

            case MessageAction.SellAuctionBundle:
            {
                AuctionBundle      auctionBundle   = payload[0] as AuctionBundle;
                AuctionBundleForDb bundleForSymbol = payload[1] as AuctionBundleForDb;
                double             numberToSell    = double.Parse(auctionBundle.Number, System.Globalization.CultureInfo.InvariantCulture);
                if ((bundleForSymbol.Number - numberToSell) >= 0)
                {
                    bundleForSymbol.Number -= numberToSell;
                    App.LocalDataBase.SaveAuctionBundle(bundleForSymbol);
                    person.Amount += numberToSell * auctionBundle.CloseValueAtDateBought;
                    AuctionBundleForHistory bundle = new AuctionBundleForHistory(auctionBundle.Symbol, auctionBundle.Name, auctionBundle.OpenValueAtDateBought, auctionBundle.CloseValueAtDateBought, auctionBundle.DateBought, auctionBundle.Number, AuctionAction.SOLD);;
                    bundle.PersonID = person.Id;
                    App.LocalDataBase.AddAuctionBundleToHistory(bundle);
                    App.LocalDataBase.SavePerson(person);
                    App.LocalDataBase.SaveAuctionBundle(bundleForSymbol);
                    response = DealerResponse.Success;
                }
                else
                {
                    return(DealerResponse.NotEnoughAuctions);
                }


                break;
            }
            }

            return(response);
        }
Example #4
0
 public async Task <int> SaveCredit(StationaryCredit stationaryCredit)
 {
     return(await connection.UpdateAsync(stationaryCredit));
 }