public bool Create(MediaDto media)
        {
            using (var db = CreateConnection())
            {
                db.Open();

                var createMediaItem = db.Execute(@"INSERT INTO [dbo].[Media]
                                               ([MediaTypeId]
                                               ,[MediaConditionId]
                                               ,[Title]
                                               ,[DatePurchased]
                                               ,[DateAdded]
                                               ,[IsLentOut]
                                               ,[IsSold]
                                               ,[Notes]
                                               ,[artworkUrl100]
                                               ,[Artist]
                                               ,[Author])
                                         VALUES
                                               (@MediaTypeId
                                               ,@MediaConditionId
                                               ,@Title
                                               ,@DatePurchased
                                               ,default
                                               ,@IsLentOut
                                               ,@IsSold
                                               ,@Notes
                                               ,@artworkUrl100
                                               ,@Artist
                                               ,@Author)", media);

                return(createMediaItem == 1);
            }
        }
        public HttpResponseMessage EditMedia(int id, MediaDto media)
        {
            var mediaModifier = new MediaModifier();
            var editMedia     = mediaModifier.EditMediaItem(id, media);

            return(Request.CreateResponse(HttpStatusCode.OK, editMedia));
        }
示例#3
0
        public MediaDto BuildDto(IMedia entity)
        {
            var versionDto = new ContentVersionDto
            {
                NodeId      = entity.Id,
                VersionDate = entity.UpdateDate,
                VersionId   = entity.Version,
                ContentDto  = BuildContentDto(entity)
            };

            //Extract the media path for storage
            string mediaPath;

            TryMatch(entity.GetValue <string>("umbracoFile"), out mediaPath);

            var dto = new MediaDto()
            {
                NodeId            = entity.Id,
                ContentVersionDto = versionDto,
                MediaPath         = mediaPath,
                VersionId         = entity.Version
            };

            return(dto);
        }
示例#4
0
        public JsonResult GetSelfPage()
        {
            string username = HttpContext?.User?.Identity?.Name;

            if (username is default(string))
            {
                throw new ArgumentNullException("user");
            }

            if (!_accountService.TryGetIdentifierByUsername(username, out var identifier))
            {
                throw new ArgumentNullException("identifier");
            }

            return(new JsonResult(_context.Medias
                                  .AsEnumerable()
                                  .OrderByDescending(med => med.Date)
                                  .Where(m => m.UserIdentifier == identifier)
                                  .Select(media =>
            {
                var mediaDto = MediaDto.FromModel(media);
                mediaDto.LikedByMe = _accountService.LikedByUser(media, username);
                mediaDto.Comments = GetComments(media);
                mediaDto.UserName = _accountService.TryGetUsernameByIdentifier(media.UserIdentifier, out var userName) ? userName : String.Empty;
                mediaDto.NumberOfLikes = _context.Likes.Count(lik => lik.MediaIdentifier == media.Identifier);
                return mediaDto;
            }).ToArray()));
        }
示例#5
0
        public bool EditMediaItem(int id, MediaDto media)
        {
            using (var db = CreateConnection())
            {
                db.Open();

                var editMediaItem = db.Execute(@"UPDATE [dbo].[Media]
                                                   SET MediaTypeId = @MediaTypeId,
                                                       MediaConditionId = @MediaConditionId,
                                                       Title = @Title,
                                                       DatePurchased = @DatePurchased,
                                                       DateAdded = @DateAdded,
                                                       IsLentOut = @IsLentOut,
                                                       IsSold = @IsSold,
                                                       Notes = @Notes,
                                                       artworkUrl100 = @artworkUrl100,
                                                       Artist = @Artist
                                                 WHERE id = @id", new
                {
                    media.MediaTypeId,
                    media.MediaConditionId,
                    media.Title,
                    media.DatePurchased,
                    media.DateAdded,
                    media.IsLentOut,
                    media.IsSold,
                    media.Notes,
                    media.artworkUrl100,
                    media.Artist,
                    id
                });

                return(editMediaItem == 1);
            }
        }
        public Media Build(MediaDto mediaDto)
        {
            Media media = new Media();

            media.Title       = mediaDto.Title;
            media.Genero      = mediaDto.Genero;
            media.IsRelease   = mediaDto.IsRelease;
            media.ReleaseDate = mediaDto.ReleaseDate;
            return(media);
        }
示例#7
0
        public async Task <ActionResult> Put([FromBody] MediaDto input)
        {
            var media     = this._mapper.Map <MediaDto, Media>(input);
            var isSuccess = await this._mediaService.UpdateOne(media);

            if (!isSuccess)
            {
                return(UnprocessableEntity(input));
            }
            return(Ok());
        }
示例#8
0
        public void MediaDTO_MediaDataUrlWithLengthGreaterThan22IsValid()
        {
            var mediaDto = new MediaDto {
                Id = 1, Title = "0", Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,/"
            };
            var context = new ValidationContext(mediaDto, null, null);
            var results = new List <ValidationResult>();
            var actual  = Validator.TryValidateObject(mediaDto, context, results, true);

            Assert.AreEqual(true, actual);
        }
示例#9
0
        public void MediaDTO_TitleWithUnderscoreIsValid(string title)
        {
            var mediaDto = new MediaDto {
                Id = 1, Title = title, Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,/9ndhjffj"
            };
            var context = new ValidationContext(mediaDto, null, null);
            var results = new List <ValidationResult>();
            var actual  = Validator.TryValidateObject(mediaDto, context, results, true);

            Assert.AreEqual(true, actual);
        }
示例#10
0
        public async Task <IActionResult> GetMedias(string appId, [FromQuery] QueryDto q)
        {
            var medias = await mediaStore.QueryAsync(appId, q.ToQuery <MediaQuery>(), HttpContext.RequestAborted);

            var response = new ListResponseDto <MediaDto>();

            response.Items.AddRange(medias.Select(x => MediaDto.FromDomainObject(x, appId, urlGenerator)));
            response.Total = medias.Total;

            return(Ok(response));
        }
        public HttpResponseMessage CreateMedia(MediaDto media)
        {
            var mediaRepository = new MediaRepository();
            var result          = mediaRepository.Create(media);

            if (result)
            {
                return(Request.CreateResponse(HttpStatusCode.Created));
            }
            return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Could not create Media item at this time, try again later"));
        }
示例#12
0
        /// <summary>
        /// Builds a dto from an IMedia item.
        /// </summary>
        public static MediaDto BuildDto(PropertyEditorCollection propertyEditors, IMedia entity)
        {
            var contentDto = BuildContentDto(entity, Constants.ObjectTypes.Media);

            var dto = new MediaDto
            {
                NodeId          = entity.Id,
                ContentDto      = contentDto,
                MediaVersionDto = BuildMediaVersionDto(propertyEditors, entity, contentDto)
            };

            return(dto);
        }
        /// <summary>
        /// Buils a dto from an IMedia item.
        /// </summary>
        public static MediaDto BuildDto(IMedia entity)
        {
            var contentDto = BuildContentDto(entity, Constants.ObjectTypes.Media);

            var dto = new MediaDto
            {
                NodeId          = entity.Id,
                ContentDto      = contentDto,
                MediaVersionDto = BuildMediaVersionDto(entity, contentDto)
            };

            return(dto);
        }
        /// <summary>
        /// Builds a dto from an IMedia item.
        /// </summary>
        public static MediaDto BuildDto(MediaUrlGeneratorCollection mediaUrlGenerators, IMedia entity)
        {
            var contentDto = BuildContentDto(entity, Cms.Core.Constants.ObjectTypes.Media);

            var dto = new MediaDto
            {
                NodeId          = entity.Id,
                ContentDto      = contentDto,
                MediaVersionDto = BuildMediaVersionDto(mediaUrlGenerators, entity, contentDto)
            };

            return(dto);
        }
示例#15
0
        public void MediaDTO_TitleIsRequired()
        {
            var mediaDto = new MediaDto {
                Id = 1, Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,/9ndhjffj"
            };
            var context         = new ValidationContext(mediaDto, null, null);
            var results         = new List <ValidationResult>();
            var actual          = Validator.TryValidateObject(mediaDto, context, results, true);
            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The Title field is required.", validationError.ErrorMessage);
            Assert.AreEqual("Title", validationError.MemberNames.FirstOrDefault());
        }
示例#16
0
        public void MediaDTO_MediaDataUrlIsRequired()
        {
            var mediaDto = new MediaDto {
                Id = 1, Title = "0", Recipe_Id = 1
            };
            var context         = new ValidationContext(mediaDto, null, null);
            var results         = new List <ValidationResult>();
            var actual          = Validator.TryValidateObject(mediaDto, context, results, true);
            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The MediaDataUrl field is required.", validationError.ErrorMessage);
            Assert.AreEqual("MediaDataUrl", validationError.MemberNames.FirstOrDefault());
        }
示例#17
0
        public void MediaDTO_MediaDataUrlNeedsLengthGreaterThan22()
        {
            var mediaDto = new MediaDto {
                Id = 1, Title = "0", Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,"
            };
            var context         = new ValidationContext(mediaDto, null, null);
            var results         = new List <ValidationResult>();
            var actual          = Validator.TryValidateObject(mediaDto, context, results, true);
            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The field MediaDataUrl must be a string or array type with a minimum length of '22'.", validationError.ErrorMessage);
            Assert.AreEqual("MediaDataUrl", validationError.MemberNames.FirstOrDefault());
        }
        public async Task <IActionResult> AddMedia([FromBody] MediaDto media)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var isMediaAdded = await _mediaRepo.AddMediaAsync(_mapper.Map <Media>(media));

            if (isMediaAdded)
            {
                return(CreatedAtRoute("GetMediaById", new { id = media.MediaId }, _mapper.Map <MediaDto>(media)));
            }
            return(StatusCode(500, "Unable to Add Media at this time, please try later"));
        }
