public bool IsAccessGranted(TurnstileDirection direction, string idData, out string reason) { // причина отказа reason = "Доступ разрешен"; try { // запрос client_info, получаем номер карты string cardNo = GetCardNo(idData); // запрос info, проверяем состояние счета if (!CheckBalance(cardNo, _settings.MinBalance)) { throw new InvalidOperationException("Недостаточно средств на счете клиента"); } // запрос registration, регистрируем посещение if (_settings.RegisterVisit) { RegisterVisit(cardNo, _settings.PointId, _settings.TerminalNo); } return(true); } catch (WebException E) { reason = E.Message; return(false); } catch (InvalidOperationException E) { reason = E.Message; return(false); } }
/// <summary> /// Создает экземпляр класса /// </summary> protected CustomTurnstileDevice() : base() { _direction = TurnstileDirection.Entry; _syncObject = new object(); _timeout = 15; }
public bool IsAccessGranted(TurnstileDirection direction, string idData, out string reason) { // причина отказа reason = "Доступ разрешен"; // формируем HTTP-запрос к ПДС HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format( "http://{0}:{1}/", _settings.HostOrIp, _settings.Port)); request.Method = "POST"; using (Stream requestStream = request.GetRequestStream()) { GetRequest(idData, requestStream); } try { // запрашиваем информацию по карте using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { // читаем ответ int balance = GetBalance(responseStream, idData); // пропускаем на выход только с неотрицательным балансом bool accessGranted = (direction == TurnstileDirection.Entry) || (direction == TurnstileDirection.Exit && balance >= 0); if (!accessGranted) { reason = "Отрицательный баланс счета"; } return(accessGranted); } } } catch (WebException e) { reason = e.Message; return(false); } catch (InvalidOperationException e) { reason = e.Message; return(false); } }
public void OnAccessOccured(TurnstileDirection direction, string idData) { }