public IHttpActionResult Post()
        {
            try
            {
                using (InterpretEntities entites = new InterpretEntities())
                {
                    Models.InterpretJSON interpret = new Models.InterpretJSON(Request.Content.ReadAsStringAsync().Result);

                    // check if the interpret is already in the database
                    var element = entites.Interpret.FirstOrDefault(i => i.NAME == interpret.Name);
                    if (element == null)
                    {
                        // create the interpret
                        InterpretDataAccess.Interpret createdInterpret = new InterpretDataAccess.Interpret();
                        createdInterpret.NAME = interpret.Name;
                        entites.Interpret.Add(createdInterpret);
                        entites.SaveChanges();

                        // return success message
                        return(Ok("Interpret successfully created!"));
                    }
                    else
                    {
                        return(Ok("Interpret already exists"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public IHttpActionResult Delete(int id)
        {
            try
            {
                if (id <= 0)
                {
                    return(BadRequest("Not a valid id"));
                }

                using (InterpretEntities entites = new InterpretEntities())
                {
                    var join = (from m in entites.MusicFile
                                join title in entites.Title
                                on m.Title equals title.ID
                                select new { ID = m.ID, Title = new Models.TitleDTO {
                                                 ID = title.ID, Name = title.NAME
                                             }, Interpret = m.Interpret, Genre = title.Genre });
                    var interprets = (join.Where(m => m.Interpret == id)).ToList();

                    // delete all music files with the given interpret id
                    interprets.ForEach(interpret =>
                    {
                        entites.MusicFile.Remove(entites.MusicFile.FirstOrDefault(m => m.ID == interpret.ID));
                        entites.SaveChanges();
                    });

                    // delete all titles for the given interpret
                    interprets.ForEach(interpret =>
                    {
                        entites.Title.Remove(entites.Title.FirstOrDefault(t => t.ID == interpret.Title.ID));
                        entites.SaveChanges();
                    });

                    // delete the interpret
                    entites.Interpret.Remove(entites.Interpret.FirstOrDefault(i => i.ID == id));
                    entites.SaveChanges();

                    return(Ok("Interpret was successfully deleted!"));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public IHttpActionResult Put()
        {
            try
            {
                using (InterpretEntities entites = new InterpretEntities())
                {
                    Models.InterpretJSON interpret = new Models.InterpretJSON(Request.Content.ReadAsStringAsync().Result);

                    // check if the interpret is in the database
                    var existingInterpret = entites.Interpret.FirstOrDefault(i => i.ID == interpret.ID);
                    if (existingInterpret != null)
                    {
                        // check if another interpret in the database has the same name
                        var element = entites.Interpret.FirstOrDefault(i => i.ID != interpret.ID && i.NAME == interpret.Name);
                        if (element == null)
                        {
                            existingInterpret.NAME = interpret.Name;
                            entites.SaveChanges();
                        }
                        else
                        {
                            return(Ok("An interpret with the same name already exists."));
                        }
                    }
                    else
                    {
                        return(Ok("Cant´t edit the interpret since it doesn´t exist in the database"));
                    }

                    return(Ok("Interpret successfully updated!"));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }