Example #1
0
        //public IEnumerable<PredictionResult> PredictionResults { get; set; }
        //public IEnumerable<PredictionResult> Unmatched { get; set; }
        //public Dictionary<Guid,TextClassificationResult> Matched { get; set; }

        //public void Apply(IReadModelContext context,
        //  IDomainEvent<BankStatementAggregate, BankStatementId, BankStatementExtracted1Event> domainEvent)
        //{
        //  AggregateId = domainEvent.AggregateIdentity.Value;

        //  var rm = domainEvent.AggregateEvent.PredictionRequests.Single(x =>
        //    x.Id.ToString() == context.ReadModelId.ToVitaGuid().ToString());

        //  var id = context.ReadModelId;
        //  RequestId = id;
        //  Category = CategoryType.Uncategorised.GetDescription();
        //  SubCategory = SubCategories.Uncategorised;
        //  Description = rm.Description;
        //  Amount = Convert.ToDecimal(rm.Amount);
        //  Method = PredictionMethod.MultiClassClassifier;
        //  TransactionUtcDate = rm.TransactionUtcDate;
        //}

        public void Apply(IReadModelContext context,
                          IDomainEvent <BankStatementAggregate, BankStatementId, BankStatementPredicted2Event> domainEvent)
        {
            AggregateId = domainEvent.AggregateIdentity.Value;

            if (context.ReadModelId == AggregateId.ToString())
            {
                throw new ApplicationException();
            }

            var rm = domainEvent.AggregateEvent.PredictionResults.Single(x =>
                                                                         x.Request.Id.ToString() == context.ReadModelId.ToVitaGuid().ToString());

            if (rm == null)
            {
                Logger.Warning($"read model not found {context.ReadModelId}");
                return;
            }

            var id          = context.ReadModelId;
            var subcategory = GetSubCategory(rm.PredictedValue);

            RequestId          = id;
            Category           = CategoryTypeConverter.FromSubcategory(subcategory).GetDescription();
            SubCategory        = GetSubCategory(subcategory);
            Description        = rm.Request.Description;
            Amount             = Convert.ToDecimal(rm.Request.Amount);
            Method             = PredictionMethod.MultiClassClassifier;
            TransactionUtcDate = rm.Request.TransactionUtcDate;
        }
Example #2
0
        public void Apply(IReadModelContext context,
                          IDomainEvent <BankStatementAggregate, BankStatementId, BankStatementTextMatched3Event> domainEvent)
        {
            AggregateId = domainEvent.AggregateIdentity.Value;
            if (context.ReadModelId == AggregateId.ToString())
            {
                throw new ApplicationException();
            }

            var id = context.ReadModelId;

            if (string.IsNullOrEmpty(id))
            {
                Logger.Warning($"read model no id found {context.ReadModelId}");
                return;
            }

            var rm = domainEvent.AggregateEvent.Matched.SingleOrDefault(x => x.Key.Request.Id.ToString() == context.ReadModelId.ToVitaGuid().ToString());

            var request = rm.Key ?? domainEvent.AggregateEvent.Unmatched.Single(x => x.Request.Id.ToString() == context.ReadModelId.ToVitaGuid().ToString());

            var subcategory = rm.Key != null?GetSubCategory(rm.Value.Classifier?.SubCategory) : SubCategories.Uncategorised;

            RequestId          = id;
            Category           = CategoryTypeConverter.FromSubcategory(subcategory).GetDescription();
            SubCategory        = subcategory;
            Description        = request.Request.Description;
            Amount             = Convert.ToDecimal(request.Request.Amount);
            Method             = PredictionMethod.KeywordMatch;
            TransactionUtcDate = request.Request.TransactionUtcDate;
        }
Example #3
0
        private string GetSubCategory(string text)
        {
            if (CategoryTypeConverter.IsValidSubCategory(text))
            {
                return(text);
            }

            if (text == SubCategories.Uncategorised)
            {
                return(text);
            }

            if (text.ToLower() == "wages")
            {
                return(SubCategories.Income.SalaryWages);
            }

            throw new ApplicationException($"not valid subcategory: {text}");
        }
Example #4
0
 public void From_subcategory_enum_match(string text, CategoryType expected)
 {
     CategoryTypeConverter.FromSubcategory(text).Should().Be(expected);
 }
Example #5
0
 public void From_place_enum_match(string text, CategoryType expected)
 {
     CategoryTypeConverter.FromPlace(text).Should().Be(expected);
 }