Initial commit
This commit is contained in:
@@ -0,0 +1,256 @@
|
||||
# Quick Reference - Powder Coating Management System
|
||||
|
||||
## Essential Commands
|
||||
|
||||
### Database Operations
|
||||
```bash
|
||||
# Create migration
|
||||
dotnet ef migrations add MigrationName --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web
|
||||
|
||||
# Apply migrations
|
||||
dotnet ef database update --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web
|
||||
|
||||
# Rollback to specific migration
|
||||
dotnet ef database update MigrationName --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web
|
||||
|
||||
# Drop database
|
||||
dotnet ef database drop --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web
|
||||
```
|
||||
|
||||
### Run Applications
|
||||
```bash
|
||||
# Web Application
|
||||
cd src/PowderCoating.Web && dotnet run
|
||||
|
||||
# API
|
||||
cd src/PowderCoating.Api && dotnet run
|
||||
|
||||
# With auto-reload
|
||||
dotnet watch run
|
||||
```
|
||||
|
||||
### Testing
|
||||
```bash
|
||||
# All tests
|
||||
dotnet test
|
||||
|
||||
# Specific project
|
||||
dotnet test tests/PowderCoating.UnitTests
|
||||
|
||||
# With coverage
|
||||
dotnet test /p:CollectCoverage=true
|
||||
```
|
||||
|
||||
## Default Credentials
|
||||
|
||||
**Admin Account:**
|
||||
- Email: `admin@powdercoating.com`
|
||||
- Password: `Admin123!`
|
||||
|
||||
## Key Entities & Relationships
|
||||
|
||||
```
|
||||
Customer (1) ──── (Many) Jobs
|
||||
Customer (1) ──── (Many) Quotes
|
||||
Quote (1) ──────── (1) Job (converted)
|
||||
Job (1) ──────── (Many) JobItems
|
||||
Job (1) ──────── (Many) JobPhotos
|
||||
InventoryItem (1) ─ (Many) JobItems
|
||||
Equipment (1) ──── (Many) MaintenanceRecords
|
||||
```
|
||||
|
||||
## Job Status Workflow
|
||||
|
||||
```
|
||||
Pending → Quoted → Approved → InPreparation → Sandblasting →
|
||||
MaskingTaping → Cleaning → InOven → Coating → Curing →
|
||||
QualityCheck → Completed → ReadyForPickup → Delivered
|
||||
```
|
||||
|
||||
## API Endpoints Quick Reference
|
||||
|
||||
### Authentication
|
||||
- POST `/api/auth/login` - Login
|
||||
- POST `/api/auth/register` - Register new user
|
||||
- POST `/api/auth/refresh` - Refresh token
|
||||
|
||||
### Jobs
|
||||
- GET `/api/jobs` - List all jobs
|
||||
- GET `/api/jobs/{id}` - Get specific job
|
||||
- POST `/api/jobs` - Create job
|
||||
- PUT `/api/jobs/{id}` - Update job
|
||||
- DELETE `/api/jobs/{id}` - Delete job
|
||||
- PATCH `/api/jobs/{id}/status` - Update status
|
||||
|
||||
### Customers
|
||||
- GET `/api/customers` - List all customers
|
||||
- GET `/api/customers/{id}` - Get specific customer
|
||||
- POST `/api/customers` - Create customer
|
||||
- PUT `/api/customers/{id}` - Update customer
|
||||
- DELETE `/api/customers/{id}` - Delete customer
|
||||
|
||||
### Inventory
|
||||
- GET `/api/inventory` - List inventory items
|
||||
- GET `/api/inventory/{id}` - Get specific item
|
||||
- POST `/api/inventory` - Add inventory item
|
||||
- POST `/api/inventory/transaction` - Record transaction
|
||||
|
||||
## Configuration Keys
|
||||
|
||||
### appsettings.json
|
||||
```json
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"DefaultConnection": "Server=...;Database=PowderCoatingDb;..."
|
||||
},
|
||||
"JwtSettings": {
|
||||
"SecretKey": "your-secret-key",
|
||||
"ExpirationMinutes": 1440
|
||||
},
|
||||
"AppSettings": {
|
||||
"CompanyName": "Your Company",
|
||||
"TaxRate": 0.07
|
||||
},
|
||||
"AI": {
|
||||
"OpenAI": {
|
||||
"ApiKey": "sk-..."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## User Roles & Permissions
|
||||
|
||||
| Role | Manage Customers | Create Quotes | Manage Jobs | Manage Inventory | Approve Quotes | Admin Panel |
|
||||
|------|-----------------|---------------|-------------|------------------|----------------|-------------|
|
||||
| Administrator | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
||||
| Employee | ⚠️ | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||
| ShopFloor | ❌ | ❌ | ⚠️ (view/update status) | ❌ | ❌ | ❌ |
|
||||
| ReadOnly | ❌ | ❌ | ❌ (view only) | ❌ | ❌ | ❌ |
|
||||
|
||||
## Common Code Snippets
|
||||
|
||||
### Get Paged Data
|
||||
```csharp
|
||||
var (items, totalCount) = await _unitOfWork.Jobs.GetPagedAsync(
|
||||
pageNumber: 1,
|
||||
pageSize: 25,
|
||||
filter: j => j.Status == JobStatus.Pending,
|
||||
orderBy: q => q.OrderByDescending(j => j.CreatedAt)
|
||||
);
|
||||
```
|
||||
|
||||
### Create with Transaction
|
||||
```csharp
|
||||
try
|
||||
{
|
||||
await _unitOfWork.BeginTransactionAsync();
|
||||
await _unitOfWork.Jobs.AddAsync(job);
|
||||
await _unitOfWork.JobItems.AddRangeAsync(items);
|
||||
await _unitOfWork.CommitTransactionAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
await _unitOfWork.RollbackTransactionAsync();
|
||||
throw;
|
||||
}
|
||||
```
|
||||
|
||||
### Map Entity to DTO
|
||||
```csharp
|
||||
var jobDto = _mapper.Map<JobDto>(job);
|
||||
var jobs = _mapper.Map<List<JobListDto>>(jobList);
|
||||
```
|
||||
|
||||
## File Locations
|
||||
|
||||
| Component | Location |
|
||||
|-----------|----------|
|
||||
| Entities | `src/PowderCoating.Core/Entities/` |
|
||||
| DTOs | `src/PowderCoating.Application/DTOs/` |
|
||||
| Controllers (Web) | `src/PowderCoating.Web/Controllers/` |
|
||||
| Controllers (API) | `src/PowderCoating.Api/Controllers/` |
|
||||
| Views | `src/PowderCoating.Web/Views/` |
|
||||
| DbContext | `src/PowderCoating.Infrastructure/Data/` |
|
||||
| Repositories | `src/PowderCoating.Infrastructure/Repositories/` |
|
||||
| Migrations | `src/PowderCoating.Infrastructure/Migrations/` |
|
||||
|
||||
## Environment Variables (Production)
|
||||
|
||||
```bash
|
||||
# Connection String
|
||||
ConnectionStrings__DefaultConnection="Server=...;Database=...;"
|
||||
|
||||
# JWT Secret
|
||||
JwtSettings__SecretKey="production-secret-key-here"
|
||||
|
||||
# OpenAI (if using)
|
||||
AI__OpenAI__ApiKey="sk-..."
|
||||
|
||||
# Logging Level
|
||||
Logging__LogLevel__Default="Warning"
|
||||
```
|
||||
|
||||
## Ports (Default)
|
||||
|
||||
- Web Application: `https://localhost:7001`
|
||||
- API: `https://localhost:7002`
|
||||
- API Swagger: `https://localhost:7002`
|
||||
|
||||
## Performance Tips
|
||||
|
||||
1. Use `.AsNoTracking()` for read-only queries
|
||||
2. Use pagination for large datasets
|
||||
3. Implement caching for frequently accessed data
|
||||
4. Use projection (`.Select()`) to load only needed fields
|
||||
5. Index frequently queried columns
|
||||
6. Use eager loading (`.Include()`) to avoid N+1 queries
|
||||
|
||||
## Security Checklist
|
||||
|
||||
- [ ] Change default admin password
|
||||
- [ ] Update JWT secret key
|
||||
- [ ] Set strong password requirements
|
||||
- [ ] Enable HTTPS in production
|
||||
- [ ] Configure CORS appropriately
|
||||
- [ ] Implement rate limiting
|
||||
- [ ] Store secrets in Azure Key Vault or similar
|
||||
- [ ] Enable audit logging
|
||||
- [ ] Implement input validation
|
||||
- [ ] Use prepared statements (automatic with EF Core)
|
||||
|
||||
## Deployment Checklist
|
||||
|
||||
- [ ] Update connection strings
|
||||
- [ ] Set environment to "Production"
|
||||
- [ ] Apply all migrations
|
||||
- [ ] Configure logging
|
||||
- [ ] Set up SSL certificate
|
||||
- [ ] Configure backup strategy
|
||||
- [ ] Set up monitoring
|
||||
- [ ] Test all endpoints
|
||||
- [ ] Update API documentation
|
||||
- [ ] Train users
|
||||
|
||||
## Support & Resources
|
||||
|
||||
**Documentation Files:**
|
||||
- `GETTING_STARTED.md` - Initial setup guide
|
||||
- `DEVELOPMENT.md` - Detailed developer guide
|
||||
- `README.md` - Project overview
|
||||
|
||||
**Online Resources:**
|
||||
- ASP.NET Core: https://docs.microsoft.com/aspnet/core
|
||||
- Entity Framework: https://docs.microsoft.com/ef/core
|
||||
- Swagger/OpenAPI: https://swagger.io/docs/
|
||||
|
||||
**Common Issues:**
|
||||
- Connection problems → Check SQL Server is running
|
||||
- Migration errors → Remove last migration and try again
|
||||
- Port conflicts → Update launchSettings.json
|
||||
- Package errors → Run `dotnet restore --force`
|
||||
|
||||
---
|
||||
|
||||
**Pro Tip:** Bookmark this file for quick reference during development!
|
||||
Reference in New Issue
Block a user