瀏覽代碼

Course/Service/other requests

zinab_elgendy 1 月之前
父節點
當前提交
e7bbcbdc2b
共有 19 個文件被更改,包括 21876 次插入19 次删除
  1. 34 2
      MTWorkHR.API/Controllers/OrderRequestController.cs
  2. 3 1
      MTWorkHR.Application/Dtos/Attendance/OrderRequestDto.cs
  3. 24 0
      MTWorkHR.Application/Dtos/Attendance/ServiceCertificateDto.cs
  4. 19 0
      MTWorkHR.Application/Dtos/Attendance/ServiceCertificateRequestDto.cs
  5. 2 0
      MTWorkHR.Application/Mapper/MappingProfile.cs
  6. 3 0
      MTWorkHR.Application/Services/Interfaces/IOrderRequestService.cs
  7. 66 4
      MTWorkHR.Application/Services/User/OrderRequestService.cs
  8. 5 2
      MTWorkHR.Core/Entities/Attendance/OrderRequest.cs
  9. 21 0
      MTWorkHR.Core/Entities/Attendance/ServiceCertificate.cs
  10. 13 5
      MTWorkHR.Infrastructure/Configurations/LeaveTypeConfiguration.cs
  11. 16 0
      MTWorkHR.Infrastructure/Configurations/OrderTypeConfiguration.cs
  12. 7083 0
      MTWorkHR.Infrastructure/Migrations/20250226121257_altrLeaveConfig.Designer.cs
  13. 84 0
      MTWorkHR.Infrastructure/Migrations/20250226121257_altrLeaveConfig.cs
  14. 7135 0
      MTWorkHR.Infrastructure/Migrations/20250303093833_altrOrderRequestService.Designer.cs
  15. 100 0
      MTWorkHR.Infrastructure/Migrations/20250303093833_altrOrderRequestService.cs
  16. 7149 0
      MTWorkHR.Infrastructure/Migrations/20250303133824_altrOrderTypeConfig2.Designer.cs
  17. 39 0
      MTWorkHR.Infrastructure/Migrations/20250303133824_altrOrderTypeConfig2.cs
  18. 78 5
      MTWorkHR.Infrastructure/Migrations/HRDataContextModelSnapshot.cs
  19. 2 0
      MTWorkHR.Infrastructure/Repositories/User/OrderRequestRepository.cs

+ 34 - 2
MTWorkHR.API/Controllers/OrderRequestController.cs

@@ -36,11 +36,35 @@ namespace MTWorkHR.API.Controllers
             return Ok(await _LeaveRequestService.GetById(OrderRequestId));
         }
 
+        [HttpGet("GetOverTime")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest")]
+        public async Task<ActionResult<OverTimeDto>> GetOverTime(long OrderRequestId)
+        {
+            return Ok(await _LeaveRequestService.GetOverTime(OrderRequestId));
+        }
+
+        [HttpGet("GetBusinessTrip")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest")]
+        public async Task<ActionResult<BusinessTripDto>> GetBusinessTrip(long OrderRequestId)
+        {
+            return Ok(await _LeaveRequestService.GetBusinessTrip(OrderRequestId));
+        }
+
+        [HttpGet("GetServiceCertificate")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest")]
+        public async Task<ActionResult<ServiceCertificateRequestDto>> GetServiceCertificate(long OrderRequestId)
+        {
+            return Ok(await _LeaveRequestService.GetServiceCertificate(OrderRequestId));
+        }
+
 
-        [HttpPost("CreateLeave")]
+        [HttpPost("Create")]
         [ProducesResponseType(StatusCodes.Status200OK)]
         [AppAuthorize(Permissions = "OrderRequest.Create")]
-        public async Task<ActionResult<OrderRequestDto>> CreateLeave([FromBody] OrderRequestDto input)
+        public async Task<ActionResult<OrderRequestDto>> Create([FromBody] OrderRequestDto input)
         {
             return await _LeaveRequestService.Create(input);
         }
@@ -60,6 +84,14 @@ namespace MTWorkHR.API.Controllers
 
         }
 
+        [HttpPost("CreateServiceCertificate")]
+        public async Task<ActionResult<OrderRequestDto>> CreateServiceCertificate([FromBody] ServiceCertificateRequestDto serviceCertificate)
+        {
+            var orderRequest = await _LeaveRequestService.Create(serviceCertificate);
+            return orderRequest;
+
+        }
+
         [HttpPost("Update")]
         [ProducesResponseType(StatusCodes.Status200OK)]
         [AppAuthorize(Permissions = "OrderRequest.Update")]

+ 3 - 1
MTWorkHR.Application/Dtos/Attendance/OrderRequestDto.cs

@@ -16,6 +16,7 @@ namespace MTWorkHR.Application.Models
         public string? RequestingEmployeeId { get; set; }
         public int OrderTypeId { get; set; }
         public int? LeaveTypeId { get; set; }
+        public string? RequestTitle { get; set; }
         public string? RequestComments { get; set; }
         public ApprovalStatusEnum OrderStatus { get; set; }
  
@@ -24,7 +25,8 @@ namespace MTWorkHR.Application.Models
         public EmployeeDto? Employee { get; set; }
        
         public long ContractId { get; set; }
+        public decimal? CourseNumberOfHours { get; set; }//Course hours
+        public decimal? CourseCost { get; set; }
         public List<AttachmentDto>? OrderAttachments { get; set; }
-        //public List<OverTimeDayDto>? OverTimeDays { get; set; }
     }
 }

