public void Initialize(WialonApi api, YandexApi yandexApi, SqlRepository sql) { WialonApi = api; Logger = LogManager.GetCurrentClassLogger(); YandexApi = yandexApi; Sql = sql; }
public override void Execute() { _dateTimeExecute = DateTime.Now; var isFirst = true; while (true) { if (!isFirst) { Thread.Sleep(1000); } else { isFirst = false; } if ((DateTime.Now - _dateTimeExecute).TotalMinutes > 2) { Logger.Warn($"Not finded today payment, driver: {_driver}"); return; } var balance = YandexApi.GetLastJobPayForDriver(_driver.YandexId); if (balance == null) { Logger.Debug($"Not finded today payment, driver: {_driver}"); continue; } if (balance.IsToday && balance.PaymentType == "Job.Payment" && balance.Balance < 0) { var unit = WialonApi.GetUnit(_car); if (unit == null) { Logger.Warn($"Car for [{_driver}] not finded in wialon!"); Sql.Notifications.Add(new Notification { Type = "WialonCarNotFinded", Message = $"Не удалось найти машину {_car} для блокировки", InternalId = _car.Id, DateCreated = DateTime.Now }); Sql.SaveChanges(); return; } IocKernel.Get <CoreProccessor>().ExecuteCommand(new BlockUnitCommand(_driver, unit)); Logger.Info($"Driver [{_driver}] send to block"); return; } } }
public override void Execute() { while (!WialonApi.TrySafeBlockUnit(_unit, out var error)) { Logger.Debug($"Unit: {_unit} not blocked, reason: {error}, next try in: 10 sec"); Thread.Sleep(10000); } Sql.Notifications.Add(new Notification() { Type = "UnitBlocked", InternalId = _driver.Id, Message = $"{_driver} заблокирован", DateCreated = DateTime.Now }); Sql.SaveChanges(); }