Beispiel #1
0
 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;
                }
            }
        }
Beispiel #3
0
        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();
        }