コード例 #1
0
        public async Task <IActionResult> GetTemplateRevisions([FromRoute, ObjectIdValidation] string templateId, int limit = 100, int skip = 0,
                                                               DateTimeOffset?dateBefore = null)
        {
            var getTemplateRevisionsFilter = new GetTemplateRevisionsFilter()
            {
                Limit      = Math.Clamp(limit, 0, 1000),
                Skip       = Math.Max(0, skip),
                DateBefore = dateBefore
            };
            var getTemplateRevisionResult =
                await _templateService.GetFilteredTemplateRevisions(ObjectId.Parse(templateId), getTemplateRevisionsFilter);

            switch (getTemplateRevisionResult)
            {
            case BadRequestTypedResult <IEnumerable <TemplateRevisionEntity> > badRequestTypedResult:
                ModelState.AddModelError(badRequestTypedResult.Key, badRequestTypedResult.ErrorMessage);
                return(ValidationProblem(ModelState));

            case FailedTypedResult <IEnumerable <TemplateRevisionEntity> > failedTypedResult:
                return(Problem(failedTypedResult.Error.ToString(), statusCode: StatusCodes.Status500InternalServerError,
                               title: failedTypedResult.Error.Message));

            case NotFoundTypedResult <IEnumerable <TemplateRevisionEntity> > _:
                return(NotFound());

            case SuccessfulTypedResult <IEnumerable <TemplateRevisionEntity> > successfulTypedResult:
                return(Ok(new FilteredDtoOut <GetTemplateRevisionsFilter, TemplateRevisionOutDto>(getTemplateRevisionsFilter,
                                                                                                  Mapper.Map <IEnumerable <TemplateRevisionEntity>, IEnumerable <TemplateRevisionOutDto> >(successfulTypedResult.Value))));

            default:
            {
                var argException = new ArgumentOutOfRangeException(nameof(getTemplateRevisionResult));
                return(Problem(argException.ToString(), statusCode: StatusCodes.Status500InternalServerError,
                               title: argException.Message));
            }
            }
        }
コード例 #2
0
        public async Task <TypedResult <IEnumerable <TemplateRevisionEntity> > > GetFilteredTemplateRevisions(ObjectId templateId, GetTemplateRevisionsFilter getTemplateRevisionsFilter)
        {
            try
            {
                if (getTemplateRevisionsFilter == null)
                {
                    return(new BadRequestTypedResult <IEnumerable <TemplateRevisionEntity> >("TemplateRevisionsFilter", "TemplateRevisionsFilter must not be null."));
                }

                var filters = new List <FilterDefinition <TemplateRevisionEntity> >();
                if (getTemplateRevisionsFilter.DateBefore.HasValue)
                {
                    filters.Add(Builders <TemplateRevisionEntity> .Filter.Lte(te => te.CreatedDate, getTemplateRevisionsFilter.DateBefore));
                }


                var opts = new FindOptions <TemplateRevisionEntity>()
                {
                    Limit = getTemplateRevisionsFilter.Limit, Skip = getTemplateRevisionsFilter.Skip, Sort = Builders <TemplateRevisionEntity> .Sort.Descending(me => me.CreatedDate)
                };
                if (filters.Any())
                {
                    var foundTemplates = (await _templateRevisionCollection.FindAsync(Builders <TemplateRevisionEntity> .Filter.And(filters), opts)).ToList();
                    return(new SuccessfulTypedResult <IEnumerable <TemplateRevisionEntity> >(foundTemplates));
                }
                else
                {
                    var foundTemplates = (await _templateRevisionCollection.FindAsync(Builders <TemplateRevisionEntity> .Filter.Empty, opts)).ToList();
                    return(new SuccessfulTypedResult <IEnumerable <TemplateRevisionEntity> >(foundTemplates));
                }
            }
            catch (Exception e)
            {
                return(new FailedTypedResult <IEnumerable <TemplateRevisionEntity> >(e));
            }
        }