Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace MusicSystem.Services.Controllers
- {
- using MusicSystem.Data;
- using MusicSystem.Data.Repositories;
- using MusicSystem.Entities;
- using MusicSystem.Services.Models;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Web.Http;
- public class SongsController : ApiController
- {
- private IMusicSystemData data;
- public SongsController()
- :this(new MusicSystemData())
- {
- }
- public SongsController(IMusicSystemData data)
- {
- this.data = data;
- }
- [HttpGet]
- public IHttpActionResult All()
- {
- var songs = this.data.Songs.All().Select(SongModel.FromSong);
- return Ok(songs);
- }
- [HttpPost]
- public IHttpActionResult Create(SongModel song)
- {
- if (!this.ModelState.IsValid)
- {
- return BadRequest(ModelState);
- }
- var newSong = new Song
- {
- Title = song.Title,
- Year = song.Year,
- Genre = song.Genre,
- ArtistId = song.ArtistId
- };
- this.data.Songs.Add(newSong);
- this.data.Songs.SaveChanges();
- song.Id = newSong.Id;
- return Ok(song);
- }
- [HttpPut]
- public IHttpActionResult Update(int id, SongModel song)
- {
- if (!this.ModelState.IsValid)
- {
- return BadRequest(ModelState);
- }
- var existingSong = this.data.Songs.All().FirstOrDefault(s => s.Id == id);
- if (existingSong == null)
- {
- return BadRequest("Such song does not exists!");
- }
- existingSong.Title = song.Title;
- existingSong.Year = song.Year;
- existingSong.Genre = song.Genre;
- existingSong.ArtistId = song.ArtistId;
- this.data.Songs.SaveChanges();
- song.Id = id;
- return Ok(song);
- }
- [HttpDelete]
- public IHttpActionResult Delete(int id)
- {
- // create find method in repository later
- var existingSong = this.data.Songs.All().FirstOrDefault(s => s.Id == id);
- if (existingSong == null)
- {
- return BadRequest("Such song does not exists!");
- }
- this.data.Songs.Delete(existingSong);
- this.data.Songs.SaveChanges();
- return Ok();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement