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; }
//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; }
public void From_subcategory_enum_match(string text, CategoryType expected) { CategoryTypeConverter.FromSubcategory(text).Should().Be(expected); }