+ 24 - 0
MTWorkHR.Application/Dtos/Attendance/ServiceCertificateDto.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MTWorkHR.Application.Models;
+using MTWorkHR.Core.Entities;
+using MTWorkHR.Core.Entities.Base;
+using MTWorkHR.Core.Global;
+
+namespace MTWorkHR.Application.Models
+{
+    public class ServiceCertificateDto : EntityDto
+    {
+        public string? ToWhom{ get; set; }
+        public string? Name { get; set; }
+        public string? Salary { get; set; }
+        public DateTime? JoiningDate { get; set; }
+        public DateTime? ToDate { get; set; }
+        public string? Position { get; set; }
+
+    }
+}

+ 19 - 0
MTWorkHR.Application/Dtos/Attendance/ServiceCertificateRequestDto.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MTWorkHR.Application.Models;
+using MTWorkHR.Core.Entities;
+using MTWorkHR.Core.Entities.Base;
+using MTWorkHR.Core.Global;
+
+namespace MTWorkHR.Application.Models
+{
+    public class ServiceCertificateRequestDto : OrderRequestDto
+    {
+        public ServiceCertificateDto? ServiceCertificate { get; set; }
+
+    }
+}

+ 2 - 0
MTWorkHR.Application/Mapper/MappingProfile.cs

@@ -117,7 +117,9 @@ namespace MTWorkHR.Application.Mapper
             CreateMap<OverTimeDay, OverTimeDayDto>().ReverseMap();
             CreateMap<BusinessTripDto, OrderRequest>().ReverseMap();
             CreateMap<OverTimeDto, OrderRequest>().ReverseMap();
+            CreateMap<ServiceCertificateRequestDto, OrderRequest>().ReverseMap();
             CreateMap<BusinessTripExpensesDto, BusinessTripExpenses>().ReverseMap();
+            CreateMap<ServiceCertificate, ServiceCertificateDto>().ReverseMap();
 
 
             CreateMap<OrderType, OrderTypeDto>().ReverseMap();

+ 3 - 0
MTWorkHR.Application/Services/Interfaces/IOrderRequestService.cs

@@ -10,5 +10,8 @@ namespace MTWorkHR.Application.Services.Interfaces
     {
         Task<OrderRequestDto> ChangeStatus(long id, int statusId);
         Task<PagingResultDto<OrderRequestDto>> GetAll(OrderPagingInputDto PagingInputDto);
+        Task<OverTimeDto> GetOverTime(long id);
+        Task<BusinessTripDto> GetBusinessTrip(long id);
+        Task<ServiceCertificateRequestDto> GetServiceCertificate(long id);
     }
 }

+ 66 - 4
MTWorkHR.Application/Services/User/OrderRequestService.cs

