Beispiel #1
0
        public IHttpActionResult GetCampaignImage(int campaignId, int id)
        {
            CampaignImage campaignImage = db.CampaignImages.Find(id);

            if (campaignImage == null)
            {
                return(NotFound());
            }

            return(Ok(campaignImage));
        }
Beispiel #2
0
        public async Task <IHttpActionResult> PostNewCampaignImage(int campaignId, CampaignImage_AddBM model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }



            var campaign = await db.SafelyGetCampaignById(campaignId, true);

            //Only the one who created the campaign can add images
            //TODO: Add this if you encountered an error db.Entry(campaignImage).Reference(p => p.Campaign).Load();
            /*NOTE: Admins can not add images to a campaign, they can only remove it sometimes!*/
            var userId = User.Identity.GetUserId();


            if (campaign.CreatedById.ToString() != userId)
            {
                return(Unauthorized());
            }
            var campaignImage = new CampaignImage
            {
                CampaignId     = campaignId,
                Description    = model.Description,
                ShownInGallery = model.ShownInGallery
            };

            if (string.IsNullOrEmpty(model.Base64Image))
            {
                return(BadRequest("No base64 image"));
            }
            else
            {
                var uploaderResponse = await Helpers.UploadHelper.UploadBase64ImageAsync(db, userId, model.Base64Image, FileServerTokenType.CampaignImageUpload);

                if (uploaderResponse.StatusCode == HttpStatusCode.OK || uploaderResponse.StatusCode == HttpStatusCode.Created)
                {
                    campaignImage.FilePath     = uploaderResponse.FilePath;
                    campaignImage.FileServerId = uploaderResponse.FileServerId;
                }
                else
                {
                    return(InternalServerError(new Exception(uploaderResponse.Message)));
                }
            }


            db.CampaignImages.Add(campaignImage);

            await db.SaveChangesAsync();

            if (model.AppendedToStory)
            {
                var storyElements = new List <string>();
                try {
                    storyElements = JsonConvert.DeserializeObject <List <string> >(campaign.Story);
                }
                catch (JsonReaderException) {
                    //This ensures compatibility with story property that contained plain text of story
                    storyElements.Add(campaign.Story);
                }
                storyElements.Add(string.Format("[campaignImageId:{0}]", campaignImage.Id));
                campaign.Story           = JsonConvert.SerializeObject(storyElements);
                db.Entry(campaign).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }

            return(CreatedAtRoute("PostNewCampaignImage", new { id = campaignImage.Id }, campaignImage));
        }