示例#19
0
        public void MediaDTO_TagWithUnauthorizedSymbolsIsInvalid(string tag)
        {
            var mediaDto = new MediaDto {
                Id = 1, Tag = tag, Title = "hi", Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,/9ndhjffj"
            };
            var context = new ValidationContext(mediaDto, null, null);
            var results = new List <ValidationResult>();
            var actual  = Validator.TryValidateObject(mediaDto, context, results, true);

            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The Media tag can only contain MAJ or MIN letters, digits, or _", validationError.ErrorMessage);
            Assert.AreEqual("Tag", validationError.MemberNames.FirstOrDefault());
        }
示例#20
0
        public void MediaDTO_RecipIdIsRequired()
        {
            var mediaDto = new MediaDto {
                Id = 1, Title = "hi", MediaDataUrl = "data:image/dd;base64,/9ndhjffj"
            };
            var context = new ValidationContext(mediaDto, null, null);
            var results = new List <ValidationResult>();
            var actual  = Validator.TryValidateObject(mediaDto, context, results, true);

            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The field Recipe_Id must be between 1 and 2147483647.", validationError.ErrorMessage);
            Assert.AreEqual("Recipe_Id", validationError.MemberNames.FirstOrDefault());
        }
示例#21
0
        public async Task <ActionResult> Post([FromBody] MediaDto input)
        {
            //TODO: add standard on naming
            var media    = this._mapper.Map <MediaDto, Media>(input);
            var response = await this._mediaService.AddOne(media);

            // this._context.medias.Add(media);
            // FIXME: Bug on saving new media..
            // var result = this._context.SaveChanges();
            if (!response.Success)
            {
                return(UnprocessableEntity(response));
            }
            //return Ok($"Object added. ID:{createdEntityId}");
            return(Ok(response));
        }
