diff --git a/src/DigitalData.Swagger.MockAPI/DigitalData.Swagger.MockAPI.csproj b/src/DigitalData.Swagger.MockAPI/DigitalData.Swagger.MockAPI.csproj index af1efcb..898be1c 100644 --- a/src/DigitalData.Swagger.MockAPI/DigitalData.Swagger.MockAPI.csproj +++ b/src/DigitalData.Swagger.MockAPI/DigitalData.Swagger.MockAPI.csproj @@ -7,6 +7,7 @@ + diff --git a/src/DigitalData.Swagger.MockAPI/Entities/Company.cs b/src/DigitalData.Swagger.MockAPI/Entities/Company.cs new file mode 100644 index 0000000..f48d3ca --- /dev/null +++ b/src/DigitalData.Swagger.MockAPI/Entities/Company.cs @@ -0,0 +1,9 @@ +namespace DigitalData.Swagger.MockAPI.Dtos; + +public class Company +{ + public int ID { get; set; } + public string? Name { get; set; } + public int Size { get; set; } + public List? Products { get; set; } +} \ No newline at end of file diff --git a/src/DigitalData.Swagger.MockAPI/Entities/Product.cs b/src/DigitalData.Swagger.MockAPI/Entities/Product.cs new file mode 100644 index 0000000..9a5f642 --- /dev/null +++ b/src/DigitalData.Swagger.MockAPI/Entities/Product.cs @@ -0,0 +1,9 @@ +namespace DigitalData.Swagger.MockAPI.Dtos; + +public class Product +{ + public int ID { get; set; } + public int CompanyID { get; set; } + public string? Name { get; set; } + public decimal Price { get; set; } +} \ No newline at end of file diff --git a/src/DigitalData.Swagger.MockAPI/Repos/CompanyRepo.cs b/src/DigitalData.Swagger.MockAPI/Repos/CompanyRepo.cs new file mode 100644 index 0000000..4929303 --- /dev/null +++ b/src/DigitalData.Swagger.MockAPI/Repos/CompanyRepo.cs @@ -0,0 +1,95 @@ +using DigitalData.Swagger.MockAPI.Dtos; +using System; + +namespace DigitalData.Swagger.MockAPI.Repos; +public class CompanyRepo : ICompanyRepo +{ + private readonly Lazy> _lazyCompanies = new(() => new() + { + new() + { + ID = 1, + Name = "TechCorp", + Size = 500, + Products = new List + { + new() { ID = 1, CompanyID = 1, Name = "Laptop X1", Price = 1200.99m }, + new() { ID = 2, CompanyID = 1, Name = "Smartphone S2", Price = 799.49m } + } + }, + new Company + { + ID = 2, + Name = "AutoWorks", + Size = 300, + Products = new List + { + new Product { ID = 3, CompanyID = 2, Name = "Electric Car E1", Price = 35000m }, + new() { ID = 4, CompanyID = 2, Name = "Hybrid SUV H2", Price = 42000m } + } + }, + new Company + { + ID = 3, + Name = "MediHealth", + Size = 200, + Products = new List + { + new() { ID = 5, CompanyID = 3, Name = "Vitamin Pack V10", Price = 19.99m }, + new() { ID = 6, CompanyID = 3, Name = "Protein Shake P5", Price = 25.49m } + } + }, + new Company + { + ID = 4, + Name = "HomeStyle", + Size = 150, + Products = new List + { + new() { ID = 7, CompanyID = 4, Name = "Smart Blender B3", Price = 89.99m }, + new() { ID = 8, CompanyID = 4, Name = "Air Purifier A1", Price = 149.99m } + } + }, + new Company + { + ID = 5, + Name = "GadgetZone", + Size = 400, + Products = new List + { + new() { ID = 9, CompanyID = 5, Name = "Wireless Earbuds W1", Price = 99.99m }, + new() { ID = 10, CompanyID = 5, Name = "Smart Watch G5", Price = 199.99m } + } + } + }); + + private List _companies => _lazyCompanies.Value; + + public IQueryable GetAll() + { + return _companies.AsQueryable(); + } + + public IQueryable GetById(int id) + { + return _companies + .AsQueryable() + .Where(c => c.ID == id); + } + + public void Create(Company company) + { + _companies.Add(company); + } + + public void Update(Company company) + { + var i = _companies.FindIndex(c => c.ID == company.ID); + _companies[i] = company; + } + + public void Delete(Company company) + { + _companies.RemoveAll(c => c.ID == company.ID); + } +} \ No newline at end of file diff --git a/src/DigitalData.Swagger.MockAPI/Repos/ICompanyRepo.cs b/src/DigitalData.Swagger.MockAPI/Repos/ICompanyRepo.cs new file mode 100644 index 0000000..47808a3 --- /dev/null +++ b/src/DigitalData.Swagger.MockAPI/Repos/ICompanyRepo.cs @@ -0,0 +1,11 @@ +using DigitalData.Swagger.MockAPI.Dtos; +namespace DigitalData.Swagger.MockAPI.Repos; + +public interface ICompanyRepo +{ + public IQueryable GetAll(); + public IQueryable GetById(int id); + public void Create(Company company); + public void Update(Company company); + public void Delete(Company company); +} \ No newline at end of file