예제 #1
0
        public async Task <IActionResult> Create([FromBody] NumberingSequenceDto input)
        {
            var user = User.GetDetails();
            var numberingSequence = new NumberingSequence(input.Prefix, input.Number, input.Status, input.NumberingSequenceType, user.Id);

            if (await _unitOfWork.NumberingSequences.AnyAsync(numberingSequence))
            {
                return(BadRequest("Numbering Sequence Already Exists"));
            }

            _unitOfWork.NumberingSequences.Add(numberingSequence);
            await _unitOfWork.CompleteAsync(user.Id);

            return(Ok(numberingSequence));
        }
 internal void setNumberingType(NumberingSequence seq) { this.seq = seq; }
        /*
        ----------------------------------------------------------------------------
            mapFormatToken()

            Maps a token of alphanumeric characters to a numbering format ID and a
            minimum length bound.  Tokens specify the character(s) that begins a
            Unicode
            numbering sequence.  For example, "i" specifies lower case roman numeral
            numbering.  Leading "zeros" specify a minimum length to be maintained by
            padding, if necessary.
        ----------------------------------------------------------------------------
        */
        private static void mapFormatToken(String wsToken, int startLen, int tokLen, out NumberingSequence seq, out int pminlen) {
            char wch = wsToken[startLen];
            bool UseArabic = false;
            pminlen = 1;
            seq = NumberingSequence.Nil;

            switch ((int)wch) {
            case 0x0030:    // Digit zero
            case 0x0966:    // Hindi digit zero
            case 0x0e50:    // Thai digit zero
            case 0xc77b:    // Korean digit zero
            case 0xff10:    // Digit zero (double-byte)
                do {
                    // Leading zeros request padding.  Track how much.
                    pminlen++;
                } while ((--tokLen > 0) && (wch == wsToken[++startLen]));

                if (wsToken[startLen] != (char)(wch + 1)) {
                    // If next character isn't "one", then use Arabic
                    UseArabic = true;
                }
                break;
            }

            if (!UseArabic) {
                // Map characters of token to number format ID
                switch ((int)wsToken[startLen]) {
                case 0x0031: seq = NumberingSequence.Arabic; break;
                case 0x0041: seq = NumberingSequence.UCLetter; break;
                case 0x0049: seq = NumberingSequence.UCRoman; break;
                case 0x0061: seq = NumberingSequence.LCLetter; break;
                case 0x0069: seq = NumberingSequence.LCRoman; break;
                case 0x0410: seq = NumberingSequence.UCRus; break;
                case 0x0430: seq = NumberingSequence.LCRus; break;
                case 0x05d0: seq = NumberingSequence.Hebrew; break;
                case 0x0623: seq = NumberingSequence.ArabicScript; break;
                case 0x0905: seq = NumberingSequence.Hindi2; break;
                case 0x0915: seq = NumberingSequence.Hindi1; break;
                case 0x0967: seq = NumberingSequence.Hindi3; break;
                case 0x0e01: seq = NumberingSequence.Thai1; break;
                case 0x0e51: seq = NumberingSequence.Thai2; break;
                case 0x30a2: seq = NumberingSequence.DAiueo; break;
                case 0x30a4: seq = NumberingSequence.DIroha; break;
                case 0x3131: seq = NumberingSequence.DChosung; break;
                case 0x4e00: seq = NumberingSequence.FEDecimal; break;
                case 0x58f1: seq = NumberingSequence.DbNum3; break;
                case 0x58f9: seq = NumberingSequence.ChnCmplx; break;
                case 0x5b50: seq = NumberingSequence.Zodiac2; break;
                case 0xac00: seq = NumberingSequence.Ganada; break;
                case 0xc77c: seq = NumberingSequence.KorDbNum1; break;
                case 0xd558: seq = NumberingSequence.KorDbNum3; break;
                case 0xff11: seq = NumberingSequence.DArabic; break;
                case 0xff71: seq = NumberingSequence.Aiueo; break;
                case 0xff72: seq = NumberingSequence.Iroha; break;

                case 0x7532:
                    if (tokLen > 1 && wsToken[startLen + 1] == 0x5b50) {
                        // 60-based Zodiak numbering begins with two characters
                        seq = NumberingSequence.Zodiac3;
                        tokLen--;
                        startLen++;
                    }
                    else {
                        // 10-based Zodiak numbering begins with one character
                        seq = NumberingSequence.Zodiac1;
                    }
                    break;
                default:
                    seq = NumberingSequence.Arabic;
                    break;
                }
            }

            //if (tokLen != 1 || UseArabic) {
            if (UseArabic) {
                // If remaining token length is not 1, then don't recognize
                // sequence and default to Arabic with no zero padding.
                seq = NumberingSequence.Arabic;
                pminlen = 0;
            }
        }
        /*
         * ----------------------------------------------------------------------------
         *  mapFormatToken()
         *
         *  Maps a token of alphanumeric characters to a numbering format ID and a
         *  minimum length bound.  Tokens specify the character(s) that begins a
         *  Unicode
         *  numbering sequence.  For example, "i" specifies lower case roman numeral
         *  numbering.  Leading "zeros" specify a minimum length to be maintained by
         *  padding, if necessary.
         * ----------------------------------------------------------------------------
         */
        private static void mapFormatToken(string wsToken, int startLen, int tokLen, out NumberingSequence seq, out int pminlen)
        {
            char wch       = wsToken[startLen];
            bool UseArabic = false;

            pminlen = 1;
            seq     = NumberingSequence.Nil;

            switch ((int)wch)
            {
            case 0x0030:        // Digit zero
            case 0x0966:        // Hindi digit zero
            case 0x0e50:        // Thai digit zero
            case 0xc77b:        // Korean digit zero
            case 0xff10:        // Digit zero (double-byte)
                do
                {
                    // Leading zeros request padding.  Track how much.
                    pminlen++;
                } while ((--tokLen > 0) && (wch == wsToken[++startLen]));

                if (wsToken[startLen] != (char)(wch + 1))
                {
                    // If next character isn't "one", then use Arabic
                    UseArabic = true;
                }
                break;
            }

            if (!UseArabic)
            {
                // Map characters of token to number format ID
                switch ((int)wsToken[startLen])
                {
                case 0x0031: seq = NumberingSequence.Arabic; break;

                case 0x0041: seq = NumberingSequence.UCLetter; break;

                case 0x0049: seq = NumberingSequence.UCRoman; break;

                case 0x0061: seq = NumberingSequence.LCLetter; break;

                case 0x0069: seq = NumberingSequence.LCRoman; break;

                case 0x0410: seq = NumberingSequence.UCRus; break;

                case 0x0430: seq = NumberingSequence.LCRus; break;

                case 0x05d0: seq = NumberingSequence.Hebrew; break;

                case 0x0623: seq = NumberingSequence.ArabicScript; break;

                case 0x0905: seq = NumberingSequence.Hindi2; break;

                case 0x0915: seq = NumberingSequence.Hindi1; break;

                case 0x0967: seq = NumberingSequence.Hindi3; break;

                case 0x0e01: seq = NumberingSequence.Thai1; break;

                case 0x0e51: seq = NumberingSequence.Thai2; break;

                case 0x30a2: seq = NumberingSequence.DAiueo; break;

                case 0x30a4: seq = NumberingSequence.DIroha; break;

                case 0x3131: seq = NumberingSequence.DChosung; break;

                case 0x4e00: seq = NumberingSequence.FEDecimal; break;

                case 0x58f1: seq = NumberingSequence.DbNum3; break;

                case 0x58f9: seq = NumberingSequence.ChnCmplx; break;

                case 0x5b50: seq = NumberingSequence.Zodiac2; break;

                case 0xac00: seq = NumberingSequence.Ganada; break;

                case 0xc77c: seq = NumberingSequence.KorDbNum1; break;

                case 0xd558: seq = NumberingSequence.KorDbNum3; break;

                case 0xff11: seq = NumberingSequence.DArabic; break;

                case 0xff71: seq = NumberingSequence.Aiueo; break;

                case 0xff72: seq = NumberingSequence.Iroha; break;

                case 0x7532:
                    if (tokLen > 1 && wsToken[startLen + 1] == 0x5b50)
                    {
                        // 60-based Zodiak numbering begins with two characters
                        seq = NumberingSequence.Zodiac3;
                        tokLen--;
                        startLen++;
                    }
                    else
                    {
                        // 10-based Zodiak numbering begins with one character
                        seq = NumberingSequence.Zodiac1;
                    }
                    break;

                default:
                    seq = NumberingSequence.Arabic;
                    break;
                }
            }

            //if (tokLen != 1 || UseArabic) {
            if (UseArabic)
            {
                // If remaining token length is not 1, then don't recognize
                // sequence and default to Arabic with no zero padding.
                seq     = NumberingSequence.Arabic;
                pminlen = 0;
            }
        }
 internal void setNumberingType(NumberingSequence seq)
 {
     _seq = seq;
 }