/// <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); }