Skip to content

Commit 8121d85

Browse files
committed
git commit -m "Tüm proje dosyaları eklendi"
1 parent ae67ef4 commit 8121d85

File tree

187 files changed

+9184
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+9184
-0
lines changed

Controllers/OrderDetailsController.cs

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using AutoMapper;
2+
using CoreXCrud.DTOs;
3+
using CoreXCrud.Models;
4+
using CoreXCrud.Repositories;
5+
using FluentValidation;
6+
using Microsoft.AspNetCore.Mvc;
7+
8+
namespace CoreXCrud.Controllers
9+
{
10+
[Route("api/[controller]")]
11+
[ApiController]
12+
public class OrderDetailsController : ControllerBase
13+
{
14+
private readonly IUnitOfWork _unitOfWork;
15+
private readonly IMapper _mapper;
16+
private readonly IValidator<OrderDetailDto> _validator;
17+
18+
public OrderDetailsController(IUnitOfWork unitOfWork, IMapper mapper, IValidator<OrderDetailDto> validator)
19+
{
20+
_unitOfWork = unitOfWork;
21+
_mapper = mapper;
22+
_validator = validator;
23+
}
24+
25+
[HttpGet]
26+
public async Task<IActionResult> GetOrderDetails()
27+
{
28+
var orderDetails = await _unitOfWork.OrderDetails.GetAllAsync();
29+
var orderDetailsDto = _mapper.Map<IEnumerable<OrderDetailDto>>(orderDetails);
30+
return Ok(orderDetailsDto);
31+
}
32+
33+
[HttpGet("{id}")]
34+
public async Task<IActionResult> GetOrderDetail(int id)
35+
{
36+
var orderDetail = await _unitOfWork.OrderDetails.GetByIdAsync(id);
37+
if (orderDetail == null) return NotFound();
38+
var orderDetailDto = _mapper.Map<OrderDetailDto>(orderDetail);
39+
return Ok(orderDetailDto);
40+
}
41+
42+
[HttpPost]
43+
public async Task<IActionResult> CreateOrderDetail([FromBody] OrderDetailDto orderDetailDto)
44+
{
45+
var validationResult = await _validator.ValidateAsync(orderDetailDto);
46+
if (!validationResult.IsValid)
47+
return BadRequest(validationResult.Errors);
48+
49+
var orderDetail = _mapper.Map<OrderDetail>(orderDetailDto);
50+
await _unitOfWork.OrderDetails.AddAsync(orderDetail);
51+
await _unitOfWork.CompleteAsync();
52+
53+
var createdOrderDetailDto = _mapper.Map<OrderDetailDto>(orderDetail);
54+
return CreatedAtAction(nameof(GetOrderDetail), new { id = orderDetail.Id }, createdOrderDetailDto);
55+
}
56+
57+
[HttpPut("{id}")]
58+
public async Task<IActionResult> UpdateOrderDetail(int id, [FromBody] OrderDetailDto orderDetailDto)
59+
{
60+
if (id != orderDetailDto.Id) return BadRequest();
61+
var validationResult = await _validator.ValidateAsync(orderDetailDto);
62+
if (!validationResult.IsValid)
63+
return BadRequest(validationResult.Errors);
64+
65+
var orderDetail = _mapper.Map<OrderDetail>(orderDetailDto);
66+
await _unitOfWork.OrderDetails.UpdateAsync(orderDetail);
67+
await _unitOfWork.CompleteAsync();
68+
return NoContent();
69+
}
70+
71+
[HttpDelete("{id}")]
72+
public async Task<IActionResult> DeleteOrderDetail(int id)
73+
{
74+
await _unitOfWork.OrderDetails.DeleteAsync(id);
75+
await _unitOfWork.CompleteAsync();
76+
return NoContent();
77+
}
78+
}
79+
}

