From 332f7026857c1f686b69e98b860557d14f1866bc Mon Sep 17 00:00:00 2001 From: "ismail.taha_janan" Date: Tue, 10 Jan 2023 11:08:02 +0100 Subject: [PATCH] :memo: controller adde for customer --- cat_cafe/Controllers/CustomersController.cs | 124 ++++++++++++++++++++ cat_cafe/Entities/Customer.cs | 11 ++ cat_cafe/Program.cs | 2 + cat_cafe/Properties/launchSettings.json | 5 +- cat_cafe/Repositories/CustomerContext.cs | 14 +++ 5 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 cat_cafe/Controllers/CustomersController.cs create mode 100644 cat_cafe/Entities/Customer.cs create mode 100644 cat_cafe/Repositories/CustomerContext.cs diff --git a/cat_cafe/Controllers/CustomersController.cs b/cat_cafe/Controllers/CustomersController.cs new file mode 100644 index 0000000..41ae9e4 --- /dev/null +++ b/cat_cafe/Controllers/CustomersController.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using cat_cafe.Entities; +using cat_cafe.Repositories; + +namespace cat_cafe.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class CustomersController : ControllerBase + { + private readonly CustomerContext _context; + + public CustomersController(CustomerContext context) + { + _context = context; + } + + // GET: api/Customers + [HttpGet] + public async Task>> GetCustomers() + { + if (_context.Customers == null) + { + return NotFound(); + } + return await _context.Customers.ToListAsync(); + } + + // GET: api/Customers/5 + [HttpGet("{id}")] + public async Task> GetCustomer(long id) + { + if (_context.Customers == null) + { + return NotFound(); + } + var customer = await _context.Customers.FindAsync(id); + + if (customer == null) + { + return NotFound(); + } + + return customer; + } + + // PUT: api/Customers/5 + // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 + [HttpPut("{id}")] + public async Task PutCustomer(long id, Customer customer) + { + if (id != customer.Id) + { + return BadRequest(); + } + + _context.Entry(customer).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + } + catch (DbUpdateConcurrencyException) + { + if (!CustomerExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return NoContent(); + } + + // POST: api/Customers + // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 + [HttpPost] + public async Task> PostCustomer(Customer customer) + { + if (_context.Customers == null) + { + return Problem("Entity set 'CustomerContext.Customers' is null."); + } + _context.Customers.Add(customer); + await _context.SaveChangesAsync(); + + return CreatedAtAction("GetCustomer", new { id = customer.Id }, customer); + } + + // DELETE: api/Customers/5 + [HttpDelete("{id}")] + public async Task DeleteCustomer(long id) + { + if (_context.Customers == null) + { + return NotFound(); + } + var customer = await _context.Customers.FindAsync(id); + if (customer == null) + { + return NotFound(); + } + + _context.Customers.Remove(customer); + await _context.SaveChangesAsync(); + + return NoContent(); + } + + private bool CustomerExists(long id) + { + return (_context.Customers?.Any(e => e.Id == id)).GetValueOrDefault(); + } + } +} diff --git a/cat_cafe/Entities/Customer.cs b/cat_cafe/Entities/Customer.cs new file mode 100644 index 0000000..f4e763f --- /dev/null +++ b/cat_cafe/Entities/Customer.cs @@ -0,0 +1,11 @@ +using System; +namespace cat_cafe.Entities +{ + public class Customer + { + public long Id { get; set; } + public string? FullName { get; set; } + public int Age { get; set; } = 0; + } +} + diff --git a/cat_cafe/Program.cs b/cat_cafe/Program.cs index e1c623e..16a7b2c 100644 --- a/cat_cafe/Program.cs +++ b/cat_cafe/Program.cs @@ -8,6 +8,8 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddDbContext(opt => opt.UseInMemoryDatabase("CatCafe")); +builder.Services.AddDbContext(opt => +opt.UseInMemoryDatabase("CatCafe")); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); diff --git a/cat_cafe/Properties/launchSettings.json b/cat_cafe/Properties/launchSettings.json index fd816e1..0e99e9a 100644 --- a/cat_cafe/Properties/launchSettings.json +++ b/cat_cafe/Properties/launchSettings.json @@ -1,4 +1,4 @@ -{ +{ "$schema": "https://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, @@ -11,7 +11,6 @@ "profiles": { "cat_cafe": { "commandName": "Project", - "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:7229;http://localhost:5229", @@ -28,4 +27,4 @@ } } } -} +} \ No newline at end of file diff --git a/cat_cafe/Repositories/CustomerContext.cs b/cat_cafe/Repositories/CustomerContext.cs new file mode 100644 index 0000000..bf1894c --- /dev/null +++ b/cat_cafe/Repositories/CustomerContext.cs @@ -0,0 +1,14 @@ +using cat_cafe.Entities; +using Microsoft.EntityFrameworkCore; + +namespace cat_cafe.Repositories +{ + public class CustomerContext:DbContext + { + public CustomerContext(DbContextOptions options) + :base(options) + {} + public DbSet Customers { get; set; } = null!; + } +} +