public void PointsEarned(double points, MembershipPointsType type) { var @event = new MembershipPointsEarnedEvent(Id, points, type, DateTime.UtcNow, Version); ApplyEvent(@event); AppendEvent(@event); }
public MembershipPointsEarnedEvent(Guid id, double amount, MembershipPointsType pointsType, DateTime earnedAt, int currentVersion) { Id = id; Amount = amount; PointsType = pointsType; EarnedAt = earnedAt; Timestamp = DateTime.UtcNow; CurrentVersion = currentVersion; AppliedVersion = currentVersion + 1; }
public async Task PointsEarned(Guid id, double points, MembershipPointsType type) { var entity = await GenericEntityFactory <Membership> .GetEntityAsync(_simpleEventStoreDbContext, id.ToString()); entity.PointsEarned(points, type); await _simpleEventStoreDbContext.SavePendingEventsAsync(entity.PendingEvents, 1, "Sample"); await _eventBusService.Publish(entity.PendingEvents); }
public static MembershipPoint New(double amount, MembershipPointsType type, DateTime earnedAt) { var newPoint = new MembershipPoint(amount, type, earnedAt); return(newPoint); }
protected MembershipPoint(double amount, MembershipPointsType type, DateTime earnedAt) { Amount = amount; Type = type; EarnedAt = earnedAt; }
public async Task EarnPoints_ShouldReturn_Ok(string customerUsername, int pointsToAdd, MembershipPointsType membershipPointsType) { var readModelContext = (ReadModelDbContext)_fixture.Services.GetService(typeof(ReadModelDbContext)); var customer = (await readModelContext.Customers.FirstOrDefaultAsync(c => c.Username == customerUsername)); var member = (await readModelContext.Memberships.FirstOrDefaultAsync(m => m.CustomerId == customer.Id)); var currentPoint = member.TotalPoints; var currentVersion = member.Version; var request = new EarnPointsAggregateMembershipCommand(member.Id, membershipPointsType, pointsToAdd); var response = await _client.PutRequestAsStringContent("/Membership/points", request); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); _output.WriteLine(content); var jsonObject = JObject.Parse(content); jsonObject.ShouldContainKeyAndValue("totalPoints", pointsToAdd + (int)currentPoint); jsonObject.ShouldContainKey("version"); var newVersion = (int)jsonObject.GetValue("version"); newVersion.ShouldBeGreaterThan(currentVersion); }
public MembershipPointReadModel(double amount, MembershipPointsType type, DateTime earnedAt) { Amount = amount; Type = type; EarnedAt = earnedAt; }