예제 #1
0
        /// <summary>
        /// Updates a sermon series
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <SystemResponse <SermonSeries> > ModifySermonSeries(string seriesId, SermonSeriesUpdateRequest request)
        {
            var validRequest = SermonSeriesUpdateRequest.ValidateRequest(request);

            if (validRequest.HasErrors)
            {
                return(new SystemResponse <SermonSeries>(true, validRequest.ErrorMessage));
            }

            if (string.IsNullOrEmpty(seriesId))
            {
                return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.NullProperty, "SeriesId")));
            }

            var invalidId = ObjectId.TryParse(seriesId, out ObjectId id);

            if (!invalidId)
            {
                return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.InvalidPropertyType, "SeriesId", "ObjectId")));
            }

            var getSermonSeriesResponse = await _sermonsRepository.GetSermonSeriesForId(seriesId);

            if (getSermonSeriesResponse == null)
            {
                return(new SystemResponse <SermonSeries>(true, string.Format(SystemMessages.ErrorOcurredUpdatingDocumentForKey, seriesId)));
            }

            var series = getSermonSeriesResponse.Result;

            // make sure that no one can update the slug to something that already exists
            // this is not allowed
            if (series.Slug != request.Slug)
            {
                // cannot change the slug -> make sure a slug is set when you create the series.
                return(new SystemResponse <SermonSeries>(true, SystemMessages.UnableToModifySlugForExistingSermonSeries));
            }

            series.Name      = request.Name;
            series.EndDate   = request.EndDate.ToUniversalTime().Date;
            series.StartDate = request.StartDate.ToUniversalTime().Date;
            series.Thumbnail = request.Thumbnail;
            series.ArtUrl    = request.ArtUrl;
            series.Slug      = request.Slug;

            var updateResponse = await _sermonsRepository.UpdateSermonSeries(series);

            if (updateResponse.HasErrors)
            {
                return(new SystemResponse <SermonSeries>(true, updateResponse.ErrorMessage));
            }

            var response = updateResponse.Result;

            // Save data in cache.
            _cache.Set(string.Format(CacheKeys.GetSermonSeries, seriesId), response, PersistentCacheEntryOptions);

            return(new SystemResponse <SermonSeries>(response, "Success!"));
        }
        public async Task <ActionResult <SermonSeries> > ModifySermonSeries([BindRequired] string SeriesId, [FromBody] SermonSeriesUpdateRequest request)
        {
            var response = await _sermonsService.ModifySermonSeries(SeriesId, request);

            if (response.HasErrors)
            {
                return(StatusCode(400, response.ErrorMessage));
            }

            return(response.Result);
        }