public void Handle(MatchCommentaryEvent e, string aggregateId) { string id = ResultHeaderReadModel.IdFromBitsMatchId(e.BitsMatchId, e.RosterId); ResultHeaderReadModel results = DocumentSession.Load <ResultHeaderReadModel>(id); results.SetMatchCommentary(e.SummaryText, e.SummaryHtml, e.BodyText); }
public HttpResponseMessage Get() { int season = DocumentSession.LatestSeasonOrDefault(SystemTime.UtcNow.Year); // rosters Roster[] rosters = DocumentSession.Query <Roster, RosterSearchTerms>() .Where(r => r.Season == season) .ToArray(); IEnumerable <string> resultIds = rosters.Select(x => ResultHeaderReadModel.IdFromBitsMatchId(x.BitsMatchId, x.Id !)); ResultHeaderReadModel[] results = DocumentSession.Load <ResultHeaderReadModel>(resultIds); Dictionary <string, ResultHeaderReadModel> resultsDictionary = results.Where(x => x != null) .ToDictionary(x => x.Id !); List <CalendarEvent> calendarEvents = new(); foreach (Roster roster in rosters) { _ = resultsDictionary.TryGetValue(ResultHeaderReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id !), out ResultHeaderReadModel resultHeaderReadModel); RosterCalendarEvent rosterCalendarEvent = new(roster, resultHeaderReadModel); calendarEvents.Add(rosterCalendarEvent); } // activities Activity[] activities = DocumentSession.Query <Activity, ActivityIndex>() .Where(x => x.Season == season) .ToArray(); foreach (Activity activity in activities) { ActivityCalendarEvent activityCalendarEvent = new(activity); calendarEvents.Add(activityCalendarEvent); } return(Request.CreateResponse(HttpStatusCode.OK, calendarEvents.ToArray(), new MediaTypeHeaderValue("text/iCal"))); }
public ActionResult Details(int id, string rosterId) { string headerId = ResultHeaderReadModel.IdFromBitsMatchId(id, rosterId); ResultHeaderReadModel headerReadModel = CompositionRoot.DocumentSession.Load <ResultHeaderReadModel>(headerId); if (headerReadModel == null) { throw new HttpException(404, "Match result not found"); } Roster roster = CompositionRoot.DocumentSession.Load <Roster>(headerReadModel.RosterId); ResultHeaderViewModel headerViewModel = new(headerReadModel, roster); if (roster.IsFourPlayer) { string matchId = ResultSeries4ReadModel.IdFromBitsMatchId(id, rosterId); ResultSeries4ReadModel resultReadModel = CompositionRoot.DocumentSession.Load <ResultSeries4ReadModel>(matchId) ?? new ResultSeries4ReadModel(); return(View("Details4", new Result4ViewModel(headerViewModel, resultReadModel))); } else { string matchId = ResultSeriesReadModel.IdFromBitsMatchId(id, rosterId); ResultSeriesReadModel resultReadModel = CompositionRoot.DocumentSession.Load <ResultSeriesReadModel>(matchId) ?? new ResultSeriesReadModel(); return(View(new ResultViewModel(headerViewModel, resultReadModel))); } }
public async Task ShouldStoreMatchResult() { await Transact(session => { ResultHeaderReadModel resultReadModel = session.Load <ResultHeaderReadModel>("ResultHeader-3048746"); Assert.That(resultReadModel, Is.Not.Null); return(Task.CompletedTask); }); }
public ResultHeaderViewModel(ResultHeaderReadModel readModel, Roster roster) { RosterId = roster.Id !; AggregateId = readModel.AggregateId !; Date = roster.Date; TeamLevel = roster.TeamLevel !; Turn = roster.Turn; Team = roster.Team; Opponent = roster.Opponent !; BitsMatchId = roster.BitsMatchId; FormattedResult = new HtmlString($"{readModel.TeamScore}−{readModel.OpponentScore}"); Location = roster.Location !; MatchCommentaryHtml = new HtmlString(readModel.MatchCommentaryHtml); BodyText = readModel.BodyText; }
public RosterCalendarEvent(Roster roster, ResultHeaderReadModel resultHeaderReadModel) { id = roster.Id !; date = roster.Date; team = roster.Team; opponent = roster.Opponent !; location = roster.Location !; description = string.Empty; if (resultHeaderReadModel != null) { description = resultHeaderReadModel.MatchCommentary + TextLineFeed + TextLineFeed + string.Join(TextLineFeed + TextLineFeed, resultHeaderReadModel.BodyText); } }
public MatchRegisteredEmail_State( string from, string to, string subject, string team, string opponent, int score, int opponentScore, ResultSeriesReadModel resultSeriesReadModel, ResultHeaderReadModel resultHeaderReadModel) : base(from, to, BccEmail, subject) { Team = team; Opponent = opponent; Score = score; OpponentScore = opponentScore; ResultSeriesReadModel = resultSeriesReadModel; ResultHeaderReadModel = resultHeaderReadModel; }
public MatchRegisteredEmail( string team, string opponent, int score, int opponentScore, ResultSeriesReadModel resultSeriesReadModel, ResultHeaderReadModel resultHeaderReadModel) : base("MatchRegistered") { _state = new( EmailState.OwnerEmail, EmailState.OwnerEmail, "Match har registrerats", team, opponent, score, opponentScore, resultSeriesReadModel, resultHeaderReadModel); }
public override async Task Handle(HandlerContext <Command> context) { Roster roster = CompositionRoot.DocumentSession.Load <Roster>(context.Payload.RosterId); if (roster.IsFourPlayer) { return; } string resultSeriesReadModelId = ResultSeriesReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id !); ResultSeriesReadModel resultSeriesReadModel = CompositionRoot.DocumentSession.Load <ResultSeriesReadModel>(resultSeriesReadModelId); string resultHeaderReadModelId = ResultHeaderReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id !); ResultHeaderReadModel resultHeaderReadModel = CompositionRoot.DocumentSession.Load <ResultHeaderReadModel>(resultHeaderReadModelId); MatchRegisteredEmail email = new( roster.Team, roster.Opponent !, context.Payload.Score, context.Payload.OpponentScore, resultSeriesReadModel, resultHeaderReadModel); await CompositionRoot.EmailService.SendAsync(email); }
private async Task <IHttpActionResult> Handle(MatchRegisteredEvent @event) { Roster roster = DocumentSession.Load <Roster>(@event.RosterId); if (roster.IsFourPlayer) { return(Ok()); } string resultSeriesReadModelId = ResultSeriesReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id); ResultSeriesReadModel resultSeriesReadModel = DocumentSession.Load <ResultSeriesReadModel>(resultSeriesReadModelId); string resultHeaderReadModelId = ResultHeaderReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id); ResultHeaderReadModel resultHeaderReadModel = DocumentSession.Load <ResultHeaderReadModel>(resultHeaderReadModelId); await Emails.MatchRegistered( roster.Team, roster.Opponent, @event.Score, @event.OpponentScore, resultSeriesReadModel, resultHeaderReadModel); return(Ok()); }
private void DoRegister(string aggregateId, string rosterId, int teamScore, int opponentScore) { Roster roster = DocumentSession.Load <Roster>(rosterId); if (roster == null) { throw new HttpException(404, "Roster not found"); } roster.MatchResultId = aggregateId; string id = ResultHeaderReadModel.IdFromBitsMatchId(roster.BitsMatchId, roster.Id !); ResultHeaderReadModel readModel = DocumentSession.Load <ResultHeaderReadModel>(id); if (readModel == null) { readModel = new ResultHeaderReadModel(roster, aggregateId, teamScore, opponentScore); DocumentSession.Store(readModel); } else { readModel.SetValues(roster, aggregateId, teamScore, opponentScore); } }