Пример #1
0
 public string GetRegNumber(string entityName, RegNumberCounterType counterType, NumberCounterPattern pattern)
 {
     lock (locker)
     {
         return(GenerateNumber(entityName, counterType, pattern));
     }
 }
Пример #2
0
        private string GenerateNumber(string entityName, RegNumberCounterType counterType, NumberCounterPattern pattern)
        {
            var res = GetLastNumberCounter(entityName);

            if (res == null)
            {
                res = new NumberCounter()
                {
                    EntityName  = entityName,
                    CounterType = counterType,
                    Pattern     = pattern,
                    Value       = "0"
                };
            }

            if (res.Pattern == NumberCounterPattern.Number)
            {
                var n = 0;
                try
                {
                    n = Convert.ToInt32(res.Value);
                }
                catch (Exception ex)
                {
                    Log.Error($"Get number for document {entityName} - {ex.Message} (Value = {res.Value})");
                }

                n        += 1;
                res.Value = n.ToString();

                SaveNumberCounter(res);

                return(res.Value);
            }
            else if (res.Pattern == NumberCounterPattern.LeadingZero)
            {
                var n = 0;
                try
                {
                    n = Convert.ToInt32(res.Value);
                }
                catch (Exception ex)
                {
                    Log.Error($"Get number for document {entityName} - {ex.Message} (Value = {res.Value})");
                }

                n        += 1;
                res.Value = n.ToString().PadLeft(8, '0');

                SaveNumberCounter(res);

                return(res.Value);
            }
            else
            {
                //TODO : add method for generating number by pattern
                return(res.Value);
            }
        }
Пример #3
0
 public void SetRegNumber(IDocument document, string entityName = null,
                          RegNumberCounterType counterType      = RegNumberCounterType.Increment, NumberCounterPattern pattern = NumberCounterPattern.Number)
 {
     if (document.RegNumber == null)
     {
         var _entityName = (document as IDocumentHelper_GenerateRegNumber)?.GetEntityNameKey?.Invoke() ?? entityName ?? document.GetType().Name;
         document.RegNumber = InvokeRegNumberGenerator(document, _entityName) ??
                              GetRegNumber(_entityName, counterType, pattern);
     }
 }