Esempio n. 1
0
    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")));
    }
Esempio n. 3
0
    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}&minus;{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);
     }
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
    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);
    }
Esempio n. 10
0
        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());
        }
Esempio n. 11
0
    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);
        }
    }