예제 #1
0
        /// <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"];
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }