using System.Collections.Generic;
using BuecherwurmAPI.Models;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using BuecherwurmAPI.Data;

namespace BuecherwurmAPI.Controllers
{
   [Route("katalog") ]
   [ApiController]
   public class KatalogController :ControllerBase
   {
        private readonly IBookRepo _repository;

        public KatalogController (IBookRepo repository)
        {
            _repository=repository;
        }
        // GET Katalog
        [HttpGet]
        public ActionResult<IEnumerable<Book>> GetAllBooks()
        {
            var books =_repository.GetAllBooks();
            return Ok(books);
        }

        // POST Katalog
        [HttpPost]
        public ActionResult<IEnumerable<Book>> NeuesBuch(Book book)
        {

            return Ok(new Book
            {
                Name = book.Name,
                Author= book.Author,
                Country= book.Country,
                Link= book.Link,
                Language= book.Language,
                Pages= book.Pages,
                Year=book.Year,
                ProductId =book.ProductId,
                Category= book.Category,
                ImageLink =book.ImageLink,
                LendTime =book.LendTime,
                LendType = book.LendType
            });
        }


        // GET katalog/{id}
        [HttpGet("{id}", Name ="GetBookByID")]
        public ActionResult <IEnumerable<Book>> GetBookByID(int id)
        {
            var book = _repository.GetBookById(id);
            if (book != null)
            {
                return Ok(book);
            }
            return NoContent();

        }

        // PUT Katalog/{id}
        [HttpPut("id")]
        public ActionResult<IEnumerable<Book>> BuchBearbeiten(Book book)
        {
            return Ok(new Book
            {
                Name = book.Name,
                Author= book.Author,
                Country= book.Country,
                Link= book.Link,
                Language= book.Language,
                Pages= book.Pages,
                Year=book.Year,
                ProductId =book.ProductId,
                Category= book.Category,
                ImageLink =book.ImageLink,
                LendTime =book.LendTime,
                LendType = book.LendType
            });
        } 
        
        // DELETE katalog/{id}
        [HttpDelete("id")]
        public ActionResult<IEnumerable<Book>> BuchEntfernen (int id)
        {
            var book = _repository.GetBookById(id);
            if(book == null)
                {
                    return NotFound();
                }
            _repository.BuchEntfernen(book);
            return NoContent();
        }

   }

}