Beispiel #1
0
        public IHttpActionResult PutProgramMedia(int id, ProgramMedia item)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (id != item.Id)
            {
                return(BadRequest());
            }

            var currentUser  = AppUserManager.FindById(User.Identity.GetUserId());
            var programMedia = GetProgramMediaList(currentUser)
                               .FirstOrDefault(i => i.Id == item.Id);

            if (id != item.Id)
            {
                return(NotFound());
            }
            if (programMedia.MediaType == MediaType.Resource && !(AppUserManager.IsInRole(currentUser.Id, "Coach") || AppUserManager.IsInRole(currentUser.Id, "Admin")))
            {
                return(BadRequest("Only Coaches can upload Resources"));
            }

            var isLink = !String.IsNullOrEmpty(programMedia.Link);

            if (isLink && String.IsNullOrEmpty(item.Link))
            {
                return(BadRequest("Links cannot be empty"));
            }
            if (!isLink && !String.IsNullOrEmpty(item.Link))
            {
                return(BadRequest("Non Links do not have a Link Property"));
            }

            AppDb.Entry(programMedia).State = EntityState.Modified;

            programMedia.Name      = item.Name;
            programMedia.BodyText  = item.BodyText;
            programMedia.Link      = item.Link;
            programMedia.UpdatedAt = DateTime.Now;

            try
            {
                AppDb.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProgramMediaExists(id, currentUser))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }
Beispiel #2
0
        public async Task <HttpResponseMessage> PostFormData(int programId, MediaType mediaType)
        {
            var currentUser = AppUserManager.FindById(User.Identity.GetUserId());

            if (mediaType == MediaType.Resource && !(AppUserManager.IsInRole(currentUser.Id, "Coach") || AppUserManager.IsInRole(currentUser.Id, "Admin")))
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Only Coaches can upload Resources"));
            }
            var program = GetCoachingPrograms(currentUser)
                          .FirstOrDefault(i => i.Id == programId);

            if (program == null)
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden));
            }
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
            string root     = program.GetRootFolder();
            var    provider = new MultipartFormDataStreamProvider(root);

            try
            {
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(provider);

                var programMediaList = new List <ProgramMedia>();
                foreach (var file in provider.FileData)
                {
                    var originalFileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
                    var programMedia     = new ProgramMedia
                    {
                        BodyText         = String.Empty,
                        CoachingProgram  = program,
                        CreatedAt        = DateTime.Now,
                        Name             = originalFileName,
                        OriginalFileName = originalFileName,
                        FileName         = Path.GetFileName(file.LocalFileName),
                        MediaType        = mediaType,
                        UpdatedAt        = DateTime.Now,
                    };
                    AppDb.ProgramMedia.Add(programMedia);
                    programMediaList.Add(programMedia);
                }
                AppDb.SaveChanges();
                return(Request.CreateResponse(HttpStatusCode.OK, programMediaList));
            }
            catch (System.Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }
        }
Beispiel #3
0
        public IHttpActionResult PostAddLink(MediaType mediaType, ProgramMediaDTO dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var currentUser = AppUserManager.FindById(User.Identity.GetUserId());

            if (mediaType == MediaType.Resource && !(AppUserManager.IsInRole(currentUser.Id, "Coach") || AppUserManager.IsInRole(currentUser.Id, "Admin")))
            {
                return(BadRequest("Only Coaches can upload Resources"));
            }
            var coachingProgram = GetCoachingPrograms(currentUser)
                                  .FirstOrDefault(i => i.Id == dto.CoachingProgramId);

            if (coachingProgram == null)
            {
                if (coachingProgram == null)
                {
                    ModelState.AddModelError("CoachingProgramId", "Coaching Program Is Required");
                    return(BadRequest(ModelState));
                }
            }

            var programMedia = new ProgramMedia
            {
                BodyText        = String.Empty,
                CoachingProgram = coachingProgram,
                CreatedAt       = DateTime.Now,
                Link            = dto.Link,
                Name            = String.IsNullOrEmpty(dto.Name) ? dto.Link : dto.Name,
                MediaType       = mediaType,
                UpdatedAt       = DateTime.Now,
            };

            AppDb.ProgramMedia.Add(programMedia);

            AppDb.SaveChanges();
            return(Ok(programMedia));
        }