/// <summary> /// ''' Valorizza Iban partendo da stringa iban completa /// ''' </summary> /// ''' <param name="ibanCompleto"></param> /// ''' <remarks></remarks> public Iban(string ibanCompleto) { ibanCompleto = ibanCompleto.Trim().ToUpper(); if (ibanCompleto.Length > 1) { // Se ci sono almeno 2 caratteri prova a determinare la nazione if (Iban._INFO_PAESE.TryGetValue(ibanCompleto.Substring(0, 2), out this.mInfoIbanPaese)) { // Normalizza a n caratteri ibanCompleto = ibanCompleto.PadRight(this.mInfoIbanPaese.IbanLength); // Decompone iban in base alle regole del paese this.mIbanInfo = this.mInfoIbanPaese.DecomponiIban(ibanCompleto); } else { // Sconosciuto throw new ArgumentException(string.Format("Il Codice Paese dell'IBAN fornito ('{0}') non risulta appartenere ad alcun paese conosciuto.", ibanCompleto)); } } else { // Ne imposta comunque uno vuoto this.mIbanInfo = new IbanInfo(); // Imposta Info paese su Italia this.mInfoIbanPaese = _INFO_PAESE["IT"]; } }
/// <summary> /// ''' Dato un Iban ritorna una decomposizione /// ''' </summary> /// ''' <param name="iban"></param> /// ''' <returns></returns> /// ''' <remarks></remarks> public IbanInfo DecomponiIban(string iban) { IbanInfo oIbanDec = new IbanInfo(); System.Text.StringBuilder sbBanca = new System.Text.StringBuilder(); System.Text.StringBuilder sbSportello = new System.Text.StringBuilder(); System.Text.StringBuilder sbNumeroCC = new System.Text.StringBuilder(); System.Text.StringBuilder sbCodiceControllo = new System.Text.StringBuilder(); int iLenMaxIban = Math.Min(iban.Length, this.IbanLength); // Esegue decomposizione for (int index = 4; index <= iLenMaxIban - 1; index++) { switch (this.mIbanCodifica[index]) { case 'B': { sbBanca.Append(iban[index]); break; } case 'S': { sbSportello.Append(iban[index]); break; } case 'K': { sbCodiceControllo.Append(iban[index]); break; } case 'C': { sbNumeroCC.Append(iban[index]); break; } default: { break; } } } // Imposta campi oIbanDec.IbanCompleto = iban; oIbanDec.CodicePaese = this.mCodiceIsoNazione; oIbanDec.CheckDigit = iban.Substring(2, 2); oIbanDec.CodiceControllo = sbCodiceControllo.ToString(); oIbanDec.CodiceBanca = sbBanca.ToString(); oIbanDec.CodiceSportello = sbSportello.ToString(); oIbanDec.NumeroConto = sbNumeroCC.ToString(); oIbanDec.IbanPaperFormat = Iban.ToPaperFormat(iban); return(oIbanDec); }
/// <summary> /// ''' Dati alcuni valori standard che compongono un iban ritorna le informazioni iban /// ''' secondo la codifica del paese /// ''' </summary> /// ''' <param name="checkDigit"></param> /// ''' <param name="codiceControllo"></param> /// ''' <param name="codiceBanca"></param> /// ''' <param name="codiceSportello"></param> /// ''' <param name="numeroConto"></param> /// ''' <returns></returns> /// ''' <remarks></remarks> public IbanInfo RicomponiIban(string checkDigit, string codiceControllo, string codiceBanca, string codiceSportello, string numeroConto) { IbanInfo oIbanInfo = new IbanInfo(); System.Text.StringBuilder sbIban = new System.Text.StringBuilder(this.mCodiceIsoNazione, this.IbanLength); char cCurrChar = ' '; int iCurrIndex = 0; // Imposta dati base checkDigit = checkDigit.PadRight(2); codiceControllo = codiceControllo.PadRight(this.mCodiceControlloLength); codiceBanca = codiceBanca.PadRight(this.mCodiceBancaLength); codiceSportello = codiceSportello.PadRight(this.mCodiceSportelloLength); numeroConto = numeroConto.PadRight(this.mNumeroContoLength); // Esegue decomposizione for (int index = 2; index <= this.mIbanCodifica.Length - 1; index++) { if (cCurrChar != this.mIbanCodifica[index]) { iCurrIndex = 0; cCurrChar = this.mIbanCodifica[index]; } switch (cCurrChar) { case '0': { sbIban.Append(checkDigit[iCurrIndex]); break; } case 'B': { sbIban.Append(codiceBanca[iCurrIndex]); break; } case 'S': { sbIban.Append(codiceSportello[iCurrIndex]); break; } case 'K': { sbIban.Append(codiceControllo[iCurrIndex]); break; } case 'C': { sbIban.Append(numeroConto[iCurrIndex]); break; } default: { break; } } // Incrementa indice interno iCurrIndex += 1; } oIbanInfo.CodicePaese = this.mCodiceIsoNazione; oIbanInfo.CheckDigit = checkDigit; oIbanInfo.CodiceControllo = codiceControllo; oIbanInfo.CodiceBanca = codiceBanca; oIbanInfo.CodiceSportello = codiceSportello; oIbanInfo.NumeroConto = numeroConto; oIbanInfo.IbanCompleto = sbIban.ToString(); oIbanInfo.IbanPaperFormat = Iban.ToPaperFormat(oIbanInfo.IbanCompleto); return(oIbanInfo); }