@@ -41,13 +41,66 @@ namespace MTWorkHR.Application.Services
         public override async Task<OrderRequestDto> GetById(long id)
         {
             var entity = await _unitOfWork.OrderRequest.GetByIdWithAllChildren(id);
+            if(entity == null)
+            {
+                throw new AppException(ExceptionEnum.RecordNotExist);
+            }
             var response = MapperObject.Mapper.Map<OrderRequestDto>(entity);
-            var user = await _userService.GetUserById(entity.RequestingEmployeeId);
-            var image = await _userService.GetProfileImage(entity.RequestingEmployeeId);
-            response.Employee = new EmployeeDto { Id = entity.RequestingEmployeeId, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, ProfileImagePath = image };
+            response.Employee = await GetEmployeeDto(entity.RequestingEmployeeId);
+            return response;
+        }
+
+        public async Task<OverTimeDto> GetOverTime(long id)
+        {
+            var entity = await _unitOfWork.OrderRequest.GetByIdWithAllChildren(id);
+            if (entity == null)
+            {
+                throw new AppException(ExceptionEnum.RecordNotExist);
+            }
+            var response = MapperObject.Mapper.Map<OverTimeDto>(entity);
+            response.Employee = await GetEmployeeDto(entity.RequestingEmployeeId);
             return response;
         }
-      
+
+        public async Task<BusinessTripDto> GetBusinessTrip(long id)
+        {
+            var entity = await _unitOfWork.OrderRequest.GetByIdWithAllChildren(id);
+            if (entity == null)
+            {
+                throw new AppException(ExceptionEnum.RecordNotExist);
+            }
+            var response = MapperObject.Mapper.Map<BusinessTripDto>(entity);
+            response.Employee = await GetEmployeeDto(entity.RequestingEmployeeId);
+            return response;
+        }
+
+        public async Task<ServiceCertificateRequestDto> GetServiceCertificate(long id)
+        {
+            var entity = await _unitOfWork.OrderRequest.GetByIdWithAllChildren(id);
+            if (entity == null)
+            {
+                throw new AppException(ExceptionEnum.RecordNotExist);
+            }
+            var response = MapperObject.Mapper.Map<ServiceCertificateRequestDto>(entity);
+            response.Employee = await GetEmployeeDto(entity.RequestingEmployeeId);
+            return response;
+        }
+
+
+        private async Task<EmployeeDto> GetEmployeeDto(string employeeId)
+        {
+            var user = await _userService.GetUserById(employeeId);
+            var image = await _userService.GetProfileImage(employeeId);
+
+            return new EmployeeDto
+            {
+                Id = employeeId,
+                FirstName = user.FirstName,
+                LastName = user.LastName,
+                Email = user.Email,
+                ProfileImagePath = image
+            };
+        }
         public  async Task<PagingResultDto<OrderRequestDto>> GetAll(OrderPagingInputDto PagingInputDto)
         {
             var res = await _unitOfWork.OrderRequest.GetAllWithChildrenAsync();
@@ -143,6 +196,11 @@ namespace MTWorkHR.Application.Services
                 input.OrderTypeId = 2;
                 input.LeaveTypeId = null;
             }
+            else if (input is ServiceCertificateRequestDto)
+            {
+                input.OrderTypeId = 5;
+                input.LeaveTypeId = null;
+            }
             var contract = await _unitOfWork.Contract.GetLatestActiveContract(input.RequestingEmployeeId);
             if(contract!= null)
                 input.ContractId = contract.Id;
