public async Task <IHttpActionResult> PostNewUserDocument(Document_AddBM model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userId = int.Parse(User.Identity.GetUserId());

            if (model.Base64Image != null)
            {
                var doc = await UploadDocument(model);

                var map = new UserDocumentMap
                {
                    UserId   = userId,
                    Document = doc
                };
                db.UserDocumentMaps.Add(map);
                await db.SaveChangesAsync();

                return(CreatedAtRoute("GetUserDocument", new { userId = userId, id = map.DocumentId }, map.Document));
            }

            else
            {
                return(BadRequest("No base64 image"));
            }
        }
        private async Task <Document> UploadDocument(Document_AddBM model)
        {
            Console.WriteLine("Doc Image Upload Started.");

            var uploaderResponse = await Helpers.UploadHelper.UploadBase64ImageAsync(db, User.Identity.GetUserId(), model.Base64Image, FileServerTokenType.DocumentUpload, true);

            if (uploaderResponse.StatusCode == HttpStatusCode.OK || uploaderResponse.StatusCode == HttpStatusCode.Created)
            {
                Console.WriteLine("Doc Image Uploaded, Path:" + uploaderResponse.FilePath);
                return
                    (new Document
                {
                    FileServerId = uploaderResponse.FileServerId,
                    FilePath = uploaderResponse.FilePath,
                    BF_Idx = (int)uploaderResponse.BF_Idx,
                    Description = model.Description
                });
            }
            else
            {
                var err = string.Format("Doc Image Upload Error, Code:{0}, Message:{1}", uploaderResponse.StatusCode, uploaderResponse.Message);
                Helpers.CustomHttpExceptions.CustomHttpException(HttpStatusCode.InternalServerError, err);
                return(null);
            }
        }
        public async Task <IHttpActionResult> PostNewCampaignDocument(int campaignId, Document_AddBM model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

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

            if (camp.CreatedById.ToString() != User.Identity.GetUserId())
            {
                return(Unauthorized());
            }
            if (camp.Status.HasFlag(CampaignStatus.ReadOnly))
            {
                Helpers.CustomHttpExceptions.CustomHttpException(HttpStatusCode.Forbidden, "Campaign is ReadOnly");
            }
            if (model.Base64Image != null)
            {
                var doc = await UploadDocument(model);

                var map = new CampaignDocumentMap
                {
                    CampaignId = campaignId,
                    Document   = doc
                };
                db.CampaignDocumentMaps.Add(map);
                await db.SaveChangesAsync();

                return(CreatedAtRoute("GetCampaignDocument", new { campaignId = campaignId, id = map.DocumentId }, map.Document));
            }

            else
            {
                return(BadRequest("No base64 image"));
            }
        }