Exemple #1
0
 private async void checkDefaultedLoanToQue(SecondMarketItem item, int discountRate)
 {
     if (item.LastPaymentDate > DateTime.Now.AddDays(35) && item.DesiredDiscountRate <= discountRate)
     {
         defaultedLoansQue.Add(item);
     }
 }
Exemple #2
0
        private async void processRequest(HttpListenerContext context, int[] buyForXDaysArr)
        {
            SecondMarketItem secondMarketItem = null;
            // MessageBox.Show("Gavau..." + context.Request.Headers.ToString());
            var body = new StreamReader(context.Request.InputStream).ReadToEnd();

            JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();

            try
            {
                ApiResultEvent apiResultEvent = jsonSerializer.Deserialize <ApiResultEvent>(body);
                secondMarketItem = apiResultEvent.Payload;
            }
            catch (Exception e) { }



            byte[] b = Encoding.UTF8.GetBytes("ACK");
            context.Response.StatusCode      = 200;
            context.Response.KeepAlive       = false;
            context.Response.ContentLength64 = b.Length;

            var output = context.Response.OutputStream;

            output.Write(b, 0, b.Length);
            context.Response.Close();

            if (secondMarketItem.LoanStatusCode == 2)
            {
                checkCurrentLoan(secondMarketItem, buyForXDaysArr[(int)DateTime.Today.DayOfWeek], maxPrice);
            }
            else
            {
                checkDefaultedLoanToQue(secondMarketItem, DEFAULT_DISCOUNT);
            }

            if (secondMarketItem.DesiredDiscountRate <= 0)
            {
                string log = "";
                log = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\t" + secondMarketItem.LoanStatusCode.ToString() + "\t" + secondMarketItem.LoanPartId.ToString() + "\t" + secondMarketItem.UserName + "\t" +
                      secondMarketItem.PrincipalRemaining.ToString("0.##€") + "\t" + secondMarketItem.DesiredDiscountRate.ToString("0.##") + "\t" +
                      secondMarketItem.Price.ToString("0.##€") + "\t" + secondMarketItem.PrincipalRepaid.ToString("0.##€") + "\t" +
                      secondMarketItem.LastPaymentDate.ToString() + "\t" + secondMarketItem.NextPaymentDate.ToString() + "\t" + secondMarketItem.NextPaymentNr.ToString("0.##") + "\t" +
                      secondMarketItem.LateAmountTotal.ToString("0.##€") + "\t" + secondMarketItem.ReScheduledOn.ToString();
                textBox3.Invoke(new Action(() => textBox3.AppendText(log + "\r\n")));
            }
        }
Exemple #3
0
        private async void checkCurrentLoan(SecondMarketItem item, int buyForNextXDays, decimal maxPrice)
        {
            bool onlyDiscounted = true;
            int  minPaymets     = 1;

            if (BUY_FIRST_PAYMENT)
            {
                minPaymets = 0;
            }
            string   pastaba      = "\t";
            DateTime nextPaymentT = DateTime.Today.AddDays(buyForNextXDays);

            bool buyThisLoan = true;
            bool logThisLoan = true;

            if (item.DesiredDiscountRate > 0)
            {
                pastaba    += "Su antkainiu ";
                buyThisLoan = false;
                logThisLoan = false;
            }

            if (item.DesiredDiscountRate == 0 && item.NextPaymentDate > nextPaymentT)
            {
                pastaba    += "Neatitinka kriterijai ";
                buyThisLoan = false;
            }

            if (item.DesiredDiscountRate == 0 && auctionNumbers.Contains(item.AuctionNumber))
            {
                pastaba    += "Jau turim ";
                buyThisLoan = false;
            }

            if (item.Price > maxPrice)
            {
                pastaba    += "Brangu ";
                buyThisLoan = false;
            }

            if (item.NextPaymentNr <= minPaymets)
            {
                pastaba    += "Mažai įmokų ";
                buyThisLoan = false;
            }

            if (item.LateAmountTotal > 0)
            {
                pastaba    += string.Format("Vėluojanti suma {0} ", item.LateAmountTotal.ToString("0.##€"));
                buyThisLoan = false;
            }

            if (item.DesiredDiscountRate == 0 && item.LastPaymentDate > DateTime.Today.AddDays(-20))
            {
                pastaba    += "Nesenas mokėjimas ";
                buyThisLoan = false;
            }
            int daysSpan = 0;

            if (item.LastPaymentDate != null)
            {
                daysSpan = (int)(item.NextPaymentDate - item.LastPaymentDate).Value.TotalDays;
            }

            if (daysSpan > 45)
            {
                pastaba    += "Didelis tarpas ";
                buyThisLoan = false;
            }

            string rowString = "";
            string buyFile;
            string currFile;

            if (item.DesiredDiscountRate < 0)
            {
                totalDiscountedLoans++;
                totalDiscountedPrice += item.Price;
                rowString             = "%%\t";
                buyFile  = "buydiscounted.txt";
                currFile = "discLoans.txt";
            }
            else
            {
                totalLoans++;
                totalPrice += item.Price;
                rowString   = "--\t";
                buyFile     = "buyloans.txt";
                currFile    = "currLoans.txt";
            }

            rowString += DateTime.Now.ToShortDateString() + DateTime.Now.ToLongTimeString() + "\t" + item.LoanPartId.ToString() + "\t" + item.UserName + "\t" +
                         item.PrincipalRemaining.ToString("0.##€") + "\t" + item.DesiredDiscountRate.ToString("0.##") + "\t" +
                         item.Price.ToString("0.##€") + "\t" + item.PrincipalRepaid.ToString("0.##€") + "\t" +
                         item.LastPaymentDate.ToString() + "\t" + item.NextPaymentDate.ToString() + "\t" + item.NextPaymentNr.ToString("0.##") + "\t" +
                         item.LateAmountTotal.ToString("0.##€") + "\t" + item.ReScheduledOn.ToString();

            if (buyThisLoan)
            {
                var list = new List <Guid>();
                list.Add(item.Id);
                pastaba += "Perkam... ";
                int buyStatusCode = await apiClient.BuySecondaryMarketItem(list);

                if (buyStatusCode == 202)
                {
                    pastaba += " Nupirkom!";
                    if (onlyDiscounted)
                    {
                        discountedLoans++;
                        totalDiscountedBuyPrice += item.Price;
                    }
                    else
                    {
                        buyLoans++;
                        totalBuyPrice += item.Price;
                    }

                    auctionNumbers.Add(item.AuctionNumber);

                    WriteToFileThreadSafe(rowString + pastaba, buyFile);
                }
                else
                {
                    switch (buyStatusCode)
                    {
                    case 400:
                        pastaba += "No items specified";
                        break;

                    case 401:
                        pastaba += "Too many items";
                        break;

                    case 402:
                        pastaba += "User is not Authorized";
                        break;

                    case 403:
                        pastaba += "User has no rights";
                        break;

                    case 404:
                        pastaba += "Not found";
                        break;

                    case 409:
                        pastaba += "Investment cannot be bought";
                        break;

                    default:
                        pastaba += buyStatusCode.ToString();
                        break;
                    }
                }
            }



            if (logThisLoan)
            {
                WriteToFileThreadSafe(rowString + pastaba, currFile);
            }


            //        using (System.IO.StreamWriter file = new System.IO.StreamWriter(currFile, true))
            //        {
            //            file.WriteLine(rowString + pastaba);
            //       }
        }