diff --git a/Controllers/GerbilsController.cs b/Controllers/GerbilsController.cs index a659119..33813e6 100644 --- a/Controllers/GerbilsController.cs +++ b/Controllers/GerbilsController.cs @@ -1,6 +1,9 @@ using GerbilManager.Models; using GerbilManager.Repositories; +using GerbilManager.Dtos; + using Microsoft.AspNetCore.Mvc; +using GerbilManager.Converter; namespace GerbilManager.Controllers { @@ -17,17 +20,17 @@ namespace GerbilManager.Controllers //GET /gerbils [HttpGet] - public IEnumerable GetGerbils() + public IEnumerable GetGerbils() { - var items = repository.GetGerbils(); + var items = repository.GetGerbils().Select( gerbil => gerbil.AsDto()); return items; } //GET /gerbils [HttpGet("{id}")] - public ActionResult GetGerbil(Guid id) + public ActionResult GetGerbil(Guid id) { - var item = repository.GetGerbil(id); + var item = repository.GetGerbil(id).AsDto(); if(item is null) { diff --git a/Converter/BreederConveter.cs b/Converter/BreederConveter.cs new file mode 100644 index 0000000..5b8f936 --- /dev/null +++ b/Converter/BreederConveter.cs @@ -0,0 +1,17 @@ +using GerbilManager.Dtos; +using GerbilManager.Models; + +namespace GerbilManager.Converter +{ + public static class BreederConverterExtension + { + public static BreederDto AsDto(this Breeder breeder) + { + return new BreederDto{ + Id = breeder.Id, + Name = breeder.Name + }; + } + } +} + diff --git a/Converter/GerbilConverter.cs b/Converter/GerbilConverter.cs new file mode 100644 index 0000000..79f2f35 --- /dev/null +++ b/Converter/GerbilConverter.cs @@ -0,0 +1,19 @@ +using GerbilManager.Dtos; +using GerbilManager.Models; + +namespace GerbilManager.Converter +{ + public static class GerbilConverterExtension + { + public static GerbilDto AsDto(this Gerbil gerbil) + { + return new GerbilDto{ + Breeder = gerbil.Breeder.AsDto(), + Gender = (GenderDto) ((int) gerbil.Gender), + Name = gerbil.Name, + Litter = gerbil.Litter.AsDto() + }; + } + } +} + diff --git a/Converter/LitterConverter.cs b/Converter/LitterConverter.cs new file mode 100644 index 0000000..0461851 --- /dev/null +++ b/Converter/LitterConverter.cs @@ -0,0 +1,21 @@ +using GerbilManager.Dtos; +using GerbilManager.Models; + +namespace GerbilManager.Converter +{ + public static class LitterConverterExtension + { + public static LitterDto AsDto(this Litter litter) + { + return new LitterDto{ + Id = litter.Id, + Date = litter.Date, + Father = litter.Father.AsDto(), + Mother = litter.Mother.AsDto(), + Name = litter.Name, + Strength = litter.Strength + }; + } + } +} + diff --git a/Dtos/BreederDto.cs b/Dtos/BreederDto.cs new file mode 100644 index 0000000..969b381 --- /dev/null +++ b/Dtos/BreederDto.cs @@ -0,0 +1,8 @@ +namespace GerbilManager.Dtos +{ + public record BreederDto + { + public Guid Id { get; init; } + public string Name { get; init; } + } +} \ No newline at end of file diff --git a/Dtos/GenderDto.cs b/Dtos/GenderDto.cs new file mode 100644 index 0000000..28e3dea --- /dev/null +++ b/Dtos/GenderDto.cs @@ -0,0 +1,9 @@ +namespace GerbilManager.Dtos +{ + public enum GenderDto + { + unknown = 0, + male = 1, + female = 2 + } +} \ No newline at end of file diff --git a/Dtos/GerbilDto.cs b/Dtos/GerbilDto.cs new file mode 100644 index 0000000..ef8ad8a --- /dev/null +++ b/Dtos/GerbilDto.cs @@ -0,0 +1,11 @@ +namespace GerbilManager.Dtos +{ + public record GerbilDto + { + public Guid Id { get; init; } + public string Name { get; init; } + public GenderDto Gender { get; init; } + public LitterDto Litter { get; init; } + public BreederDto Breeder { get; init; } + } +} \ No newline at end of file diff --git a/Dtos/LitterDto.cs b/Dtos/LitterDto.cs new file mode 100644 index 0000000..8b8a84a --- /dev/null +++ b/Dtos/LitterDto.cs @@ -0,0 +1,12 @@ +namespace GerbilManager.Dtos +{ + public record LitterDto + { + public Guid Id { get; init; } + public string Name { get; init; } + public DateTime Date { get; init; } + public int Strength { get; init; } + public GerbilDto Father { get; init; } + public GerbilDto Mother { get; init; } + } +} \ No newline at end of file diff --git a/Models/Gender.cs b/Models/Gender.cs index 590ef4f..bcad74b 100644 --- a/Models/Gender.cs +++ b/Models/Gender.cs @@ -2,8 +2,8 @@ namespace GerbilManager.Models { public enum Gender { - unknown, - male, - female + unknown = 0, + male = 1, + female = 2 } } \ No newline at end of file