private void RecalculateSummary(int userId, int projectId, ProjectTimeAggregateRootState state) { var model = _models.GetOrAdd(userId, new ProjectUserSummary { ProjectId = projectId, UserId = userId }); model.ProjectTotalAmountEarned = 0; model.ProjectTotalHoursReported = 0; model.UserTotalAmountEarned = 0; model.UserTotalHoursReported = 0; foreach (var dt in state.DailyTime) { var hoursReported = dt.TotalHours - dt.PaidHours; var amountEarned = hoursReported * dt.HourlyRate; model.ProjectTotalHoursReported += hoursReported; model.ProjectTotalAmountEarned += amountEarned; if (dt.UserId == userId) { model.UserTotalHoursReported += hoursReported; model.UserTotalAmountEarned += amountEarned; } } }
public void On(InvoiceEvent e, ProjectTimeAggregateRootState state) { if (e.EventType == InvoiceEventType.Billing) { OnBilling(e); } if (e.EventType == InvoiceEventType.EarningDistribution) { OnDistributeEarnings(e); } if (e.EventType == InvoiceEventType.Cancel) { OnCancelInvoice(e); } if (e.EventType == InvoiceEventType.Paid) { OnPaidInvoice(e); } }
public void On(InvoiceEvent @event, ProjectTimeAggregateRootState state) { RecalculateSummary(@event.UserId, @event.ProjectId, state); }
public void On(TimeTrackedEvent evt, ProjectTimeAggregateRootState state) { _readModels = state.DailyTime.ToList(); }