@@ -226,6 +284,10 @@ namespace MTWorkHR.Application.Services
         public async Task<OrderRequestDto> ChangeStatus(long id, int statusId )
         {
             var orderRequest = await _unitOfWork.OrderRequest.GetByIdAsync(id);
+            if (orderRequest == null)
+            {
+                throw new AppException(ExceptionEnum.RecordNotExist);
+            }
             orderRequest.OrderStatus = (ApprovalStatusEnum)statusId;
             if (orderRequest.OrderStatus == ApprovalStatusEnum.Approved)
             {

+ 5 - 2
MTWorkHR.Core/Entities/Attendance/OrderRequest.cs

@@ -24,18 +24,21 @@ namespace MTWorkHR.Core.Entities.User
         public long? LeaveTypeId { get; set; }
         [Filter]
         public string? RequestComments { get; set; }
+        [Filter]
+        public string? RequestTitle { get; set; }
         public ApprovalStatusEnum? OrderStatus { get; set; }
         [Filter]
         public string RequestingEmployeeId { get; set; }
      
-
         public long CompanyId { get; set ; }
         public long? ContractId { get; set ; }
-
+        public decimal? CourseNumberOfHours { get; set; }
+        public decimal? CourseCost { get; set; }
         public List<OrderAttachment>? OrderAttachments { get; set; }
         public List<OverTimeDay>? OverTimeDays { get; set; }
 
         public BusinessTripExpenses? BusinessTripExpenses { get; set; }
+        public ServiceCertificate? ServiceCertificate { get; set; }
 
     }
 }

+ 21 - 0
MTWorkHR.Core/Entities/Attendance/ServiceCertificate.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MTWorkHR.Core.Entities.Base;
+
+namespace MTWorkHR.Core.Entities
+{ 
+    public class ServiceCertificate : Entity
+    {
+        public string? ToWhom { get; set; }
+        public string? Name { get; set; }
+        public string? Salary { get; set; }
+        public DateTime? JoiningDate { get; set; }
+        public DateTime? ToDate { get; set; }
+        public string? Position { get; set; }
+
+    }
+}

+ 13 - 5
MTWorkHR.Infrastructure/Configurations/LeaveTypeConfiguration.cs

@@ -24,28 +24,28 @@ namespace MTWorkHR.Infrastructure.Configurations
                     Id = 1,
                     NameEn = "Annual Leave",
                     NameAr = "أجازة سنوية",
-                    DefaultDays = 21
+                    DefaultDays = 30
                 },
                  new LeaveType
                  {
                      Id = 2,
                      NameEn = "Sick Leave",
                      NameAr = "أجازة مرضية",
-                     DefaultDays = 15
+                     DefaultDays = 90
                  },
                 new LeaveType
                 {
                     Id = 3,
                     NameEn = "Marriage Leave",
                     NameAr = "أجازة زواج",
-                    DefaultDays = 20
+                    DefaultDays = 5
                 },
                 new LeaveType
                 {
                     Id = 4,
-                    NameEn = "Paternity leave", //(after closed from employee / manager)
+                    NameEn = "Maternity leave", //(after closed from employee / manager)
                     NameAr = "أجازة وضع",
-                    DefaultDays = 10
+                    DefaultDays = 20
 
                 },
                 new LeaveType
@@ -54,7 +54,15 @@ namespace MTWorkHR.Infrastructure.Configurations
                     NameEn = "Emergency leave",
                     NameAr = "أجازة طارئة",
                     DefaultDays = 10
+                },
+                new LeaveType
+                {
+                    Id = 6,
+                    NameEn = "Death of a relative",
+                    NameAr = "وفاة",
+                    DefaultDays = 3
                 }
+                
                ) ;
         }
     }

+ 16 - 0
MTWorkHR.Infrastructure/Configurations/OrderTypeConfiguration.cs

@@ -49,6 +49,22 @@ namespace MTWorkHR.Infrastructure.Configurations
                     NameAr = "دورة تدريبية",
                     DefaultDays = 0
                 }
+                ,
+                new OrderType
+                {
+                    Id = 5,
+                    NameEn = "Service Certificate",
+                    NameAr = "خدمة معتمده",
+                    DefaultDays = 0
+                }
+                 ,
+                new OrderType
+                {
+                    Id = 6,
+                    NameEn = "Other",
+                    NameAr = "أخرى",
+                    DefaultDays = 0
+                }
                ) ;
         }
     }

文件差異過大導致無法顯示
+ 7083 - 0
MTWorkHR.Infrastructure/Migrations/20250226121257_altrLeaveConfig.Designer.cs


+ 84 - 0
MTWorkHR.Infrastructure/Migrations/20250226121257_altrLeaveConfig.cs

