Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
# Customer Methods Implementation Checklist
|
||||
*چکلیست پیادهسازی متدهای Customer*
|
||||
|
||||
## 📋 ProductsService Customer Methods
|
||||
|
||||
### ✅ آمادهسازی پایه
|
||||
- [x] Proto contracts تعریف شده
|
||||
- [x] Service class ایجاد شده
|
||||
- [x] Method signatures صحیح
|
||||
|
||||
### 🔄 نیاز به پیادهسازی
|
||||
- [ ] **GetProductsForCustomer**
|
||||
- [ ] اتصال به GetProductsQuery از Application layer
|
||||
- [ ] فیلتر محصولات فعال (IsActive = true)
|
||||
- [ ] Pagination support
|
||||
- [ ] تبدیل Domain models به Proto responses
|
||||
|
||||
- [ ] **GetProductByIdForCustomer**
|
||||
- [ ] اتصال به GetProductByIdQuery
|
||||
- [ ] بررسی دسترسی مشتری
|
||||
- [ ] Error handling برای محصول ناموجود
|
||||
|
||||
- [ ] **GetProductsByCategoryForCustomer**
|
||||
- [ ] اتصال به GetProductsByCategoryQuery
|
||||
- [ ] فیلتر بر اساس دستهبندی
|
||||
- [ ] Category validation
|
||||
|
||||
---
|
||||
|
||||
## 📋 UserOrderService Customer Methods
|
||||
|
||||
### ✅ آمادهسازی پایه
|
||||
- [x] Proto contracts تعریف شده
|
||||
- [x] Service class ایجاد شده
|
||||
- [x] Method signatures صحیح
|
||||
|
||||
### 🔄 نیاز به پیادهسازی
|
||||
- [ ] **CreateNewOrderForCustomer**
|
||||
- [ ] اتصال به CreateOrderCommand از Application layer
|
||||
- [ ] Order validation logic
|
||||
- [ ] Cart items validation
|
||||
- [ ] Customer validation
|
||||
- [ ] Error handling
|
||||
|
||||
- [ ] **GetOrderHistoryForCustomer**
|
||||
- [ ] اتصال به GetOrdersQuery
|
||||
- [ ] فیلتر بر اساس CustomerId
|
||||
- [ ] Pagination support
|
||||
|
||||
- [ ] **GetOrderDetailForCustomer**
|
||||
- [ ] اتصال به GetOrderByIdQuery
|
||||
- [ ] بررسی ownership (سفارش متعلق به همین مشتری)
|
||||
- [ ] Security check
|
||||
|
||||
- [ ] **CancelOrderForCustomer**
|
||||
- [ ] اتصال به CancelOrderCommand
|
||||
- [ ] Business rules validation
|
||||
- [ ] Order status checks
|
||||
|
||||
---
|
||||
|
||||
## 📋 UserCartsService (تکمیل شده ✅)
|
||||
|
||||
- [x] **AddNewUserCartForCustomer** - از CMS Application استفاده میکند
|
||||
- [x] **UpdateUserCartForCustomer** - از CMS Application استفاده میکند
|
||||
- [x] **RemoveUserCartForCustomer** - از CMS Application استفاده میکند
|
||||
- [x] **GetUserCartForCustomer** - از CMS Application استفاده میکند
|
||||
|
||||
---
|
||||
|
||||
## 🔧 راهنمای پیادهسازی
|
||||
|
||||
### الگوی کلی برای Customer Methods:
|
||||
```csharp
|
||||
public override async Task<TResponse> MethodNameForCustomer(
|
||||
TRequest request, ServerCallContext context)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 1. Validation
|
||||
if (/* invalid input */)
|
||||
throw new RpcException(new Status(StatusCode.InvalidArgument, "Invalid input"));
|
||||
|
||||
// 2. استفاده از Application layer
|
||||
var command/query = new TCommand/TQuery
|
||||
{
|
||||
/* map from request */
|
||||
};
|
||||
|
||||
var result = await _dispatcher.DispatchAsync(command/query);
|
||||
|
||||
// 3. تبدیل به Proto response
|
||||
return new TResponse
|
||||
{
|
||||
/* map from result */
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Internal, ex.Message));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### نکات مهم:
|
||||
- همیشه از `IDispatchRequestToCQRS` استفاده کنید
|
||||
- Proto dependencies را در Application layer قرار ندهید
|
||||
- Error handling مناسب پیادهسازی کنید
|
||||
- Customer authorization را بررسی کنید
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Quick Commands
|
||||
|
||||
### Build & Test:
|
||||
```bash
|
||||
# Build
|
||||
cd /home/masoud/Apps/project/FourSat/CMS/src
|
||||
dotnet build CMS.sln
|
||||
|
||||
# Run
|
||||
cd CMSMicroservice.WebApi
|
||||
dotnet run
|
||||
|
||||
# Test specific endpoint
|
||||
curl -X GET "http://localhost:32847/Customer/Products/GetProductsForCustomer"
|
||||
```
|
||||
|
||||
### Swagger Access:
|
||||
```
|
||||
http://localhost:32847/swagger/index.html
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📅 اولویتبندی کار
|
||||
|
||||
### Week 1: Products Customer Methods
|
||||
1. GetProductsForCustomer (اولویت بالا)
|
||||
2. GetProductByIdForCustomer
|
||||
3. GetProductsByCategoryForCustomer
|
||||
|
||||
### Week 2: Orders Customer Methods
|
||||
1. CreateNewOrderForCustomer (اولویت بالا)
|
||||
2. GetOrderHistoryForCustomer
|
||||
3. GetOrderDetailForCustomer
|
||||
4. CancelOrderForCustomer
|
||||
|
||||
### Week 3: Testing & Polish
|
||||
1. Unit tests
|
||||
2. Integration tests
|
||||
3. Performance optimization
|
||||
4. Documentation updates
|
||||
Reference in New Issue
Block a user