/// <summary> /// Dispenses the specified value. /// </summary> /// <param name="value">The value.</param> /// <returns>DispenseResult</returns> public DispenseResult Dispense(decimal value) { ICoinDispenser coinDispenser = null; DispenseResult result = new DispenseResult(); decimal issuedValue = value; decimal rejectedValue = 0; decimal? issuedValue2 = 0; decimal? rejectedValue2 = 0; CoinDispStatus dispStatus = null; bool success = false; LogManager.WriteLog("|=> (Dispense) : " + ((this.DeckType == TypeOfDeck.Lower) ? "Lower" : "Upper") + " " + "Value : " + value.ToString(), LogManager.enumLogLevel.Info); bool canUpdateToDB = false; try { // COM API CALL result.Value = value; try { coinDispenser = GetCoinDispenser(); if (this.DeckType == TypeOfDeck.Lower) dispStatus = coinDispenser.DispenseLowDeck((ushort)value); else dispStatus = coinDispenser.DispenseUPDeck((ushort)value); } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (dispStatus != null) { LogManager.WriteLog("|=> (Dispense) : Error Code : " + dispStatus.ErrorCode.ToString(), LogManager.enumLogLevel.Info); success = IsSucceeded(dispStatus.ErrorCode); canUpdateToDB = true; string outputMessage = "Output Message => Deck => {0}, Dispensed Value => {1:F}, Rejected Value => {2:F}"; if (this.DeckType == TypeOfDeck.Lower) { issuedValue = dispStatus.LowDispNotes; rejectedValue = dispStatus.LowRejNotes; try { outputMessage = string.Format(outputMessage, "Lower", issuedValue, rejectedValue); } catch { } } else { issuedValue = dispStatus.UPDispNotes; rejectedValue = dispStatus.UPRejNotes; try { outputMessage = string.Format(outputMessage, "Upper", issuedValue, rejectedValue); } catch { } } result.ErrorDescription = dispStatus.ErrDesc; LogManager.WriteLog(outputMessage, LogManager.enumLogLevel.Info); } else { result.ErrorDescription = "Unable to dispense from " + this.CassetteAlias + "."; result.Failed = true; } LogManager.WriteLog("|=> (Dispense) : " + result.ErrorDescription, LogManager.enumLogLevel.Info); coinDispenser = null; } if (canUpdateToDB) { // UPDATE IT INTO DATABASE using (CashDispenserDBDataContext context = new CashDispenserDBDataContext(CashDispenserFactory.ExchangeConnectionString)) { int? iResult = 0; context.UpdateCashDispenserItemValues(this.CassetteID, issuedValue, rejectedValue, ref issuedValue2, ref rejectedValue2, ref iResult); if (iResult != null && iResult.HasValue) { result.Result = (iResult.Value > 0); } LogManager.WriteLog("|=> (Dispense) : Result : " + result.Result.ToString(), LogManager.enumLogLevel.Info); } } } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (result != null) { result.Result = success; if (canUpdateToDB) { result.IssuedValue = issuedValue; result.RejectedValue = rejectedValue; if (issuedValue2 != null && issuedValue2.HasValue) { this.IssuedValue = issuedValue2.Value; } if (rejectedValue2 != null && rejectedValue2.HasValue) { this.RejectedValue = rejectedValue2.Value; } } } } return result; }
/// <summary> /// Dispenses the specified value. /// </summary> /// <param name="value">The value.</param> /// <returns>DispenseResult</returns> public DispenseResult Dispense(decimal value) { ICoinDispenser coinDispenser = null; DispenseResult result = new DispenseResult(); decimal issuedValue = value; decimal rejectedValue = 0; decimal? issuedValue2 = 0; decimal? rejectedValue2 = 0; CoinDispStatus dispStatus = null; bool success = false; LogManager.WriteLog("|=> (Dispense) : " + ((this.DeckType == TypeOfDeck.Lower) ? "Lower" : "Upper") + " " + "Value : " + value.ToString(), LogManager.enumLogLevel.Info); bool canUpdateToDB = false; try { // COM API CALL result.Value = value; try { coinDispenser = GetCoinDispenser(); if (this.DeckType == TypeOfDeck.Lower) { dispStatus = coinDispenser.DispenseLowDeck((ushort)value); } else { dispStatus = coinDispenser.DispenseUPDeck((ushort)value); } } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (dispStatus != null) { LogManager.WriteLog("|=> (Dispense) : Error Code : " + dispStatus.ErrorCode.ToString(), LogManager.enumLogLevel.Info); success = IsSucceeded(dispStatus.ErrorCode); canUpdateToDB = true; string outputMessage = "Output Message => Deck => {0}, Dispensed Value => {1:F}, Rejected Value => {2:F}"; if (this.DeckType == TypeOfDeck.Lower) { issuedValue = dispStatus.LowDispNotes; rejectedValue = dispStatus.LowRejNotes; try { outputMessage = string.Format(outputMessage, "Lower", issuedValue, rejectedValue); } catch { } } else { issuedValue = dispStatus.UPDispNotes; rejectedValue = dispStatus.UPRejNotes; try { outputMessage = string.Format(outputMessage, "Upper", issuedValue, rejectedValue); } catch { } } result.ErrorDescription = dispStatus.ErrDesc; LogManager.WriteLog(outputMessage, LogManager.enumLogLevel.Info); } else { result.ErrorDescription = "Unable to dispense from " + this.CassetteAlias + "."; result.Failed = true; } LogManager.WriteLog("|=> (Dispense) : " + result.ErrorDescription, LogManager.enumLogLevel.Info); coinDispenser = null; } if (canUpdateToDB) { // UPDATE IT INTO DATABASE using (CashDispenserDBDataContext context = new CashDispenserDBDataContext(CashDispenserFactory.ExchangeConnectionString)) { int?iResult = 0; context.UpdateCashDispenserItemValues(this.CassetteID, issuedValue, rejectedValue, ref issuedValue2, ref rejectedValue2, ref iResult); if (iResult != null && iResult.HasValue) { result.Result = (iResult.Value > 0); } LogManager.WriteLog("|=> (Dispense) : Result : " + result.Result.ToString(), LogManager.enumLogLevel.Info); } } } catch (Exception ex) { ExceptionManager.Publish(ex); } finally { if (result != null) { result.Result = success; if (canUpdateToDB) { result.IssuedValue = issuedValue; result.RejectedValue = rejectedValue; if (issuedValue2 != null && issuedValue2.HasValue) { this.IssuedValue = issuedValue2.Value; } if (rejectedValue2 != null && rejectedValue2.HasValue) { this.RejectedValue = rejectedValue2.Value; } } } } return(result); }