Exemple #1
0
        public async Task <Result <GetDetails.SchoolDetails, Error> > Handle(GetDetails.Query request, CancellationToken cancellationToken)
        {
            var id = SchoolId.With(request.SchoolId);

            var events = await _eventStore.LoadEventsAsync <SchoolAggregate, SchoolId>(id, cancellationToken);

            var school = await _aggregateStore.LoadAsync <SchoolAggregate, SchoolId>(id, cancellationToken);

            if (school.IsNew)
            {
                return(Result.Failure <GetDetails.SchoolDetails, Error>(new Error.ResourceNotFound()));
            }

            var details = await BuildDetails(school, events);

            return(Result.Success <GetDetails.SchoolDetails, Error>(details));
        }
        private async Task <IActionResult> BuildPage(Guid schoolId)
        {
            SchoolId = schoolId;
            var request = new GetDetails.Query()
            {
                SchoolId = schoolId
            };
            var result = await _engine.Query(request);

            if (result.IsFailure)
            {
                return new PageResult()
                       {
                           StatusCode = (int)HttpStatusCode.NotFound
                       }
            }
            ;

            SchoolDetails = result.Value;
            return(Page());
        }