@@ -0,0 +1,84 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrLeaveConfig : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 1L,
+                column: "DefaultDays",
+                value: 30);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 2L,
+                column: "DefaultDays",
+                value: 90);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 3L,
+                column: "DefaultDays",
+                value: 5);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 4L,
+                columns: new[] { "DefaultDays", "NameEn" },
+                values: new object[] { 20, "Maternity leave" });
+
+            migrationBuilder.InsertData(
+                table: "LeaveTypes",
+                columns: new[] { "Id", "DefaultDays", "NameAr", "NameEn" },
+                values: new object[] { 6L, 3, "وفاة", "Death of a relative" });
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DeleteData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 6L);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 1L,
+                column: "DefaultDays",
+                value: 21);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 2L,
+                column: "DefaultDays",
+                value: 15);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 3L,
+                column: "DefaultDays",
+                value: 20);
+
+            migrationBuilder.UpdateData(
+                table: "LeaveTypes",
+                keyColumn: "Id",
+                keyValue: 4L,
+                columns: new[] { "DefaultDays", "NameEn" },
+                values: new object[] { 10, "Paternity leave" });
+        }
+    }
+}

文件差異過大導致無法顯示
+ 7135 - 0
MTWorkHR.Infrastructure/Migrations/20250303093833_altrOrderRequestService.Designer.cs


+ 100 - 0
MTWorkHR.Infrastructure/Migrations/20250303093833_altrOrderRequestService.cs

@@ -0,0 +1,100 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderRequestService : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<decimal>(
+                name: "CourseCost",
+                table: "OrderRequests",
+                type: "decimal(18,2)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<decimal>(
+                name: "CourseNumberOfHours",
+                table: "OrderRequests",
+                type: "decimal(18,2)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "RequestTitle",
+                table: "OrderRequests",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "ServiceCertificateId",
+                table: "OrderRequests",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.CreateTable(
+                name: "ServiceCertificate",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    ToWhom = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Name = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Salary = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JoiningDate = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    ToDate = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    Position = table.Column<string>(type: "nvarchar(max)", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ServiceCertificate", x => x.Id);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OrderRequests_ServiceCertificateId",
+                table: "OrderRequests",
+                column: "ServiceCertificateId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OrderRequests_ServiceCertificate_ServiceCertificateId",
+                table: "OrderRequests",
+                column: "ServiceCertificateId",
+                principalTable: "ServiceCertificate",
+                principalColumn: "Id");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_OrderRequests_ServiceCertificate_ServiceCertificateId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropTable(
+                name: "ServiceCertificate");
+
+            migrationBuilder.DropIndex(
+                name: "IX_OrderRequests_ServiceCertificateId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "CourseCost",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "CourseNumberOfHours",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "RequestTitle",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "ServiceCertificateId",
+                table: "OrderRequests");
+        }
+    }
+}

文件差異過大導致無法顯示
+ 7149 - 0
MTWorkHR.Infrastructure/Migrations/20250303133824_altrOrderTypeConfig2.Designer.cs


+ 39 - 0
MTWorkHR.Infrastructure/Migrations/20250303133824_altrOrderTypeConfig2.cs

@@ -0,0 +1,39 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderTypeConfig2 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.InsertData(
+                table: "OrderTypes",
+                columns: new[] { "Id", "DefaultDays", "NameAr", "NameEn" },
+                values: new object[,]
+                {
+                    { 5L, 0, "خدمة معتمده", "Service Certificate" },
+                    { 6L, 0, "أخرى", "Other" }
+                });
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DeleteData(
+                table: "OrderTypes",
+                keyColumn: "Id",
+                keyValue: 5L);
+
+            migrationBuilder.DeleteData(
+                table: "OrderTypes",
+                keyColumn: "Id",
+                keyValue: 6L);
+        }
+    }
+}

+ 78 - 5
MTWorkHR.Infrastructure/Migrations/HRDataContextModelSnapshot.cs

