|
@@ -2,6 +2,7 @@
|
|
|
using System.Collections.Generic;
|
|
|
using System.Configuration;
|
|
|
using System.Data.Entity;
|
|
|
+using System.Data.Entity.Migrations;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
@@ -279,7 +280,7 @@ namespace EthermineBotTelegram
|
|
|
if (lastMinerRecord == null || lastMinerRecord.time !=
|
|
|
newMinerRecord.time)
|
|
|
{
|
|
|
- Botdb.miners.Add(newMinerRecord);
|
|
|
+ Botdb.miners.AddOrUpdate(newMinerRecord);
|
|
|
await Botdb.SaveChangesAsync();
|
|
|
await Console.Out.WriteLineAsync($"Added new row for {newMinerRecord.wallet}");
|
|
|
url = AppSettings.poolApiUrl + "/miner/" + u.wallet + "/workers";
|
|
@@ -300,18 +301,82 @@ namespace EthermineBotTelegram
|
|
|
newWorkerRecord.stale_shares = currentWorker.data[i].staleShares;
|
|
|
newWorkerRecord.invalid_shares = currentWorker.data[i].invalidShares;
|
|
|
//add func to calc worker_unpaid here
|
|
|
- newWorkerRecord.worker_unpaid = 0;
|
|
|
-
|
|
|
- lastTime = 0;
|
|
|
- if (Botdb.workers.Where(m => m.wallet == newMinerRecord.wallet).FirstOrDefault() != null)
|
|
|
- lastTime = Botdb.workers.Where(m => m.wallet == newMinerRecord.wallet).Max(m => m.time);
|
|
|
- var lastWokerRecord = Botdb.workers.Where(m => m.wallet == newWorkerRecord.worker && m.time == lastTime).FirstOrDefault();
|
|
|
+ if (lastMinerRecord != null)
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"lastMinerRecord exists");
|
|
|
+ //lastTime = 0;
|
|
|
+ //if (Botdb.workers.Where(m => m.worker == newWorkerRecord.worker).FirstOrDefault() != null)
|
|
|
+ // lastTime = Botdb.workers.Where(m => m.worker == newWorkerRecord.worker).Max(m => m.time);
|
|
|
+
|
|
|
+ var lastWorkerRecord = Botdb.workers.Where(w => w.wallet == newWorkerRecord.worker)
|
|
|
+ .OrderByDescending(w => w.time).FirstOrDefault();
|
|
|
+ if (lastWorkerRecord != null)
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"lastWorkerRecord time {lastWorkerRecord.time}");
|
|
|
+ if (lastMinerRecord.time == newMinerRecord.time - 600)
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"lastMinerRecord 600s from new");
|
|
|
+ var prevMinerRecord = Botdb.miners.Where(m =>
|
|
|
+ m.wallet == newMinerRecord.wallet && m.time == lastMinerRecord.time - 600)
|
|
|
+ .FirstOrDefault();
|
|
|
+ if (prevMinerRecord != null)
|
|
|
+ {
|
|
|
+ if (lastMinerRecord.unpaid == prevMinerRecord.unpaid)
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync(
|
|
|
+ $"prevMinerRecord exists and 600s from new");
|
|
|
+ //var lastWorkerRecord600 = Botdb.workers.Where(m =>
|
|
|
+ // m.worker == newWorkerRecord.worker &&
|
|
|
+ // m.time == newWorkerRecord.time - 600).FirstOrDefault();
|
|
|
+ if (lastWorkerRecord.time == newWorkerRecord.time - 600)
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync(
|
|
|
+ $"lastWorkerRecord exists and 600s from new");
|
|
|
+ await Console.Out.WriteLineAsync($"Hard calc here");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"Normal calc here");
|
|
|
+ newWorkerRecord.worker_unpaid =
|
|
|
+ lastWorkerRecord.worker_unpaid + (long)((newMinerRecord.unpaid - lastMinerRecord.unpaid) *
|
|
|
+ (newWorkerRecord.reported_hashrate / (double)newMinerRecord.reported_hashrate));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"Normal calc here!");
|
|
|
+ newWorkerRecord.worker_unpaid =
|
|
|
+ lastWorkerRecord.worker_unpaid + (long)((newMinerRecord.unpaid - lastMinerRecord.unpaid) *
|
|
|
+ (newWorkerRecord.reported_hashrate / (double)newMinerRecord.reported_hashrate));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"Just add new row with old data!");
|
|
|
+ newWorkerRecord.worker_unpaid = lastWorkerRecord.worker_unpaid;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"Just add new row with 0");
|
|
|
+ newWorkerRecord.worker_unpaid = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Console.Out.WriteLineAsync($"Just add new row with 0");
|
|
|
+ newWorkerRecord.worker_unpaid = 0;
|
|
|
+ }
|
|
|
+ await Console.Out.WriteLineAsync($"newWorkerRecord worker unpaid : {newWorkerRecord.worker_unpaid}");
|
|
|
+
|
|
|
+ var lastWokerRecord = Botdb.workers.Where(w => w.wallet == newWorkerRecord.worker).OrderByDescending(w=> w.time).FirstOrDefault();
|
|
|
if (lastWokerRecord == null || lastWokerRecord.time !=
|
|
|
newMinerRecord.time)
|
|
|
{
|
|
|
await Console.Out.WriteLineAsync(
|
|
|
$"Create new record for {currentWorker.data[i].worker} finished");
|
|
|
- Botdb.workers.Add(newWorkerRecord);
|
|
|
+ Botdb.workers.AddOrUpdate(newWorkerRecord);
|
|
|
await Botdb.SaveChangesAsync();
|
|
|
await Console.Out.WriteLineAsync($"Added new row for {currentWorker.data[i].worker}");
|
|
|
}
|