示例#22
0
        public void MediaDTO_TagLengthCannotBeGreaterThan50()
        {
            var rdm      = new Random();
            var tag      = rdm.GenerateRandomString(51);
            var mediaDto = new MediaDto {
                Id = 1, Tag = tag, Title = "hi", Recipe_Id = 1, MediaDataUrl = "data:image/dd;base64,/9ndhjffj"
            };
            var context = new ValidationContext(mediaDto, null, null);
            var results = new List <ValidationResult>();
            var actual  = Validator.TryValidateObject(mediaDto, context, results, true);

            var validationError = results.FirstOrDefault();

            Assert.AreEqual(false, actual);
            Assert.AreEqual("The field Tag must be a string or array type with a maximum length of '50'.", validationError.ErrorMessage);
            Assert.AreEqual("Tag", validationError.MemberNames.FirstOrDefault());
        }
示例#23
0
        public IEnumerable <MediaDto> getMedias()
        {
            List <Media>    medias    = db.medias.ToList();
            List <MediaDto> mediaDtos = new List <MediaDto> {
            };

            //Here you can choose which information is exposed to the API
            foreach (var media in medias)
            {
                MediaDto mediaDto = new MediaDto {
                    mediaId   = media.mediaId,
                    mediaName = media.mediaName,
                };
                mediaDtos.Add(mediaDto);
            }

            return(mediaDtos);
        }
        public IActionResult Post([FromBody] MediaDto mediaDto)
        {
            try
            {
                Media media = new MediaBuilder().Build(mediaDto);
                _mediaServices.Post <MediaValidator>(media);

                return(new ObjectResult(media.ID));
            }
            catch (ArgumentNullException ex)
            {
                return(NotFound(ex));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
示例#25
0
        public IActionResult Addfile([FromBody] MediaDto file)
        {
            var    media     = _mapper.Map <Media>(file);
            string localPath = "\\Media\\";

            switch (media.FileType)
            {
            case "Image":
                localPath = "\\Media\\Image\\";
                break;

            default: break;
            }

            string path           = _hostingEnvironment.ContentRootPath + localPath;
            var    dataFromHelper = MediaHelperClass.CreateMedia(media, path);
            var    data           = _mediaService.create(dataFromHelper);

            return(Ok(data));
        }
示例#26
0
        public IHttpActionResult findMedia(int id)
        {
            //Find the data
            Media media = db.medias.Find(id);

            //if not found, return 404 status code.
            if (media == null)
            {
                return(NotFound());
            }

            //put into a 'friendly object format'
            MediaDto mediaDto = new MediaDto {
                mediaId   = media.mediaId,
                mediaName = media.mediaName,
            };

            //pass along data as 200 status code OK response
            return(Ok(mediaDto));
        }
示例#27
0
        public IList <MediaDto> LocateAndLoadMedias(IEnumerable <Media> medias)
        {
            var result = new List <MediaDto>();

            foreach (var media in medias)
            {
                if (File.Exists(media.MediaPath))
                {
                    try
                    {
                        //var bytes = await File.ReadAllBytesAsync(media.MediaPath); // Not needed at the moment, not loading from remote server
                        var bytes = File.ReadAllBytes(media.MediaPath);
                        // Check that its indeed an image (by converting it to Image object)
                        var image = ByteArrayToImage(bytes);
                        if (image != null)
                        {
                            // convert bytes to base64 and create a dataURL object.
                            var b64String      = Convert.ToBase64String(bytes);
                            var mimeType       = "image/jpeg";
                            var dataUrl        = $"data:{mimeType};base64,{b64String}"; // jpeg is default. We convert all images to jpeg on receive
                            var convertedMedia = new MediaDto {
                                Id = media.Id, MediaDataUrl = dataUrl, Recipe_Id = media.Recipe_Id, Tag = media.Tag, Title = media.Title
                            };
                            result.Add(convertedMedia);
                            image.Dispose();
                        }
                    }
                    catch (Exception e)
                    {
                        this._logger.LogError($"Something happened when Loading media [[ID:{media.Id}, Title:{media.Title}, RecipeID:{media.Recipe_Id}] ");
                    }
                }
                else
                {
                    this._logger.LogWarning($"Path doesn't exist on Media [[ID:{media.Id}, Title:{media.Title}, RecipeID:{media.Recipe_Id}, path:{media.MediaPath}]. Won't load");
                }
            }
            return(result);
        }
示例#28
0
        public DigitalCaseDto GetLinkedCases()
        {
            #region Case 1

            DigitalCaseDto case1 = new DigitalCaseDto();
            case1.CaseId     = "case10011010101";
            case1.CaseNumber = 1001;
            case1.CaseTitle  = "Case 1";

            MediaDto media1 = new MediaDto();
            media1.ContentId   = "media11111";
            media1.Name        = "Photo 1";
            media1.ContentType = PHOTO;
            media1.URL         = "http://criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot7zz.jpg";

            MediaDto media2 = new MediaDto();
            media2.ContentId   = "media11112";
            media2.Name        = "Video 1";
            media2.ContentType = VIDEO;
            media2.URL         = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot15zz.jpg";

            MediaDto media3 = new MediaDto();
            media3.ContentId   = "media11113";
            media3.Name        = "Document 1";
            media3.ContentType = DOCUMENT;
            media3.URL         = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot13zz.jpg";

            case1.AddMedia(media1);
            case1.AddMedia(media2);
            case1.AddMedia(media3);

            #endregion

            #region Case 2

            DigitalCaseDto case2 = new DigitalCaseDto();
            case2.CaseId     = "case10011010122";
            case2.CaseNumber = 1002;
            case2.CaseTitle  = "Case 2";

            MediaDto media4 = new MediaDto();
            media4.ContentId = "media11121";
            media4.Name      = "Photo 3";
            media4.URL       = "http://criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot7zz.jpg";

            MediaDto media5 = new MediaDto();
            media5.ContentId = "media11122";
            media5.Name      = "Photo 4";
            media5.URL       = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot15zz.jpg";

            MediaDto media6 = new MediaDto();
            media6.ContentId   = "media11123";
            media6.ContentType = DOCUMENT;
            media6.Name        = "Document 5";
            media6.URL         = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot13zz.jpg";

            case2.AddMedia(media4);
            case2.AddMedia(media5);
            case2.AddMedia(media6);

            #endregion

            #region Case 3

            DigitalCaseDto case3 = new DigitalCaseDto();
            case3.CaseId     = "cas10011010122";
            case3.CaseNumber = 1003;
            case3.CaseTitle  = "Case 3";

            MediaDto media7 = new MediaDto();
            media7.ContentId = "media11121";
            media7.Name      = "Photo 30";
            media7.URL       = "http://criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot7zz.jpg";

            MediaDto media8 = new MediaDto();
            media8.ContentId = "media11122";
            media8.Name      = "Photo 31";
            media8.URL       = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot15zz.jpg";

            MediaDto media9 = new MediaDto();
            media9.ContentId   = "media11123";
            media9.ContentType = DOCUMENT;
            media9.Name        = "Document 5";
            media9.URL         = "http://www.criminaljusticeschools.com/wp-content/uploads/2013/01/mugshot13zz.jpg";

            case3.AddMedia(media7);
            case3.AddMedia(media8);
            case3.AddMedia(media9);

            #endregion

            case1.LinkToCase(case2);
            case1.LinkMedia("Match", media1, media4);

            case2.LinkToCase(case3);
            case2.LinkMedia("Referred in Doc", media4, media9, Direction.To);

            return(case1);
        }
        public Task <Stream> GetStream(MediaDto media)
        {
            var path = Path.Combine(_options.BasePath, media.Address);

            return(_fileSystem.ReadFile(path));
        }
 public void Initialize()
 {
     _instance = new MediaDto();
 }