@@ -1633,30 +1633,30 @@ namespace MTWorkHR.Infrastructure.Migrations
                         new
                         {
                             Id = 1L,
-                            DefaultDays = 21,
+                            DefaultDays = 30,
                             NameAr = "أجازة سنوية",
                             NameEn = "Annual Leave"
                         },
                         new
                         {
                             Id = 2L,
-                            DefaultDays = 15,
+                            DefaultDays = 90,
                             NameAr = "أجازة مرضية",
                             NameEn = "Sick Leave"
                         },
                         new
                         {
                             Id = 3L,
-                            DefaultDays = 20,
+                            DefaultDays = 5,
                             NameAr = "أجازة زواج",
                             NameEn = "Marriage Leave"
                         },
                         new
                         {
                             Id = 4L,
-                            DefaultDays = 10,
+                            DefaultDays = 20,
                             NameAr = "أجازة وضع",
-                            NameEn = "Paternity leave"
+                            NameEn = "Maternity leave"
                         },
                         new
                         {
@@ -1664,6 +1664,13 @@ namespace MTWorkHR.Infrastructure.Migrations
                             DefaultDays = 10,
                             NameAr = "أجازة طارئة",
                             NameEn = "Emergency leave"
+                        },
+                        new
+                        {
+                            Id = 6L,
+                            DefaultDays = 3,
+                            NameAr = "وفاة",
+                            NameEn = "Death of a relative"
                         });
                 });
 
@@ -3522,6 +3529,20 @@ namespace MTWorkHR.Infrastructure.Migrations
                             DefaultDays = 0,
                             NameAr = "دورة تدريبية",
                             NameEn = "Course"
+                        },
+                        new
+                        {
+                            Id = 5L,
+                            DefaultDays = 0,
+                            NameAr = "خدمة معتمده",
+                            NameEn = "Service Certificate"
+                        },
+                        new
+                        {
+                            Id = 6L,
+                            DefaultDays = 0,
+                            NameAr = "أخرى",
+                            NameEn = "Other"
                         });
                 });
 
@@ -4280,6 +4301,38 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.ToTable("RoleLogs");
                 });
 
+            modelBuilder.Entity("MTWorkHR.Core.Entities.ServiceCertificate", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasColumnOrder(0);
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
+
+                    b.Property<DateTime?>("JoiningDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Position")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Salary")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("ToDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("ToWhom")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ServiceCertificate");
+                });
+
             modelBuilder.Entity("MTWorkHR.Core.Entities.SettingLog", b =>
                 {
                     b.Property<long>("Id")
@@ -4700,6 +4753,12 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.Property<long?>("ContractId")
                         .HasColumnType("bigint");
 
+                    b.Property<decimal?>("CourseCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<decimal?>("CourseNumberOfHours")
+                        .HasColumnType("decimal(18,2)");
+
                     b.Property<DateTime>("CreateDate")
                         .HasColumnType("datetime2")
                         .HasColumnOrder(3);
@@ -4733,10 +4792,16 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.Property<string>("RequestComments")
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<string>("RequestTitle")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<string>("RequestingEmployeeId")
                         .IsRequired()
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<long?>("ServiceCertificateId")
+                        .HasColumnType("bigint");
+
                     b.Property<DateTime>("StartDate")
                         .HasColumnType("datetime2");
 
@@ -4759,6 +4824,8 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     b.HasIndex("OrderTypeId");
 
+                    b.HasIndex("ServiceCertificateId");
+
                     b.ToTable("OrderRequests");
                 });
 
@@ -6781,11 +6848,17 @@ namespace MTWorkHR.Infrastructure.Migrations
                         .OnDelete(DeleteBehavior.Cascade)
                         .IsRequired();
 
+                    b.HasOne("MTWorkHR.Core.Entities.ServiceCertificate", "ServiceCertificate")
+                        .WithMany()
+                        .HasForeignKey("ServiceCertificateId");
+
                     b.Navigation("BusinessTripExpenses");
 
                     b.Navigation("LeaveType");
 
                     b.Navigation("OrderType");
+
+                    b.Navigation("ServiceCertificate");
                 });
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.UserTask", b =>

+ 2 - 0
MTWorkHR.Infrastructure/Repositories/User/OrderRequestRepository.cs

@@ -20,6 +20,8 @@ namespace MTWorkHR.Infrastructure.Repositories
         {
             return await dbSet
                 .Include(x => x.OrderType)
+                .Include(x => x.BusinessTripExpenses)
+                .Include(x => x.ServiceCertificate)
                 .FirstOrDefaultAsync(x => x.Id == id);
         }