Exemplo n.º 1
0
        public List <ExportHistory> GetExportHistory()
        {
            var request = new RestRequest("/export/history", Method.GET);

            request.AddHeader("x-api-key", _apiToken);
            request.AddHeader("x-api-user", _apiUser);

            var response = _restClient.Execute(request);

            //this is messy, eventually switch to a CSV parser
            var rows = response.Content.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
            var list = new List <ExportHistory>();

            foreach (var row in rows)
            {
                var split  = Regex.Split(row, ",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
                var fields = new List <string>();
                foreach (var item  in split)
                {
                    fields.Add(item.Replace("\"", ""));
                }
                DateTime histDate;
                if (fields.Count == 5 && DateTime.TryParse(fields[3], out histDate))
                {
                    var history = new ExportHistory()
                    {
                        TaskName = fields[0],
                        TaskID   = fields[1],
                        TaskType = fields[2],
                        Date     = histDate,
                        Value    = Convert.ToDouble(fields[4])
                    };
                    list.Add(history);
                }
            }

            return(list);
        }
Exemplo n.º 2
0
 public void Add(ExportHistory exportHistory)
 {
     _history.Add(exportHistory);
 }
Exemplo n.º 3
0
        static void exportIncome(IFlyMiningEntityDI fDb, SiteContent _siteSelector)
        {
            MailSender             mailSender      = new MailSender(fDb, _siteSelector, new FlySmtpClient());
            List <ExportIncome>    exportList      = new List <ExportIncome>();
            List <RsBankPayout>    payoutList      = new List <RsBankPayout>();
            List <ExportHistory>   historyList     = new List <ExportHistory>();
            List <ReferralPayment> refPaymentsList = new List <ReferralPayment>();
            var requests = Settings.PaymentRequestListAll(fDb, _siteSelector).Where(t => t.Valid == true && t.Confirmed == true);
            List <UserProfile2> users_list = fDb.UserProfile2.Where(t => requests.Any(y => y.userId == t.Id)).ToList();

            foreach (PaymentRequest request in requests.ToList())
            {
                Decimal payoutFee = 0;
                try
                {
                    if (request.Type != null)
                    {
                        payoutFee = Settings.withdrawFee(request.Type, request.CryptoCurrency);
                    }
                    else
                    {
                        request.Type = "R1";
                        payoutFee    = Settings.withdrawFee(request.Type, request.CryptoCurrency);
                    }
                    UserProfile2 user = users_list.SingleOrDefault(t => t.Id == request.userId);
                    List <RsBankAccountBalanceView> accountBalanceList = Settings.rsBalanceList(fDb, user, _siteSelector).Where(t => t.Currency == request.CryptoCurrency).ToList();
                    if (user == null)
                    {
                        Logger.AddLogRecord("Invalid request.Wrong userid " + request.userId.ToString());
                        fDb.PaymentRequests.Remove(request);
                        continue;
                    }
                    if (request.WalletDestinision == "")
                    {
                        Logger.AddLogRecord("Invalid request.Invalid wallet  " + request.WalletDestinision.ToString());
                        fDb.PaymentRequests.Remove(request);
                        continue;
                    }
                    decimal         currentBalance = 0;
                    UserBalanceData balanceData    = fDb.UserBalanceDatas.SingleOrDefault(t => t.userId == user.Id);
                    if (balanceData == null)
                    {
                        continue;
                    }
                    currentBalance = balanceData.Balance(_siteSelector, request.CryptoCurrency);
                    if (currentBalance < payoutFee)
                    {
                        Logger.AddLogRecord(currentBalance + "<" + payoutFee + " for paymentRequest " + request.id);
                        request.Valid = false;
                        continue;
                    }
                    foreach (RsBankAccountBalanceView account in accountBalanceList.Where(t => t.Type == "contract"))
                    {
                        Contract contract = fDb.Contracts.SingleOrDefault(t => t.TxID == account.RsTxId);
                        if (contract == null)
                        {
                            continue;
                        }
                        ExportHistory newHistory = new ExportHistory(request.CryptoCurrency)
                        {
                            Type       = 2,
                            UserId     = user.Id,
                            income     = 0,
                            ContractID = contract.id,
                            hashrate   = contract.hashrate,
                            Referral   = false
                        };
                        newHistory.income = account.AmountIncome ?? 0;
                        ExportIncome newExport = new ExportIncome(request.CryptoCurrency)
                        {
                            userId     = user.Id,
                            Wallet     = request.WalletDestinision,
                            RequestID  = request.id,
                            Referral   = false,
                            ContractID = contract.id,
                            Sum        = account.Amount.Value
                        };
                        if (newExport.Sum < 0)
                        {
                            Logger.AddLogRecord("newExport less then 0 : Income =" + newExport.Sum.ToString(new CultureInfo("en")));
                            continue;
                        }
                        int selector        = Settings.ConvertSelectorToInt(_siteSelector);
                        var MaintenanceData = fDb.MaintenanceHistories.Where(t => t.UserId == user.Id && t.Confirmed == true &&
                                                                             t.CryptoCurrency == contract.CryptoCurrency && (t.Contract.ContractType.SiteSelector == selector || (t.NonBTCBalance.HasValue && t.NonBTCBalance.Value == true))).Where(t => t.ContractID == contract.id && t.Spent == false && t.Referral == false);
                        foreach (MaintenanceHistory oper in MaintenanceData.ToList())
                        {
                            oper.Spent = true;
                        }
                        foreach (HodlContractManagementFee oper in fDb.HodlContractManagementFees.Where(t => MaintenanceData.Any(x => x.id == t.MaintId)).ToList())
                        {
                            oper.Spent = true;
                        }
                        exportList.Add(newExport);
                        historyList.Add(newHistory);
                        RsBankPayout newPayout = new RsBankPayout(request);
                        newPayout.Wallet      = account.RsTxId;
                        newPayout.Sum_Value   = (Math.Round(newExport.Sum * 1000000, 2)).ToString(new CultureInfo("en"));
                        newPayout.Description = newPayout.Sum_Value.ToString(new CultureInfo("en")) + " to " + newPayout.UserWallet + " " + request.CryptoCurrency + " from " + user.RsBankId;
                        payoutList.Add(newPayout);
                    }
                    foreach (RsBankAccountBalanceView account in accountBalanceList.Where(t => t.Type == "contractReferral"))
                    {
                        ContractReferral contractRef = Settings.RefContractList(fDb, SiteContent.Flymining).SingleOrDefault(t => t.TxID == account.RsTxId);
                        if (contractRef == null)
                        {
                            continue;
                        }
                        ExportIncome newExport = new ExportIncome(request.CryptoCurrency)
                        {
                            userId     = user.Id,
                            Wallet     = request.WalletDestinision,
                            RequestID  = request.id,
                            Referral   = true,
                            ContractID = contractRef.id,
                            Sum        = account.Amount.Value
                        };
                        ExportHistory newHistory = new ExportHistory(request.CryptoCurrency)
                        {
                            Type       = 2,
                            UserId     = user.Id,
                            ContractID = contractRef.ContractFatherId,
                            hashrate   = contractRef.hashrate,
                            Referral   = true,
                            income     = account.AmountIncome.Value
                        };
                        if (newExport.Sum < 0)
                        {
                            Logger.AddLogRecord("newExport less then 0 : Income =" + newExport.Sum.ToString(new CultureInfo("en")));
                            continue;
                        }
                        exportList.Add(newExport);
                        historyList.Add(newHistory);
                        RsBankPayout newPayout = new RsBankPayout(request)
                        {
                            Wallet    = account.RsTxId,
                            Sum_Value = (Math.Round(newExport.Sum * 1000000, 2)).ToString(new CultureInfo("en"))
                        };
                        newPayout.Description = newPayout.Sum_Value.ToString(new CultureInfo("en")) + " to " + newPayout.UserWallet + " " + request.CryptoCurrency + " referral from " + user.RsBankId;
                        payoutList.Add(newPayout);
                    }
                    foreach (RsBankAccountBalanceView account in accountBalanceList.Where(t => t.Type == "ReferralPayment"))
                    {
                        RsBankPayout newPayout = new RsBankPayout(request)
                        {
                            Wallet    = user.RsBankId,
                            Sum_Value = (Math.Round(account.RsAmount.Value, 2)).ToString(new CultureInfo("en"))
                        };
                        newPayout.Description = "Referral payment " + newPayout.Sum_Value.ToString(new CultureInfo("en")) + " to " + newPayout.UserWallet + " BTC referral from " + user.RsBankId;
                        payoutList.Add(newPayout);
                        refPaymentsList.Add(fDb.ReferralPayments.Single(t => t.TxId == account.RsTxId));
                        ExportIncome newExport = new ExportIncome(request, account.Amount.Value, true);
                        exportList.Add(newExport);
                    }
                    request.Valid = false;
                    decimal currentCommision = payoutFee;
                    decimal payoutSum        = payoutList.Where(t => t.TxID == request.UniqueID).Sum(t => Convert.ToDecimal(t.Sum_Value));
                    request.Amount = payoutSum - currentCommision * 1000000;
                    List <RsBankPayout> commList = new List <RsBankPayout>();
                    foreach (RsBankPayout payout in payoutList.Where(t => t.TxID == request.UniqueID))
                    {
                        RsBankPayout newPayout = new RsBankPayout
                        {
                            UniqueID      = Guid.NewGuid().ToString(),
                            Date          = DateTime.UtcNow,
                            TxID          = payout.TxID,
                            Oper_Type     = "5",
                            Wallet_Type   = payout.Wallet_Type,
                            Wallet        = payout.Wallet,
                            Currency_Name = request.CryptoCurrency,
                            Special_Kind  = "S",
                            Rest          = "0",
                            Spent         = false,
                            UserWallet    = payout.UserWallet
                        };
                        newPayout.Year    = newPayout.Date.Year;
                        newPayout.Month   = newPayout.Date.Month;
                        newPayout.Day     = newPayout.Date.Day;
                        currentCommision -= Math.Round((Convert.ToDecimal(payout.Sum_Value) * payoutFee) / payoutSum, 8);
                        if (currentCommision < 0)
                        {
                            currentCommision   += Math.Round((Convert.ToDecimal(payout.Sum_Value) * payoutFee) / payoutSum, 8);
                            newPayout.Sum_Value = Convert.ToString(Math.Round(-currentCommision * 1000000, 2), new CultureInfo("en"));
                            payout.Sum_Value    = (Convert.ToDecimal(payout.Sum_Value) + Convert.ToDecimal(newPayout.Sum_Value)).ToString("#0.00", CultureInfo.InvariantCulture);
                            currentCommision    = 0;
                        }
                        else
                        {
                            newPayout.Sum_Value = Convert.ToString(Math.Round(-(Convert.ToDecimal(payout.Sum_Value) * payoutFee * 1000000) / payoutSum, 2), new CultureInfo("en"));
                            payout.Sum_Value    = (Convert.ToDecimal(payout.Sum_Value) + Convert.ToDecimal(newPayout.Sum_Value)).ToString("#0.00", CultureInfo.InvariantCulture);
                        }
                        newPayout.Description = newPayout.Sum_Value.ToString(new CultureInfo("en")) + " " + request.CryptoCurrency + " commision to " + newPayout.UserWallet + " user " + user.RsBankId;
                        commList.Add(newPayout);
                    }
                    payoutList.AddRange(commList);
                    if (currentCommision != 0)
                    {
                        string firstWallet = payoutList.Where(t => t.TxID == request.UniqueID).OrderByDescending(t => t.Sum_Value).First().Wallet;
                        foreach (RsBankPayout payout in payoutList.Where(t => t.Wallet == firstWallet && t.TxID == request.UniqueID))
                        {
                            if (payout.Special_Kind == "S")
                            {
                                payout.Sum_Value   = Convert.ToString(Convert.ToDecimal(payout.Sum_Value) + currentCommision, new CultureInfo("en"));
                                payout.Description = payout.Sum_Value.ToString(new CultureInfo("en")) + " " + request.CryptoCurrency + " commision to " + payout.UserWallet + " user " + user.RsBankId;
                            }
                            else
                            {
                                payout.Sum_Value   = Convert.ToString(Convert.ToDecimal(payout.Sum_Value) - currentCommision, new CultureInfo("en"));
                                payout.Description = payout.Sum_Value.ToString(new CultureInfo("en")) + " to " + payout.UserWallet + " " + request.CryptoCurrency + " from " + user.RsBankId;
                            }
                        }
                    }
                    mailSender.SendPaymentRequest(user, request);
                }
                catch (Exception ex)
                {
                    Logger.AddLogRecord("Payment Request Parsing.Error:" + Convert.ToString(ex));
                }
            }
            foreach (ExportIncome row in exportList)
            {
                fDb.ExportIncomes.Add(row);
            }
            foreach (RsBankPayout row in payoutList)
            {
                fDb.RsBankPayouts.Add(row);
            }
            foreach (ExportHistory row in historyList)
            {
                fDb.ExportHistories.Add(row);
            }
            foreach (ReferralPayment row in refPaymentsList)
            {
                row.Sent = true;
            }
            try
            {
                fDb.SaveChanges();
                UtilityFunc utilHandler = new UtilityFunc(fDb);
                foreach (UserProfile2 user in users_list)
                {
                    utilHandler.recalculateBalance(user);
                }
            }
            catch (Exception ex)
            {
                Logger.AddLogRecord("Error on SaveChanges Export Income Service :" + Convert.ToString(ex));
            }
        }
Exemplo n.º 4
0
 public void OnExportHistory()
 {
     ExportHistory?.Invoke();
 }
Exemplo n.º 5
0
        public static void Initialize(HealthCareContext context)
        {
            context.Database.EnsureCreated();

            if (context.Accounts.Any())
            {
                return; //Database contains data no need to initialize it.
            }

            //Patient Mock Data
            #region
            var patients = new Patient[]
            {
                new Patient {
                    FirstName = "Carol", LastName = "Peters", MiddleName = "Rose", SocialSecurityNumber = "100-200-1234"
                },
                new Patient {
                    FirstName = "Barbara", LastName = "Camuy", MiddleName = "Angelica", SocialSecurityNumber = "101-201-1235"
                }
            };

            foreach (Patient pt in patients)
            {
                context.Patients.Add(pt);
            }
            context.SaveChanges();
            int[] PatientIDs = context.Patients.Select(s => s.PatientID).ToArray();
            #endregion

            //Facility Mock Data
            #region
            var facilities = new Facility[]
            {
                new Facility {
                    FacilityName = "Meno Hospital", AddressLine1 = "4382 Howard Avenue", AddressLine2 = "Suite 500", City = "Springfield", State = "TN", Zip = "12563"
                },
                new Facility {
                    FacilityName = "Pleno Health", AddressLine1 = "438 Hill Side", AddressLine2 = "Office 123", City = "Vienna", State = "TN", Zip = "18663"
                }
            };

            foreach (Facility fac in facilities)
            {
                context.Facilities.Add(fac);
            }
            context.SaveChanges();
            int[] FacilityIDs = context.Facilities.Select(s => s.FacilityID).ToArray();
            #endregion

            #region Insurance Mock Data
            var insurances = new Insurance[]
            {
                new Insurance {
                    GroupNumber = "GN12-6359-9632563", PlanName = "United Health", Policy = "PN-F-H-V"
                },
                new Insurance {
                    GroupNumber = "GN12-6357-9689653", PlanName = "MedStar Health", Policy = "P-H-V"
                }
            };

            foreach (Insurance ins in insurances)
            {
                context.Insurances.Add(ins);
            }
            context.SaveChanges();
            int[] InsuranceIDs = context.Insurances.Select(s => s.InsuranceID).ToArray();
            #endregion

            #region Client Mock Data
            var clients = new Client[]
            {
                new Client {
                    Name = "General Hospital", FileType = Client.CustomFileType.PipeDelimited
                },
                new Client {
                    Name = "Veteran Hospital", FileType = Client.CustomFileType.CommaDelimited
                }
            };

            foreach (Client cl in clients)
            {
                context.Clients.Add(cl);
            }
            context.SaveChanges();
            int[] ClientIDs = context.Clients.Select(s => s.ClientID).ToArray();
            #endregion

            #region Account Mock Data
            var accounts = new Account[]
            {
                new Account {
                    Client        = context.Clients.ToList()[0],
                    AccountNumber = "AC5623-86965",
                    Balance       = 1256.25,
                    Facility      = context.Facilities.ToList()[0],
                    AdmitDate     = Convert.ToDateTime("10/20/2017"),
                    DischargeDate = Convert.ToDateTime("10/23/2017"),
                    Patient       = context.Patients.ToList()[0]
                },
                new Account {
                    Client        = context.Clients.ToList()[1],
                    AccountNumber = "AC5413-86935",
                    Balance       = 165.75,
                    Facility      = context.Facilities.ToList()[1],
                    AdmitDate     = Convert.ToDateTime("8/17/2017"),
                    DischargeDate = Convert.ToDateTime("8/20/2017"),
                    Patient       = context.Patients.ToList()[1]
                },
            };

            foreach (Account act in accounts)
            {
                context.Accounts.Add(act);
            }
            context.SaveChanges();
            int[] AccountIDs = context.Accounts.Select(s => s.AccountID).ToArray();
            #endregion

            #region Account Insurance Mock Data
            var accountInsurance = new AccountInsurance[]
            {
                new AccountInsurance {
                    Account = context.Accounts.ToList()[0], Insurance = context.Insurances.ToList()[0]
                },
                new AccountInsurance {
                    Account = context.Accounts.ToList()[1], Insurance = context.Insurances.ToList()[1]
                },
            };

            foreach (AccountInsurance ains in accountInsurance)
            {
                context.AccountInsurances.Add(ains);
            }
            context.SaveChanges();
            #endregion

            #region Export History Mock Data
            var exportHistory = new ExportHistory[]
            {
                new ExportHistory {
                    Client     = context.Clients.ToList()[0],
                    Accounts   = 3,
                    Balance    = 5236.89,
                    ExportDate = Convert.ToDateTime("4/8/2018")
                },
                new ExportHistory {
                    Client     = context.Clients.ToList()[0],
                    Accounts   = 14,
                    Balance    = 4336.79,
                    ExportDate = Convert.ToDateTime("4/8/2018")
                },
                new ExportHistory {
                    Client     = context.Clients.ToList()[1],
                    Accounts   = 20,
                    Balance    = 1236.95,
                    ExportDate = Convert.ToDateTime("4/7/2018")
                },
                new ExportHistory {
                    Client     = context.Clients.ToList()[1],
                    Accounts   = 7,
                    Balance    = 8936.54,
                    ExportDate = Convert.ToDateTime("4/7/2018")
                },
            };

            foreach (ExportHistory eh in exportHistory)
            {
                context.ExportHistories.Add(eh);
            }
            context.SaveChanges();
            #endregion
        }
Exemplo n.º 6
0
 public void Add(ExportHistory exportHistory)
 {
     throw new NotImplementedException();
 }