Beispiel #1
0
            public Task <NumberTagResolveResult> Resolve(GenerateNumberRequest request, IEnumerable <string> tags, CancellationToken cancellationToken)
            {
                var result = new NumberTagResolveResult
                {
                    Date   = Date,
                    Values = Values.Where(x => tags.Contains(x.Key)).ToDictionary(x => x.Key, x => x.Value, Numerator.TagComparer)
                };

                return(Task.FromResult(result));
            }
        public async Task <NumberTagResolveResult> Resolve(GenerateNumberRequest request, IEnumerable <string> tags, CancellationToken cancellationToken)
        {
            if (request.EntityTypeCode == DocumentType.EntityTypeCode)
            {
                var searchResult = await _repository.Search(new DocumentSearchRequest { Uid = request.EntityUid }, cancellationToken);

                var document = searchResult.Rows.FirstOrDefault();

                if (document != null)
                {
                    DocumentType documentType = null;

                    var result = new NumberTagResolveResult
                    {
                        Date   = document.DocumentDate,
                        Values = new Dictionary <string, string>(Numerator.TagComparer)
                    };

                    foreach (var tag in tags)
                    {
                        // todo: read document type and company number tags from separate table (service)
                        if (tag == SupportedTags.DocumentType)
                        {
                            if (documentType == null)
                            {
                                var classifierRepository = _classifierRepositoryFactory.GetNamedOrDefaultService(ClassifierTypeCode.DocumentType);
                                documentType = (DocumentType)await classifierRepository.Get(ClassifierTypeCode.DocumentType, document.DocumentTypeUid, cancellationToken);
                            }

                            result.Values[tag] = "CRR";                             // documentType.Code;
                        }
                        else if (tag == SupportedTags.Company)
                        {
                            // todo: resolve tag
                        }
                    }

                    return(result);
                }
            }

            return(null);
        }