Exemplo n.º 1
0
        public IEnumerable <SongDto> Get(SongMarkDto searchMarkDto, int desiredSongs)
        {
            var songsSelected = new List <SongDto>();
            var songDistance  = new List <Tuple <Song, double> >();

            var songs
                = _repositoryHolder
                  .SongRepository
                  .Get();

            foreach (var song in songs)
            {
                songDistance.Add(
                    new Tuple <Song, double>(
                        song,
                        _songMarkCalculator
                        .GetDistance(
                            searchMarkDto,
                            new SongMarkDto()
                {
                    Energy = song.MeanEnergy,
                    Tempo  = song.MeanTempo
                }
                            )
                        )
                    );
            }

            return(songDistance
                   .OrderBy(e => e.Item2)
                   .Take(desiredSongs)
                   .Select(e => ToSongDto(e.Item1)));
        }
Exemplo n.º 2
0
        public void Insert(SongMarkDto songMarkDto)
        {
            var song        = _repositoryHolder.SongRepository.Get(songMarkDto.SongId);
            var newSongMark =
                new SongMark()
            {
                Energy = Convert.ToInt32(songMarkDto.Energy),
                Tempo  = Convert.ToInt32(songMarkDto.Tempo),
                Song   = song
            };

            song.SongMarks.Add(newSongMark);
            RecalculateMeanForSong(song);

            _repositoryHolder.SongRepository.Update(songMarkDto.SongId, song);

            _uof.Save();
        }
        public string Post([FromUri] SongMarkDto songMarkDto)
        {
            _songMarksService.Insert(songMarkDto);

            return("Successfully inserted");
        }
Exemplo n.º 4
0
 internal double GetDistance(SongMarkDto searchMarkDto, SongMarkDto songMarkDto)
 {
     return(Math.Sqrt(
                Math.Pow(searchMarkDto.Energy - songMarkDto.Energy, 2)
                + Math.Pow(searchMarkDto.Tempo - songMarkDto.Tempo, 2)));
 }