Controllers/OrdersController.cs

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using AutoMapper;
2+
using CoreXCrud.DTOs;
3+
using CoreXCrud.Models;
4+
using CoreXCrud.Repositories;
5+
using FluentValidation;
6+
using Microsoft.AspNetCore.Mvc;
7+
8+
namespace CoreXCrud.Controllers
9+
{
10+
[Route("api/[controller]")]
11+
[ApiController]
12+
public class OrdersController : ControllerBase
13+
{
14+
private readonly IUnitOfWork _unitOfWork;
15+
private readonly IMapper _mapper;
16+
private readonly IValidator<OrderDto> _validator;
17+
18+
public OrdersController(IUnitOfWork unitOfWork, IMapper mapper, IValidator<OrderDto> validator)
19+
{
20+
_unitOfWork = unitOfWork;
21+
_mapper = mapper;
22+
_validator = validator;
23+
}
24+
25+
[HttpGet]
26+
public async Task<IActionResult> GetOrders()
27+
{
28+
var orders = await _unitOfWork.Orders.GetAllAsync();
29+
var ordersDto = _mapper.Map<IEnumerable<OrderDto>>(orders);
30+
return Ok(ordersDto);
31+
}
32+
33+
[HttpGet("{id}")]
34+
public async Task<IActionResult> GetOrder(int id)
35+
{
36+
var order = await _unitOfWork.Orders.GetByIdAsync(id);
37+
if (order == null) return NotFound();
38+
var orderDto = _mapper.Map<OrderDto>(order);
39+
return Ok(orderDto);
40+
}
41+
42+
[HttpPost]
43+
public async Task<IActionResult> CreateOrder([FromBody] OrderDto orderDto)
44+
{
45+
var validationResult = await _validator.ValidateAsync(orderDto);
46+
if (!validationResult.IsValid)
47+
return BadRequest(validationResult.Errors);
48+
49+
var order = _mapper.Map<Order>(orderDto);
50+
await _unitOfWork.Orders.AddAsync(order);
51+
await _unitOfWork.CompleteAsync();
52+
53+
var createdOrderDto = _mapper.Map<OrderDto>(order);
54+
return CreatedAtAction(nameof(GetOrder), new { id = order.Id }, createdOrderDto);
55+
}
56+
57+
[HttpPut("{id}")]
58+
public async Task<IActionResult> UpdateOrder(int id, [FromBody] OrderDto orderDto)
59+
{
60+
if (id != orderDto.Id) return BadRequest();
61+
var validationResult = await _validator.ValidateAsync(orderDto);
62+
if (!validationResult.IsValid)
63+
return BadRequest(validationResult.Errors);
64+
65+
var order = _mapper.Map<Order>(orderDto);
66+
await _unitOfWork.Orders.UpdateAsync(order);
67+
await _unitOfWork.CompleteAsync();
68+
return NoContent();
69+
}
70+
71+
[HttpDelete("{id}")]
72+
public async Task<IActionResult> DeleteOrder(int id)
73+
{
74+
await _unitOfWork.Orders.DeleteAsync(id);
75+
await _unitOfWork.CompleteAsync();
76+
return NoContent();
77+
}
78+
}
79+
}

Controllers/ProductsController.cs

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using AutoMapper;
2+
using CoreXCrud.DTOs;
3+
using CoreXCrud.Models;
4+
using CoreXCrud.Repositories;
5+
using FluentValidation;
6+
using Microsoft.AspNetCore.Mvc;
7+
8+
namespace CoreXCrud.Controllers
9+
{
10+
[Route("api/[controller]")]
11+
[ApiController]
12+
public class ProductsController : ControllerBase
13+
{
14+
private readonly IUnitOfWork _unitOfWork;
15+
private readonly IMapper _mapper;
16+
private readonly IValidator<ProductDto> _validator;
17+
18+
public ProductsController(IUnitOfWork unitOfWork, IMapper mapper, IValidator<ProductDto> validator)
19+
{
20+
_unitOfWork = unitOfWork;
21+
_mapper = mapper;
22+
_validator = validator;
23+
}
24+
25+
[HttpGet]
26+
public async Task<IActionResult> GetProducts()
27+
{
28+
var products = await _unitOfWork.Products.GetAllAsync();
29+
var productsDto = _mapper.Map<IEnumerable<ProductDto>>(products);
30+
return Ok(productsDto);
31+
}
32+
33+
[HttpGet("{id}")]
34+
public async Task<IActionResult> GetProduct(int id)
35+
{
36+
var product = await _unitOfWork.Products.GetByIdAsync(id);
37+
if (product == null) return NotFound();
38+
var productDto = _mapper.Map<ProductDto>(product);
39+
return Ok(productDto);
40+
}
41+
42+
[HttpPost]
43+
public async Task<IActionResult> CreateProduct([FromBody] ProductDto productDto)
44+
{
45+
var validationResult = await _validator.ValidateAsync(productDto);
46+
if (!validationResult.IsValid)
47+
return BadRequest(validationResult.Errors);
48+
49+
var product = _mapper.Map<Product>(productDto);
50+
await _unitOfWork.Products.AddAsync(product);
51+
await _unitOfWork.CompleteAsync();
52+
53+
var createdProductDto = _mapper.Map<ProductDto>(product);
54+
return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, createdProductDto);
55+
}
56+
57+
[HttpPut("{id}")]
58+
public async Task<IActionResult> UpdateProduct(int id, [FromBody] ProductDto productDto)
59+
{
60+
if (id != productDto.Id) return BadRequest();
61+
var validationResult = await _validator.ValidateAsync(productDto);
62+
if (!validationResult.IsValid)
63+
return BadRequest(validationResult.Errors);
64+
65+
var product = _mapper.Map<Product>(productDto);
66+
await _unitOfWork.Products.UpdateAsync(product);
67+
await _unitOfWork.CompleteAsync();
68+
return NoContent();
69+
}
70+
71+
[HttpDelete("{id}")]
72+
public async Task<IActionResult> DeleteProduct(int id)
73+
{
74+
await _unitOfWork.Products.DeleteAsync(id);
75+
await _unitOfWork.CompleteAsync();
76+
return NoContent();
77+
}
78+
}
79+
}

