نظام محاسبي متكامل مبني على ASP.NET Core MVC يوفر إدارة شاملة للعمليات المحاسبية والمالية. تم تطوير المرحلة الأولى بالتركيز على إدارة النظام والأمان.
- Visual Studio 2022 أو أحدث
- .NET 8 SDK
- SQL Server 2019 أو أحدث
- Windows 10/11 أو Windows Server
المشروع مقسم إلى 4 مشاريع رئيسية:
EFA.sln
├── EFA.Domain - نماذج وكيانات المجال
├── EFA.Infrastructure - طبقة البيانات والمستودعات
├── EFA.Application - خدمات الأعمال والـ DTOs
└── EFA.Web - تطبيق الويب (MVC)
# فتح الحل في Visual Studio
File > Open > Project/Solution > EFA.sln# في Package Manager Console:
Add-Migration InitialCreate
Update-Databaseأو استخدم الأوامر:
dotnet ef migrations add InitialCreate
dotnet ef database updateتحديث appsettings.json في مشروع EFA.Web:
{
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER;Database=EFA016;Trusted_Connection=true;Encrypt=false;TrustServerCertificate=true;"
}
}# اضغط F5 أو استخدم:
dotnet runالتطبيق سيفتح على https://localhost:7xxx
- ✓ التسجيل والدخول الآمن
- ✓ إدارة حسابات المستخدمين
- ✓ تغيير كلمة المرور
- ✓ تفعيل/تعطيل المستخدمين
- ✓ تتبع آخر دخول
المسارات:
/Account/Login- تسجيل الدخول/Account/Register- إنشاء حساب جديد/Account/Profile- الملف الشخصي/Account/ChangePassword- تغيير كلمة المرور/UserManagement/Index- قائمة المستخدمين
- ✓ إنشاء وتعديل مجموعات الصلاحيات
- ✓ تعيين صلاحيات للمجموعات
- ✓ ربط المستخدمين بالمجموعات
- ✓ التحقق من الصلاحيات تلقائياً
المسارات:
/Group/Index- قائمة المجموعات/Group/Create- إنشاء مجموعة جديدة/Group/Edit/{id}- تعديل المجموعة/Group/AssignPrivileges/{id}- تعيين الصلاحيات
- ✓ إنشاء وتعديل فروع الشركة
- ✓ تحديد الفرع الرئيسي
- ✓ إدارة معلومات الفرع
المسارات:
/Branch/Index- قائمة الفروع/Branch/Create- إنشاء فرع جديد/Branch/Edit/{id}- تعديل الفرع
- ✓ إنشاء وتعديل العملات
- ✓ تحديث أسعار الصرف
- ✓ تحديد العملة الافتراضية
المسارات:
/Currency/Index- قائمة العملات/Currency/Create- إنشاء عملة جديدة/Currency/Edit/{id}- تعديل العملة
- ✓ تسجيل جميع العمليات
- ✓ تتبع التغييرات
- ✓ المصادقة والتفويض
- ✓ حماية من SQL Injection و XSS
| الجدول | الوصف |
|---|---|
Users |
بيانات المستخدمين |
Groups |
مجموعات الصلاحيات |
Privileges |
الصلاحيات المتاحة |
GroupPrivileges |
ربط المجموعات بالصلاحيات |
Branches |
فروع الشركة |
Currencies |
العملات |
UserDevices |
أجهزة المستخدمين |
UserLogs |
سجل نشاط المستخدمين |
Audit |
سجل التدقيق |
CostCenters |
مراكز التكلفة |
SystemParameters |
معاملات النظام |
EFA.Domain/
├── Entities/
│ ├── User.cs
│ ├── Group.cs
│ ├── Privilege.cs
│ ├── Branch.cs
│ ├── Currency.cs
│ └── ...
EFA.Infrastructure/
├── Data/
│ └── EFADbContext.cs
├── Repositories/
│ ├── IGenericRepository.cs
│ ├── GenericRepository.cs
│ ├── IUserRepository.cs
│ └── ...
EFA.Application/
├── Services/
│ ├── IUserService.cs
│ ├── UserService.cs
│ ├── GroupService.cs
│ └── ...
├── DTOs/
│ ├── UserDto.cs
│ ├── GroupDto.cs
│ └── ...
└── Profiles/
└── AutoMapperProfile.cs
EFA.Web/
├── Controllers/
│ ├── AccountController.cs
│ ├── UserManagementController.cs
│ ├── GroupController.cs
│ └── ...
├── Views/
│ ├── Account/
│ ├── UserManagement/
│ ├── Group/
│ └── ...
└── wwwroot/
├── css/
└── js/
var createUserDto = new CreateUserDto
{
Username = "user123",
Email = "user@example.com",
Password = "SecurePassword123!",
FullName = "أحمد محمد"
};
var result = await _userService.RegisterAsync(createUserDto);
if (result.Success)
{
Console.WriteLine("تم التسجيل بنجاح");
}// في Controller
var hasPermission = await _userService.HasPrivilegeAsync(userId, "User_Edit");
if (!hasPermission)
{
return Forbid();
}var createGroupDto = new CreateGroupDto
{
GroupCode = "ADMIN",
GroupName = "المسؤولون",
Description = "مجموعة المسؤولين في النظام"
};
var result = await _groupService.CreateGroupAsync(createGroupDto);-
المصادقة:
- تسجيل دخول آمن مع SHA256 Hashing
- إدارة الجلسات
-
التفويض:
- Role-Based Access Control (RBAC)
- Permission-Based Access Control
- Attribute-based Authorization
-
حماية البيانات:
- SQL Injection Prevention (EF Core Parameterized Queries)
- XSS Protection (Razor View Encoding)
- CSRF Protection (AntiForgeryToken)
-
التدقيق:
- تسجيل شامل للعمليات
- تتبع التغييرات
- سجل الأخطاء
- Microsoft.EntityFrameworkCore 8.0.0
- Microsoft.EntityFrameworkCore.SqlServer 8.0.0
- AutoMapper 13.0.0
- Bootstrap 5
- jQueryستركز على:
- إدارة المخزون والأصناف
- حركات المخزون والأرصدة
- إدارة الجرد
ستركز على:
- إدارة الحسابات المحاسبية
- شجرة الحسابات
- القيود والترحيل المحاسبي
Unable to connect to SQL Server
الحل:
- تحقق من اسم الخادم وقاعدة البيانات
- تأكد من تشغيل SQL Server
- تحقق من الصلاحيات
There are pending model changes
الحل:
Add-Migration FixName
Update-Database404 Not Found
الحل:
- تأكد من اسم الـ Controller والـ Action
- تحقق من المسارات في الـ Routes
للمزيد من المعلومات أو الدعم:
- تابع التوثيق
- راجع الأكواد المعلقة (Comments)
- استشر فريق الدعم
جميع الحقوق محفوظة © 2024
تم التطوير بواسطة: فريق التطوير آخر تحديث: 7 يوليو 2024 الإصدار: 1.0.0 (المرحلة الأولى)