diff --git a/Controllers/BooksController.cs b/Controllers/BooksController.cs new file mode 100644 index 0000000..53bae93 --- /dev/null +++ b/Controllers/BooksController.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using TestApplication.Data; +using TestApplication.DTO; +using System.Linq; +using Microsoft.EntityFrameworkCore; + +namespace TestApplication.Controllers +{ + [ApiController] + [Route("[controller]")] + public class BooksController : ControllerBase + { + private readonly Context _context; + + public BooksController(Context context) + { + _context = context; + } + + [HttpGet] + public async Task>> GetBooks() + { + var book = from books in _context.Book + join book_descriptions in _context.Book_Description on books.id equals book_descriptions.book_id + select new BookDTO + { + Book_id = books.id, + Book_price = books.price, + ISBN = books.isbn, + Book_name = book_descriptions.book_name, + Book_description = book_descriptions.book_description + }; + + return await book.ToListAsync(); + } + + [HttpGet("{id}")] + public ActionResult GetBooks_byId(int id) + { + var book = from books in _context.Book + join book_descriptions in _context.Book_Description on books.id equals book_descriptions.book_id + select new BookDTO + { + Book_id = books.id, + Book_price = books.price, + ISBN = books.isbn, + Book_name = book_descriptions.book_name, + Book_description = book_descriptions.book_description + }; + + var book_by_id = book.ToList().Find(x => x.Book_id == id); + + if (book_by_id == null) + { + return NotFound(); + } + return book_by_id; + } + } +} \ No newline at end of file diff --git a/DTO/BookDTO.cs b/DTO/BookDTO.cs new file mode 100644 index 0000000..ef7fd22 --- /dev/null +++ b/DTO/BookDTO.cs @@ -0,0 +1,11 @@ +namespace TestApplication.DTO +{ + public class BookDTO + { + public int Book_id { get; set; } + public decimal Book_price { get; set; } + public string ISBN { get; set; } + public string Book_name { get; set; } + public string Book_description { get; set; } + } +} \ No newline at end of file diff --git a/Data/Context.cs b/Data/Context.cs index b538cbe..bc5e93b 100644 --- a/Data/Context.cs +++ b/Data/Context.cs @@ -7,5 +7,7 @@ namespace TestApplication.Data { public Context(DbContextOptions options) : base(options) {} public DbSet Values {get; set;} + public DbSet Book {get; set;} + public DbSet Book_Description {get; set;} } } \ No newline at end of file diff --git a/Models/Book.cs b/Models/Book.cs new file mode 100644 index 0000000..62ef418 --- /dev/null +++ b/Models/Book.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace TestApplication.Models +{ + public class Book + { + [Key] + public int id { get; set; } + public decimal price { get; set; } + public string isbn { get; set; } + } +} \ No newline at end of file diff --git a/Models/Book_description.cs b/Models/Book_description.cs new file mode 100644 index 0000000..be63d81 --- /dev/null +++ b/Models/Book_description.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace TestApplication.Models +{ + public class Book_description + { + [Key] + public int id { get; set; } + public int book_id { get; set; } + public string book_name { get; set; } + public string book_description { get; set; } + } +} \ No newline at end of file