Controllers/UsersController.cs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
using AutoMapper;
2+
using CoreXCrud.DTOs;
3+
using CoreXCrud.Models;
4+
using CoreXCrud.Repositories;
5+
using FluentValidation;
6+
using Microsoft.AspNetCore.Mvc;
7+
8+
namespace CoreXCrud.Controllers
9+
{
10+
[Route("api/[controller]")]
11+
[ApiController]
12+
public class UsersController : ControllerBase
13+
{
14+
private readonly IUnitOfWork _unitOfWork;
15+
private readonly IMapper _mapper;
16+
private readonly IValidator<UserDto> _validator;
17+
18+
public UsersController(IUnitOfWork unitOfWork, IMapper mapper, IValidator<UserDto> validator)
19+
{
20+
_unitOfWork = unitOfWork;
21+
_mapper = mapper;
22+
_validator = validator;
23+
}
24+
25+
// 📌 Tüm Kullanıcıları Getir
26+
[HttpGet]
27+
public async Task<IActionResult> GetUsers()
28+
{
29+
var users = await _unitOfWork.Users.GetAllAsync();
30+
var usersDto = _mapper.Map<IEnumerable<UserDto>>(users);
31+
return Ok(usersDto);
32+
}
33+
34+
// 📌 Belirli Bir Kullanıcıyı Getir
35+
[HttpGet("{id}")]
36+
public async Task<IActionResult> GetUser(int id)
37+
{
38+
var user = await _unitOfWork.Users.GetByIdAsync(id);
39+
if (user == null) return NotFound();
40+
var userDto = _mapper.Map<UserDto>(user);
41+
return Ok(userDto);
42+
}
43+
44+
// 📌 Yeni Kullanıcı Ekle
45+
[HttpPost]
46+
public async Task<IActionResult> CreateUser([FromBody] UserDto userDto)
47+
{
48+
var validationResult = await _validator.ValidateAsync(userDto);
49+
if (!validationResult.IsValid)
50+
return BadRequest(validationResult.Errors);
51+
52+
var user = _mapper.Map<User>(userDto);
53+
await _unitOfWork.Users.AddAsync(user);
54+
await _unitOfWork.CompleteAsync();
55+
56+
var createdUserDto = _mapper.Map<UserDto>(user);
57+
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, createdUserDto);
58+
}
59+
60+
// 📌 Kullanıcı Güncelle
61+
[HttpPut("{id}")]
62+
public async Task<IActionResult> UpdateUser(int id, [FromBody] UserDto userDto)
63+
{
64+
if (id != userDto.Id) return BadRequest();
65+
var validationResult = await _validator.ValidateAsync(userDto);
66+
if (!validationResult.IsValid)
67+
return BadRequest(validationResult.Errors);
68+
69+
var user = _mapper.Map<User>(userDto);
70+
await _unitOfWork.Users.UpdateAsync(user);
71+
await _unitOfWork.CompleteAsync();
72+
return NoContent();
73+
}
74+
75+
// 📌 Kullanıcıyı Sil
76+
[HttpDelete("{id}")]
77+
public async Task<IActionResult> DeleteUser(int id)
78+
{
79+
await _unitOfWork.Users.DeleteAsync(id);
80+
await _unitOfWork.CompleteAsync();
81+
return NoContent();
82+
}
83+
}
84+
}

CoreXCrud.csproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.0" />
11+
<PackageReference Include="FluentValidation.AspNetCore" Version="11.3.0" />
12+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0">
13+
<PrivateAssets>all</PrivateAssets>
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
</PackageReference>
16+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
17+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0">
18+
<PrivateAssets>all</PrivateAssets>
19+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
20+
</PackageReference>
21+
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
22+
</ItemGroup>
23+
24+
</Project>

CoreXCrud.csproj.user

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<ActiveDebugProfile>https</ActiveDebugProfile>
5+
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
6+
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
7+
</PropertyGroup>
8+
</Project>

CoreXCrud.http

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
@CoreXCrud_HostAddress = http://localhost:5179
2+
3+
GET {{CoreXCrud_HostAddress}}/weatherforecast/
4+
Accept: application/json
5+
6+
###

DTOs/MappingProfile.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using AutoMapper;
2+
using CoreXCrud.DTOs;
3+
using CoreXCrud.Models;
4+
5+
namespace CoreXCrud.DTOs
6+
{
7+
public class MappingProfile : Profile
8+
{
9+
public MappingProfile()
10+
{
11+
CreateMap<User, UserDto>().ReverseMap();
12+
CreateMap<Product, ProductDto>().ReverseMap();
13+
CreateMap<Order, OrderDto>().ReverseMap();
14+
CreateMap<OrderDetail, OrderDetailDto>().ReverseMap();
15+
}
16+
}
17+
}

DTOs/OrderDetailDto.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace CoreXCrud.DTOs
2+
{
3+
/// <summary>
4+
/// Sipariş Detay DTO Modeli
5+
/// </summary>
6+
public class OrderDetailDto
7+
{
8+
public int Id { get; set; }
9+
public int OrderId { get; set; }
10+
public int ProductId { get; set; }
11+
public int Quantity { get; set; }
12+
public decimal UnitPrice { get; set; }
13+
}
14+
}

0 commit comments

Comments
 (0)