public string GetRegNumber(string entityName, RegNumberCounterType counterType, NumberCounterPattern pattern) { lock (locker) { return(GenerateNumber(entityName, counterType, pattern)); } }
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); } }
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); } }