diff --git a/cat_cafe/Controllers/BarsController.cs b/cat_cafe/Controllers/BarsController.cs index 26b907d..db7c6bc 100644 --- a/cat_cafe/Controllers/BarsController.cs +++ b/cat_cafe/Controllers/BarsController.cs @@ -7,6 +7,10 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using cat_cafe.Entities; using cat_cafe.Repositories; +using AutoMapper; +using cat_cafe.Dto; +using System.Collections; +using System.Xml.Linq; namespace cat_cafe.Controllers { @@ -15,43 +19,63 @@ namespace cat_cafe.Controllers public class BarsController : ControllerBase { private readonly BarContext _context; + private readonly IMapper _mapper; + private readonly ILogger _logger; - public BarsController(BarContext context) + public BarsController(BarContext context,IMapper mapper, ILogger logger) { _context = context; + _mapper = mapper; + _logger = logger; } // GET: api/Bars [HttpGet] - public async Task>> GetBars() + public async Task>> GetBars() { - return await _context.Bars.ToListAsync(); + var bars = _context.Bars + .Include(a => a.cats) + .Select(a => new Bar + { + Id = a.Id, + Name = a.Name, + cats = a.cats.Select(p => new Cat { Name = p.Name, Age = p.Age, Id= p.Id}).ToList() + }) + .ToList(); + return _mapper.Map>(bars); } // GET: api/Bars/5 [HttpGet("{id}")] - public async Task> GetBar(long id) + public async Task> GetBar(long id) { - var bar = await _context.Bars.FindAsync(id); + var bar = _context.Bars.Include(p => p.cats) + .Select(a => new Bar + { + Id = a.Id, + Name = a.Name, + cats = a.cats.Select(p => new Cat { Name = p.Name, Age = p.Age, Id = p.Id }).ToList() + + }).FirstOrDefaultAsync(p => p.Id == id); if (bar == null) { return NotFound(); } - return bar; + return _mapper.Map(bar.Result); } // PUT: api/Bars/5 // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPut("{id}")] - public async Task PutBar(long id, Bar bar) + public async Task PutBar(long id, BarDto barDto) { - if (id != bar.Id) + if (id != barDto.Id) { return BadRequest(); } - + Bar bar = _mapper.Map(barDto); _context.Entry(bar).State = EntityState.Modified; try @@ -76,12 +100,16 @@ namespace cat_cafe.Controllers // POST: api/Bars // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPost] - public async Task> PostBar(Bar bar) + public async Task> PostBar(BarDto barDto) { + // Bar bar = _mapper.Map(barDto); + var bar = _mapper.Map(barDto); + + _context.Bars.Add(bar); await _context.SaveChangesAsync(); - return CreatedAtAction("GetBar", new { id = bar.Id }, bar); + return CreatedAtAction("GetBar", new { id = barDto.Id }, _mapper.Map(bar)); } // DELETE: api/Bars/5 diff --git a/cat_cafe/Dto/BarDto.cs b/cat_cafe/Dto/BarDto.cs new file mode 100644 index 0000000..85173dd --- /dev/null +++ b/cat_cafe/Dto/BarDto.cs @@ -0,0 +1,13 @@ +using System; +using cat_cafe.Entities; + +namespace cat_cafe.Dto +{ + public class BarDto + { + public long Id { get; set; } + public string? Name { get; set; } + public List cats { get; set; } = new List(); + } +} + diff --git a/cat_cafe/Dto/CatDto.cs b/cat_cafe/Dto/CatDto.cs index 86cf631..354e814 100644 --- a/cat_cafe/Dto/CatDto.cs +++ b/cat_cafe/Dto/CatDto.cs @@ -5,5 +5,6 @@ namespace cat_cafe.Dto { public long Id { get; set; } public string? Name { get; set; } + public int Age { get; set; } } } diff --git a/cat_cafe/Mappers/BarMapper.cs b/cat_cafe/Mappers/BarMapper.cs new file mode 100644 index 0000000..cb89d24 --- /dev/null +++ b/cat_cafe/Mappers/BarMapper.cs @@ -0,0 +1,18 @@ +using System; +using AutoMapper; +using cat_cafe.Dto; +using cat_cafe.Entities; + +namespace cat_cafe.Mappers +{ + public class BarMapper:Profile + { + public BarMapper() + { + + // var mapper = config.CreateMapper(); + CreateMap().ReverseMap(); + } + } +} + diff --git a/cat_cafe/log.txt b/cat_cafe/log.txt new file mode 100644 index 0000000..b50aa8e --- /dev/null +++ b/cat_cafe/log.txt @@ -0,0 +1,28 @@ +2023-01-21 09:37:45.148 +01:00 [INF] program start +2023-01-28 08:16:52.320 +01:00 [INF] program start +2023-01-28 08:30:32.772 +01:00 [INF] program start +2023-01-28 08:31:51.147 +01:00 [INF] program start +2023-01-28 08:35:42.533 +01:00 [INF] program start +2023-01-28 08:37:29.403 +01:00 [INF] program start +2023-01-28 08:38:02.513 +01:00 [INF] program start +2023-01-28 08:38:24.151 +01:00 [INF] program start +2023-01-28 08:39:11.319 +01:00 [INF] program start +2023-01-28 08:54:25.005 +01:00 [INF] program start +2023-01-28 08:55:19.776 +01:00 [INF] program start +2023-01-28 08:57:05.150 +01:00 [INF] POST => post customer +2023-01-28 08:57:05.326 +01:00 [INF] POST => 201 cat_cafe.Entities.Customer {"Id":1,"FullName":"string","Age":0} +2023-01-28 08:57:13.908 +01:00 [INF] GET => get All customers +2023-01-28 08:57:13.997 +01:00 [INF] GET => 200 System.Collections.Generic.List`1[cat_cafe.Entities.Customer] length[1] +2023-01-28 08:58:25.856 +01:00 [INF] program start +2023-01-28 09:05:05.071 +01:00 [INF] program start +2023-01-28 09:13:54.542 +01:00 [INF] program start +2023-01-28 09:17:54.058 +01:00 [INF] program start +2023-01-28 09:24:15.797 +01:00 [INF] program start +2023-01-28 09:26:42.943 +01:00 [INF] program start +2023-01-28 09:31:25.523 +01:00 [INF] program start +2023-01-28 09:38:42.245 +01:00 [INF] program start +2023-01-28 09:40:40.846 +01:00 [INF] program start +2023-01-28 09:49:33.194 +01:00 [INF] program start +2023-01-28 09:52:36.098 +01:00 [INF] program start +2023-01-28 09:56:02.340 +01:00 [INF] program start +2023-01-28 09:57:05.155 +01:00 [INF] program start