Ver código fonte

OrderRequest creation return

zinab_elgendy 1 mês atrás
pai
commit
7aaed744a1
32 arquivos alterados com 51282 adições e 88 exclusões
  1. 33 1
      MTWorkHR.API/Controllers/OrderRequestController.cs
  2. 7 4
      MTWorkHR.Application/Dtos/Attendance/BusinessTripExpensesDto.cs
  3. 20 0
      MTWorkHR.Application/Dtos/Attendance/OrderAttachmentDto.cs
  4. 5 2
      MTWorkHR.Application/Dtos/Attendance/OrderRequestDto.cs
  5. 1 1
      MTWorkHR.Application/Dtos/Attendance/OverTimeDayDto.cs
  6. 1 1
      MTWorkHR.Application/Dtos/PagingDto.cs
  7. 10 1
      MTWorkHR.Application/Mapper/MappingProfile.cs
  8. 13 7
      MTWorkHR.Application/Services/User/OrderRequestService.cs
  9. 24 0
      MTWorkHR.Core/Entities/Attendance/BusinessTripAttachment.cs
  10. 8 4
      MTWorkHR.Core/Entities/Attendance/BusinessTripExpences.cs
  11. 0 1
      MTWorkHR.Core/Entities/Attendance/OrderAttachment.cs
  12. 2 0
      MTWorkHR.Core/Entities/Attendance/OrderRequest.cs
  13. 7 1
      MTWorkHR.Core/Entities/Attendance/OverTimeDate.cs
  14. 24 0
      MTWorkHR.Core/Entities/Attendance/OverTimeDayAttachment.cs
  15. 4 0
      MTWorkHR.Core/Entities/Attendance/ServiceCertificate.cs
  16. 1 0
      MTWorkHR.Core/IRepositories/User/IOrderRequestRepository.cs
  17. 7152 0
      MTWorkHR.Infrastructure/Migrations/20250304120556_altrOrderTotalDays.Designer.cs
  18. 28 0
      MTWorkHR.Infrastructure/Migrations/20250304120556_altrOrderTotalDays.cs
  19. 7163 0
      MTWorkHR.Infrastructure/Migrations/20250304120851_altrOrderOverTimeAttach.Designer.cs
  20. 48 0
      MTWorkHR.Infrastructure/Migrations/20250304120851_altrOrderOverTimeAttach.cs
  21. 7166 0
      MTWorkHR.Infrastructure/Migrations/20250304131651_altrBusinessTrip.Designer.cs
  22. 28 0
      MTWorkHR.Infrastructure/Migrations/20250304131651_altrBusinessTrip.cs
  23. 7163 0
      MTWorkHR.Infrastructure/Migrations/20250306093615_altrOrderAttach.Designer.cs
  24. 28 0
      MTWorkHR.Infrastructure/Migrations/20250306093615_altrOrderAttach.cs
  25. 7180 0
      MTWorkHR.Infrastructure/Migrations/20250306102558_altrOrderFK.Designer.cs
  26. 185 0
      MTWorkHR.Infrastructure/Migrations/20250306102558_altrOrderFK.cs
  27. 7177 0
      MTWorkHR.Infrastructure/Migrations/20250306105901_altrOrderFK2.Designer.cs
  28. 121 0
      MTWorkHR.Infrastructure/Migrations/20250306105901_altrOrderFK2.cs
  29. 7257 0
      MTWorkHR.Infrastructure/Migrations/20250306115344_altrOrderRequestAttach.Designer.cs
  30. 240 0
      MTWorkHR.Infrastructure/Migrations/20250306115344_altrOrderRequestAttach.cs
  31. 170 62
      MTWorkHR.Infrastructure/Migrations/HRDataContextModelSnapshot.cs
  32. 16 3
      MTWorkHR.Infrastructure/Repositories/User/OrderRequestRepository.cs

+ 33 - 1
MTWorkHR.API/Controllers/OrderRequestController.cs

@@ -51,6 +51,13 @@ namespace MTWorkHR.API.Controllers
         {
             return Ok(await _LeaveRequestService.GetBusinessTrip(OrderRequestId));
         }
+        [HttpGet("GetCourse")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest")]
+        public async Task<ActionResult<OrderRequestDto>> GetCourse(long OrderRequestId)
+        {
+            return Ok(await _LeaveRequestService.GetById(OrderRequestId));
+        }
 
         [HttpGet("GetServiceCertificate")]
         [ProducesResponseType(StatusCodes.Status200OK)]
@@ -60,8 +67,15 @@ namespace MTWorkHR.API.Controllers
             return Ok(await _LeaveRequestService.GetServiceCertificate(OrderRequestId));
         }
 
+        [HttpGet("GetOther")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest")]
+        public async Task<ActionResult<OrderRequestDto>> GetOther(long OrderRequestId)
+        {
+            return Ok(await _LeaveRequestService.GetById(OrderRequestId));
+        }
 
-        [HttpPost("Create")]
+        [HttpPost("CreateLeave")]
         [ProducesResponseType(StatusCodes.Status200OK)]
         [AppAuthorize(Permissions = "OrderRequest.Create")]
         public async Task<ActionResult<OrderRequestDto>> Create([FromBody] OrderRequestDto input)
@@ -69,6 +83,7 @@ namespace MTWorkHR.API.Controllers
             return await _LeaveRequestService.Create(input);
         }
 
+
         [HttpPost("CreateOverTime")]
         public async Task<ActionResult<OrderRequestDto>> CreateOverTime([FromBody] OverTimeDto overtimeDto)
         {
@@ -84,6 +99,15 @@ namespace MTWorkHR.API.Controllers
 
         }
 
+        [HttpPost("CreateCourse")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest.Create")]
+        public async Task<ActionResult<OrderRequestDto>> CreateCourse([FromBody] OrderRequestDto input)
+        {
+            return await _LeaveRequestService.Create(input);
+        }
+
+
         [HttpPost("CreateServiceCertificate")]
         public async Task<ActionResult<OrderRequestDto>> CreateServiceCertificate([FromBody] ServiceCertificateRequestDto serviceCertificate)
         {
@@ -92,6 +116,14 @@ namespace MTWorkHR.API.Controllers
 
         }
 
+        [HttpPost("CreateOther")]
+        [ProducesResponseType(StatusCodes.Status200OK)]
+        [AppAuthorize(Permissions = "OrderRequest.Create")]
+        public async Task<ActionResult<OrderRequestDto>> CreateOther([FromBody] OrderRequestDto input)
+        {
+            return await _LeaveRequestService.Create(input);
+        }
+
         [HttpPost("Update")]
         [ProducesResponseType(StatusCodes.Status200OK)]
         [AppAuthorize(Permissions = "OrderRequest.Update")]

+ 7 - 4
MTWorkHR.Application/Dtos/Attendance/BusinessTripExpensesDto.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -17,10 +18,12 @@ namespace MTWorkHR.Application.Models
         public decimal? TransportationCost { get; set; }
         public decimal? AccommodationCost { get; set; }
         public decimal? OtherCost { get; set; }
-        public AttachmentDto? TicketAttachment { get; set; }
-        public AttachmentDto? TransportationAttachment { get; set; }
-        public AttachmentDto? AccommodationAttachment { get; set; }
-        public AttachmentDto? OtherAttachment { get; set; }
+        public decimal? TotalCost { get; set; }
+        //public OrderAttachmentDto? TicketAttachment { get; set; }
+        //public OrderAttachmentDto? TransportationAttachment { get; set; }
+        //public OrderAttachmentDto? AccommodationAttachment { get; set; }
+        public List<OrderAttachmentDto>? Attachments { get; set; }
+
 
     }
 }

+ 20 - 0
MTWorkHR.Application/Dtos/Attendance/OrderAttachmentDto.cs

@@ -0,0 +1,20 @@
+using Microsoft.AspNetCore.Http;
+using MTWorkHR.Core.Entities.Base;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace MTWorkHR.Application.Models
+{
+    public class OrderAttachmentDto : EntityDto
+    {
+        //public long OrderRequestId { get; set; }
+
+        public string? FileName { get; set; }
+        
+        public string? CreateDateStr { get; set; }
+        public string? OriginalName { get; set; }
+        public string? FilePath { get; set; }
+        public string? ContentType { get; set; }
+
+    }
+}

+ 5 - 2
MTWorkHR.Application/Dtos/Attendance/OrderRequestDto.cs

@@ -18,7 +18,7 @@ namespace MTWorkHR.Application.Models
         public int? LeaveTypeId { get; set; }
         public string? RequestTitle { get; set; }
         public string? RequestComments { get; set; }
-        public ApprovalStatusEnum OrderStatus { get; set; }
+        public ApprovalStatusEnum? OrderStatus { get; set; }
  
         public OrderTypeDto? OrderType { get; set; }
         public LeaveTypeDto? LeaveType { get; set; }
@@ -27,6 +27,9 @@ namespace MTWorkHR.Application.Models
         public long ContractId { get; set; }
         public decimal? CourseNumberOfHours { get; set; }//Course hours
         public decimal? CourseCost { get; set; }
-        public List<AttachmentDto>? OrderAttachments { get; set; }
+        public decimal? TotalDays { get; set; }
+
+        public List<OrderAttachmentDto>? OrderAttachments { get; set; }
+        public DateTime? CreateDate { get; set; }
     }
 }

+ 1 - 1
MTWorkHR.Application/Dtos/Attendance/OverTimeDayDto.cs

@@ -17,6 +17,6 @@ namespace MTWorkHR.Application.Models
         public string? StartTime { get; set; }
         public string? EndTime { get; set; }
         public decimal? TotalHours { get; set; }
-
+        public OrderAttachmentDto? OverTimeAttachment { get; set; }
     }
 }

+ 1 - 1
MTWorkHR.Application/Dtos/PagingDto.cs

@@ -29,7 +29,7 @@ namespace MTWorkHR.Application.Models
         public int PageNumber { get => pageNumber ==0 ? 1 : pageNumber; set => pageNumber = value; }
         public int PageSize { get => pageSize==0?10: pageSize; set => pageSize = value; }
         public string? OrderByField { get => string.IsNullOrEmpty(orderByField)?"Id": orderByField; set => orderByField = value; }
-        public string? OrderType { get => string.IsNullOrEmpty(orderType) ? "asc" : orderType; set => orderType = value; }
+        public string? OrderType { get => string.IsNullOrEmpty(orderType) ? "desc" : orderType; set => orderType = value; }
         public string? Filter { get; set; }
         public string? HiddenFilter { get ; set; }
     }

+ 10 - 1
MTWorkHR.Application/Mapper/MappingProfile.cs

@@ -109,8 +109,17 @@ namespace MTWorkHR.Application.Mapper
                 .ForMember(d => d.TotalHours, o => o.MapFrom(s =>(s.CheckInTime.HasValue && s.CheckOutTime.HasValue) ? (s.CheckOutTime.Value - s.CheckInTime.Value).TotalHours:0));
 
             CreateMap<AttendanceDto, Attendance>().ForMember(d => d.CreateDate, o => o.Ignore());
+            CreateMap<OrderAttachmentDto, OrderAttachment>().ReverseMap()
+                .ForMember(d => d.CreateDateStr, o => o.Ignore());
+            CreateMap<OverTimeDayAttachment, OrderAttachmentDto>().ReverseMap().ForMember(d => d.CreateDate, o => o.Ignore());
+            CreateMap<BusinessTripAttachment, OrderAttachmentDto>().ReverseMap().ForMember(d => d.CreateDate, o => o.Ignore());
+            
             CreateMap<OrderAllocation, OrderAllocationDto>().ReverseMap().ForMember(d => d.CreateDate, o => o.Ignore());
-            CreateMap<OrderRequest, OrderRequestDto>().ReverseMap().ForMember(d => d.CreateDate, o => o.Ignore());
+
+            CreateMap<OrderRequestDto, OrderRequest>().ForMember(d => d.CreateDate, o => o.Ignore())
+                .ForMember(d => d.OrderAttachments, opt => opt.MapFrom(src => src.OrderAttachments ?? new List<OrderAttachmentDto>()));
+            CreateMap<OrderRequest, OrderRequestDto>();
+            
             CreateMap<OrderRequest, OrderRequestHRDto>().ForMember(d => d.LeaveTypeName, o=> o.MapFrom(s=> s.LeaveType != null ? GlobalInfo.lang == "ar" ? s.LeaveType.NameAr: s.LeaveType.NameEn:""))
                 .ForMember(d => d.OrderTypeName, o => o.MapFrom(s => s.OrderType != null ? GlobalInfo.lang == "ar" ? s.OrderType.NameAr : s.OrderType.NameEn:""));
             

+ 13 - 7
MTWorkHR.Application/Services/User/OrderRequestService.cs

@@ -182,24 +182,23 @@ namespace MTWorkHR.Application.Services
         public override async Task<OrderRequestDto> Create(OrderRequestDto input)
         {
             var period = DateTime.Now.Year;
-            if(string.IsNullOrEmpty( input.RequestingEmployeeId))
+            input.LeaveTypeId = (input.LeaveTypeId != null && input.LeaveTypeId > 0 ) ? input.LeaveTypeId : null;
+            input.OrderStatus = (input.OrderStatus != null && input.OrderStatus > 0 ) ? input.OrderStatus : ApprovalStatusEnum.Pending;
+            if (string.IsNullOrEmpty( input.RequestingEmployeeId))
             {
                 input.RequestingEmployeeId = _globalInfo.UserId;
             }
             if (input is BusinessTripDto)
             {
                 input.OrderTypeId = 3;
-                input.LeaveTypeId = null;
             }
             else if (input is OverTimeDto)
             {
                 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)
@@ -250,7 +249,9 @@ namespace MTWorkHR.Application.Services
             {
                 //// Log or handle error, but don't throw...
             }
-            var response = MapperObject.Mapper.Map<OrderRequestDto>(orderRequest);
+            var res = await _unitOfWork.OrderRequest.GetByIdWithTypes(orderRequest.Id);
+            
+            var response = MapperObject.Mapper.Map<OrderRequestDto>(res);
             if (response.RequestingEmployeeId != null)
             {
                 var user = await _userService.GetUserWithAttachmentById(response.RequestingEmployeeId);
@@ -291,8 +292,13 @@ namespace MTWorkHR.Application.Services
             orderRequest.OrderStatus = (ApprovalStatusEnum)statusId;
             if (orderRequest.OrderStatus == ApprovalStatusEnum.Approved)
             {
-                var contract = await _unitOfWork.Contract.GetLatestActiveContract(orderRequest.RequestingEmployeeId);
-                var allocation = await _unitOfWork.OrderAllocation.GetUserAllocations(orderRequest.RequestingEmployeeId, orderRequest.OrderTypeId, orderRequest.LeaveTypeId, contract.Id, DateTime.Now.Year);
+                long? contractId = orderRequest.ContractId;
+                if (contractId == null || contractId == 0)
+                { 
+                    var contract = await _unitOfWork.Contract.GetLatestActiveContract(orderRequest.RequestingEmployeeId);
+                    contractId = contract.Id;
+                }
+                var allocation = await _unitOfWork.OrderAllocation.GetUserAllocations(orderRequest.RequestingEmployeeId, orderRequest.OrderTypeId, orderRequest.LeaveTypeId, contractId.Value, DateTime.Now.Year);
                 if (allocation != null)
                 {
                     int daysRequested = !orderRequest.EndDate.HasValue ? 1 : (int)(orderRequest.EndDate.Value - orderRequest.StartDate).TotalDays;

+ 24 - 0
MTWorkHR.Core/Entities/Attendance/BusinessTripAttachment.cs

@@ -0,0 +1,24 @@
+using MTWorkHR.Core.Entities.Base;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using MTWorkHR.Core.Entities.User;
+
+namespace MTWorkHR.Core.Entities
+{
+    public class BusinessTripAttachment : AuditEntity
+    {
+        public long BusinessTripExpensesId { get; set; }
+
+        [ForeignKey("BusinessTripExpensesId ")]
+        public BusinessTripExpenses BusinessTripExpenses { get; set; }
+
+        [MaxLength(250)]
+        public string? FileName { get; set; }
+
+        [MaxLength(250)]
+        public string? OriginalName { get; set; }
+
+        public string? FilePath { get; set; }
+        public string? ContentType { get; set; }
+    }
+}

+ 8 - 4
MTWorkHR.Core/Entities/Attendance/BusinessTripExpences.cs

@@ -1,23 +1,27 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using MTWorkHR.Core.Entities.Base;
+using MTWorkHR.Core.Entities.User;
 
 namespace MTWorkHR.Core.Entities
 { 
     public class BusinessTripExpenses : Entity
     {
+        public long? OrderRequestId { get; set; }
+
+        [ForeignKey("OrderRequestId")]
+        public OrderRequest OrderRequest { get; set; }
         public decimal? TicketCost{ get; set; }
         public decimal? TransportationCost { get; set; }
         public decimal? AccommodationCost { get; set; }
         public decimal? OtherCost { get; set; }
-        public OrderAttachment? TicketAttachment { get; set; }
-        public OrderAttachment? TransportationAttachment { get; set; }
-        public OrderAttachment? AccommodationAttachment { get; set; }
-        public OrderAttachment? OtherAttachment { get; set; }
+        public decimal? TotalCost { get; set; }
+        public List<BusinessTripAttachment> Attachments { get; set; } = new List<BusinessTripAttachment>();
 
     }
 }

+ 0 - 1
MTWorkHR.Core/Entities/Attendance/OrderAttachment.cs

@@ -11,7 +11,6 @@ namespace MTWorkHR.Core.Entities
 
         [ForeignKey("OrderRequestId")]
         public OrderRequest OrderRequest { get; set; }
-        public long? AttachmentTypeId { get; set; }
 
         [MaxLength(250)]
         public string? FileName { get; set; }

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

@@ -34,6 +34,8 @@ namespace MTWorkHR.Core.Entities.User
         public long? ContractId { get; set ; }
         public decimal? CourseNumberOfHours { get; set; }
         public decimal? CourseCost { get; set; }
+        public decimal? TotalDays { get; set; }
+
         public List<OrderAttachment>? OrderAttachments { get; set; }
         public List<OverTimeDay>? OverTimeDays { get; set; }
 

+ 7 - 1
MTWorkHR.Core/Entities/Attendance/OverTimeDate.cs

@@ -1,19 +1,25 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using MTWorkHR.Core.Entities.Base;
+using MTWorkHR.Core.Entities.User;
 
 namespace MTWorkHR.Core.Entities
 {
     public class OverTimeDay : Entity
     {
+        public long? OrderRequestId { get; set; }
+
+        [ForeignKey("OrderRequestId")]
+        public OrderRequest OrderRequest { get; set; }
         public DateTime? OverTimeDate{ get; set; }
         public string? StartTime { get; set; }
         public string? EndTime { get; set; }
         public decimal? TotalHours { get; set; }
-
+        public OverTimeDayAttachment? OverTimeAttachment { get; set; }
     }
 }

+ 24 - 0
MTWorkHR.Core/Entities/Attendance/OverTimeDayAttachment.cs

@@ -0,0 +1,24 @@
+using MTWorkHR.Core.Entities.Base;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using MTWorkHR.Core.Entities.User;
+
+namespace MTWorkHR.Core.Entities
+{
+    public class OverTimeDayAttachment : AuditEntity
+    {
+        public long OverTimeDayId { get; set; }
+
+        [ForeignKey("OverTimeDayId")]
+        public OverTimeDay OverTimeDay { get; set; }
+
+        [MaxLength(250)]
+        public string? FileName { get; set; }
+
+        [MaxLength(250)]
+        public string? OriginalName { get; set; }
+
+        public string? FilePath { get; set; }
+        public string? ContentType { get; set; }
+    }
+}

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

@@ -1,15 +1,19 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using MTWorkHR.Core.Entities.Base;
+using MTWorkHR.Core.Entities.User;
 
 namespace MTWorkHR.Core.Entities
 { 
     public class ServiceCertificate : Entity
     {
+        [ForeignKey("OrderRequestId")]
+        public OrderRequest OrderRequest { get; set; }
         public string? ToWhom { get; set; }
         public string? Name { get; set; }
         public string? Salary { get; set; }

+ 1 - 0
MTWorkHR.Core/IRepositories/User/IOrderRequestRepository.cs

@@ -12,6 +12,7 @@ namespace MTWorkHR.Core.IRepositories
     public interface IOrderRequestRepository : IRepository<OrderRequest>
     {
        Task<OrderRequest> GetByIdWithAllChildren(long id);
+        Task<OrderRequest> GetByIdWithTypes(long id);
         Task<Tuple<IQueryable<OrderRequest>, int>> GetAllWithChildrenAsync();
         Task<Tuple<IQueryable<OrderRequest>, int>> GetAllUserOrdersAsync(string userId, long contractId);
 

Diferenças do arquivo suprimidas por serem muito extensas
+ 7152 - 0
MTWorkHR.Infrastructure/Migrations/20250304120556_altrOrderTotalDays.Designer.cs


+ 28 - 0
MTWorkHR.Infrastructure/Migrations/20250304120556_altrOrderTotalDays.cs

@@ -0,0 +1,28 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderTotalDays : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<decimal>(
+                name: "TotalDays",
+                table: "OrderRequests",
+                type: "decimal(18,2)",
+                nullable: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "TotalDays",
+                table: "OrderRequests");
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7163 - 0
MTWorkHR.Infrastructure/Migrations/20250304120851_altrOrderOverTimeAttach.Designer.cs


+ 48 - 0
MTWorkHR.Infrastructure/Migrations/20250304120851_altrOrderOverTimeAttach.cs

@@ -0,0 +1,48 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderOverTimeAttach : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<long>(
+                name: "OverTimeAttachmentId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OverTimeDay_OverTimeAttachmentId",
+                table: "OverTimeDay",
+                column: "OverTimeAttachmentId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderAttachment_OverTimeAttachmentId",
+                table: "OverTimeDay",
+                column: "OverTimeAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderAttachment_OverTimeAttachmentId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_OverTimeDay_OverTimeAttachmentId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropColumn(
+                name: "OverTimeAttachmentId",
+                table: "OverTimeDay");
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7166 - 0
MTWorkHR.Infrastructure/Migrations/20250304131651_altrBusinessTrip.Designer.cs


+ 28 - 0
MTWorkHR.Infrastructure/Migrations/20250304131651_altrBusinessTrip.cs

@@ -0,0 +1,28 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrBusinessTrip : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<decimal>(
+                name: "TotalCost",
+                table: "BusinessTripExpenses",
+                type: "decimal(18,2)",
+                nullable: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "TotalCost",
+                table: "BusinessTripExpenses");
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7163 - 0
MTWorkHR.Infrastructure/Migrations/20250306093615_altrOrderAttach.Designer.cs


+ 28 - 0
MTWorkHR.Infrastructure/Migrations/20250306093615_altrOrderAttach.cs

@@ -0,0 +1,28 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderAttach : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "AttachmentTypeId",
+                table: "OrderAttachment");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<long>(
+                name: "AttachmentTypeId",
+                table: "OrderAttachment",
+                type: "bigint",
+                nullable: true);
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7180 - 0
MTWorkHR.Infrastructure/Migrations/20250306102558_altrOrderFK.Designer.cs


+ 185 - 0
MTWorkHR.Infrastructure/Migrations/20250306102558_altrOrderFK.cs

@@ -0,0 +1,185 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderFK : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_OrderRequests_BusinessTripExpenses_BusinessTripExpensesId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OrderRequests_ServiceCertificate_ServiceCertificateId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_OrderRequests_BusinessTripExpensesId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropIndex(
+                name: "IX_OrderRequests_ServiceCertificateId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "BusinessTripExpensesId",
+                table: "OrderRequests");
+
+            migrationBuilder.DropColumn(
+                name: "ServiceCertificateId",
+                table: "OrderRequests");
+
+            migrationBuilder.AddColumn<long>(
+                name: "OrderRequestId",
+                table: "ServiceCertificate",
+                type: "bigint",
+                nullable: false,
+                defaultValue: 0L);
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: false,
+                defaultValue: 0L,
+                oldClrType: typeof(long),
+                oldType: "bigint",
+                oldNullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "OrderRequestId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: false,
+                defaultValue: 0L);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ServiceCertificate_OrderRequestId",
+                table: "ServiceCertificate",
+                column: "OrderRequestId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                unique: true);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_ServiceCertificate_OrderRequests_OrderRequestId",
+                table: "ServiceCertificate",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_ServiceCertificate_OrderRequests_OrderRequestId",
+                table: "ServiceCertificate");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ServiceCertificate_OrderRequestId",
+                table: "ServiceCertificate");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropColumn(
+                name: "OrderRequestId",
+                table: "ServiceCertificate");
+
+            migrationBuilder.DropColumn(
+                name: "OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: true,
+                oldClrType: typeof(long),
+                oldType: "bigint");
+
+            migrationBuilder.AddColumn<long>(
+                name: "BusinessTripExpensesId",
+                table: "OrderRequests",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "ServiceCertificateId",
+                table: "OrderRequests",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OrderRequests_BusinessTripExpensesId",
+                table: "OrderRequests",
+                column: "BusinessTripExpensesId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OrderRequests_ServiceCertificateId",
+                table: "OrderRequests",
+                column: "ServiceCertificateId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OrderRequests_BusinessTripExpenses_BusinessTripExpensesId",
+                table: "OrderRequests",
+                column: "BusinessTripExpensesId",
+                principalTable: "BusinessTripExpenses",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OrderRequests_ServiceCertificate_ServiceCertificateId",
+                table: "OrderRequests",
+                column: "ServiceCertificateId",
+                principalTable: "ServiceCertificate",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id");
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7177 - 0
MTWorkHR.Infrastructure/Migrations/20250306105901_altrOrderFK2.Designer.cs


+ 121 - 0
MTWorkHR.Infrastructure/Migrations/20250306105901_altrOrderFK2.cs

@@ -0,0 +1,121 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderFK2 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: true,
+                oldClrType: typeof(long),
+                oldType: "bigint");
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: true,
+                oldClrType: typeof(long),
+                oldType: "bigint");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                unique: true,
+                filter: "[OrderRequestId] IS NOT NULL");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: false,
+                defaultValue: 0L,
+                oldClrType: typeof(long),
+                oldType: "bigint",
+                oldNullable: true);
+
+            migrationBuilder.AlterColumn<long>(
+                name: "OrderRequestId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: false,
+                defaultValue: 0L,
+                oldClrType: typeof(long),
+                oldType: "bigint",
+                oldNullable: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                unique: true);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderRequests_OrderRequestId",
+                table: "BusinessTripExpenses",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderRequests_OrderRequestId",
+                table: "OverTimeDay",
+                column: "OrderRequestId",
+                principalTable: "OrderRequests",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+        }
+    }
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 7257 - 0
MTWorkHR.Infrastructure/Migrations/20250306115344_altrOrderRequestAttach.Designer.cs


+ 240 - 0
MTWorkHR.Infrastructure/Migrations/20250306115344_altrOrderRequestAttach.cs

@@ -0,0 +1,240 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MTWorkHR.Infrastructure.Migrations
+{
+    /// <inheritdoc />
+    public partial class altrOrderRequestAttach : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_AccommodationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_OtherAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_TicketAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_TransportationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_OverTimeDay_OrderAttachment_OverTimeAttachmentId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_OverTimeDay_OverTimeAttachmentId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_AccommodationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_OtherAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_TicketAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropIndex(
+                name: "IX_BusinessTripExpenses_TransportationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropColumn(
+                name: "OverTimeAttachmentId",
+                table: "OverTimeDay");
+
+            migrationBuilder.DropColumn(
+                name: "AccommodationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropColumn(
+                name: "OtherAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropColumn(
+                name: "TicketAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.DropColumn(
+                name: "TransportationAttachmentId",
+                table: "BusinessTripExpenses");
+
+            migrationBuilder.CreateTable(
+                name: "BusinessTripAttachment",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    CreateUser = table.Column<string>(type: "nvarchar(450)", maxLength: 450, nullable: true),
+                    UpdateUser = table.Column<string>(type: "nvarchar(450)", maxLength: 450, nullable: true),
+                    CreateDate = table.Column<DateTime>(type: "datetime2", nullable: false),
+                    UpdateDate = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    BusinessTripExpensesId = table.Column<long>(type: "bigint", nullable: false),
+                    FileName = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true),
+                    OriginalName = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true),
+                    FilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ContentType = table.Column<string>(type: "nvarchar(max)", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_BusinessTripAttachment", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_BusinessTripAttachment_BusinessTripExpenses_BusinessTripExpensesId",
+                        column: x => x.BusinessTripExpensesId,
+                        principalTable: "BusinessTripExpenses",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "OverTimeDayAttachment",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    CreateUser = table.Column<string>(type: "nvarchar(450)", maxLength: 450, nullable: true),
+                    UpdateUser = table.Column<string>(type: "nvarchar(450)", maxLength: 450, nullable: true),
+                    CreateDate = table.Column<DateTime>(type: "datetime2", nullable: false),
+                    UpdateDate = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    OverTimeDayId = table.Column<long>(type: "bigint", nullable: false),
+                    FileName = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true),
+                    OriginalName = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true),
+                    FilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ContentType = table.Column<string>(type: "nvarchar(max)", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_OverTimeDayAttachment", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_OverTimeDayAttachment_OverTimeDay_OverTimeDayId",
+                        column: x => x.OverTimeDayId,
+                        principalTable: "OverTimeDay",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripAttachment_BusinessTripExpensesId",
+                table: "BusinessTripAttachment",
+                column: "BusinessTripExpensesId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OverTimeDayAttachment_OverTimeDayId",
+                table: "OverTimeDayAttachment",
+                column: "OverTimeDayId",
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "BusinessTripAttachment");
+
+            migrationBuilder.DropTable(
+                name: "OverTimeDayAttachment");
+
+            migrationBuilder.AddColumn<long>(
+                name: "OverTimeAttachmentId",
+                table: "OverTimeDay",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "AccommodationAttachmentId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "OtherAttachmentId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "TicketAttachmentId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.AddColumn<long>(
+                name: "TransportationAttachmentId",
+                table: "BusinessTripExpenses",
+                type: "bigint",
+                nullable: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_OverTimeDay_OverTimeAttachmentId",
+                table: "OverTimeDay",
+                column: "OverTimeAttachmentId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_AccommodationAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "AccommodationAttachmentId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_OtherAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "OtherAttachmentId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_TicketAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "TicketAttachmentId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_BusinessTripExpenses_TransportationAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "TransportationAttachmentId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_AccommodationAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "AccommodationAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_OtherAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "OtherAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_TicketAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "TicketAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_BusinessTripExpenses_OrderAttachment_TransportationAttachmentId",
+                table: "BusinessTripExpenses",
+                column: "TransportationAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_OverTimeDay_OrderAttachment_OverTimeAttachmentId",
+                table: "OverTimeDay",
+                column: "OverTimeAttachmentId",
+                principalTable: "OrderAttachment",
+                principalColumn: "Id");
+        }
+    }
+}

+ 170 - 62
MTWorkHR.Infrastructure/Migrations/HRDataContextModelSnapshot.cs

@@ -342,7 +342,7 @@ namespace MTWorkHR.Infrastructure.Migrations
                         });
                 });
 
-            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripExpenses", b =>
+            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripAttachment", b =>
                 {
                     b.Property<long>("Id")
                         .ValueGeneratedOnAdd()
@@ -351,39 +351,80 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
 
-                    b.Property<long?>("AccommodationAttachmentId")
+                    b.Property<long>("BusinessTripExpensesId")
                         .HasColumnType("bigint");
 
+                    b.Property<string>("ContentType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime>("CreateDate")
+                        .HasColumnType("datetime2")
+                        .HasColumnOrder(3);
+
+                    b.Property<string>("CreateUser")
+                        .HasMaxLength(450)
+                        .HasColumnType("nvarchar(450)")
+                        .HasColumnOrder(1);
+
+                    b.Property<string>("FileName")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)");
+
+                    b.Property<string>("FilePath")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("OriginalName")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)");
+
+                    b.Property<DateTime?>("UpdateDate")
+                        .HasColumnType("datetime2")
+                        .HasColumnOrder(4);
+
+                    b.Property<string>("UpdateUser")
+                        .HasMaxLength(450)
+                        .HasColumnType("nvarchar(450)")
+                        .HasColumnOrder(2);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("BusinessTripExpensesId");
+
+                    b.ToTable("BusinessTripAttachment");
+                });
+
+            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripExpenses", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasColumnOrder(0);
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
+
                     b.Property<decimal?>("AccommodationCost")
                         .HasColumnType("decimal(18,2)");
 
-                    b.Property<long?>("OtherAttachmentId")
+                    b.Property<long?>("OrderRequestId")
                         .HasColumnType("bigint");
 
                     b.Property<decimal?>("OtherCost")
                         .HasColumnType("decimal(18,2)");
 
-                    b.Property<long?>("TicketAttachmentId")
-                        .HasColumnType("bigint");
-
                     b.Property<decimal?>("TicketCost")
                         .HasColumnType("decimal(18,2)");
 
-                    b.Property<long?>("TransportationAttachmentId")
-                        .HasColumnType("bigint");
+                    b.Property<decimal?>("TotalCost")
+                        .HasColumnType("decimal(18,2)");
 
                     b.Property<decimal?>("TransportationCost")
                         .HasColumnType("decimal(18,2)");
 
                     b.HasKey("Id");
 
-                    b.HasIndex("AccommodationAttachmentId");
-
-                    b.HasIndex("OtherAttachmentId");
-
-                    b.HasIndex("TicketAttachmentId");
-
-                    b.HasIndex("TransportationAttachmentId");
+                    b.HasIndex("OrderRequestId")
+                        .IsUnique()
+                        .HasFilter("[OrderRequestId] IS NOT NULL");
 
                     b.ToTable("BusinessTripExpenses");
                 });
@@ -3432,9 +3473,6 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
 
-                    b.Property<long?>("AttachmentTypeId")
-                        .HasColumnType("bigint");
-
                     b.Property<string>("ContentType")
                         .HasColumnType("nvarchar(max)");
 
@@ -3577,6 +3615,58 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.ToTable("OverTimeDay");
                 });
 
+            modelBuilder.Entity("MTWorkHR.Core.Entities.OverTimeDayAttachment", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasColumnOrder(0);
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
+
+                    b.Property<string>("ContentType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime>("CreateDate")
+                        .HasColumnType("datetime2")
+                        .HasColumnOrder(3);
+
+                    b.Property<string>("CreateUser")
+                        .HasMaxLength(450)
+                        .HasColumnType("nvarchar(450)")
+                        .HasColumnOrder(1);
+
+                    b.Property<string>("FileName")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)");
+
+                    b.Property<string>("FilePath")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("OriginalName")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)");
+
+                    b.Property<long>("OverTimeDayId")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime?>("UpdateDate")
+                        .HasColumnType("datetime2")
+                        .HasColumnOrder(4);
+
+                    b.Property<string>("UpdateUser")
+                        .HasMaxLength(450)
+                        .HasColumnType("nvarchar(450)")
+                        .HasColumnOrder(2);
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OverTimeDayId")
+                        .IsUnique();
+
+                    b.ToTable("OverTimeDayAttachment");
+                });
+
             modelBuilder.Entity("MTWorkHR.Core.Entities.Permission", b =>
                 {
                     b.Property<long>("Id")
@@ -4316,6 +4406,9 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.Property<string>("Name")
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<long>("OrderRequestId")
+                        .HasColumnType("bigint");
+
                     b.Property<string>("Position")
                         .HasColumnType("nvarchar(max)");
 
@@ -4330,6 +4423,9 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     b.HasKey("Id");
 
+                    b.HasIndex("OrderRequestId")
+                        .IsUnique();
+
                     b.ToTable("ServiceCertificate");
                 });
 
@@ -4744,9 +4840,6 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("Id"));
 
-                    b.Property<long?>("BusinessTripExpensesId")
-                        .HasColumnType("bigint");
-
                     b.Property<long>("CompanyId")
                         .HasColumnType("bigint");
 
@@ -4799,12 +4892,12 @@ namespace MTWorkHR.Infrastructure.Migrations
                         .IsRequired()
                         .HasColumnType("nvarchar(max)");
 
-                    b.Property<long?>("ServiceCertificateId")
-                        .HasColumnType("bigint");
-
                     b.Property<DateTime>("StartDate")
                         .HasColumnType("datetime2");
 
+                    b.Property<decimal?>("TotalDays")
+                        .HasColumnType("decimal(18,2)");
+
                     b.Property<DateTime?>("UpdateDate")
                         .HasColumnType("datetime2")
                         .HasColumnOrder(4);
@@ -4816,16 +4909,12 @@ namespace MTWorkHR.Infrastructure.Migrations
 
                     b.HasKey("Id");
 
-                    b.HasIndex("BusinessTripExpensesId");
-
                     b.HasIndex("CompanyId");
 
                     b.HasIndex("LeaveTypeId");
 
                     b.HasIndex("OrderTypeId");
 
-                    b.HasIndex("ServiceCertificateId");
-
                     b.ToTable("OrderRequests");
                 });
 
@@ -6634,31 +6723,24 @@ namespace MTWorkHR.Infrastructure.Migrations
                         .IsRequired();
                 });
 
-            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripExpenses", b =>
+            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripAttachment", b =>
                 {
-                    b.HasOne("MTWorkHR.Core.Entities.OrderAttachment", "AccommodationAttachment")
-                        .WithMany()
-                        .HasForeignKey("AccommodationAttachmentId");
-
-                    b.HasOne("MTWorkHR.Core.Entities.OrderAttachment", "OtherAttachment")
-                        .WithMany()
-                        .HasForeignKey("OtherAttachmentId");
-
-                    b.HasOne("MTWorkHR.Core.Entities.OrderAttachment", "TicketAttachment")
-                        .WithMany()
-                        .HasForeignKey("TicketAttachmentId");
-
-                    b.HasOne("MTWorkHR.Core.Entities.OrderAttachment", "TransportationAttachment")
-                        .WithMany()
-                        .HasForeignKey("TransportationAttachmentId");
-
-                    b.Navigation("AccommodationAttachment");
+                    b.HasOne("MTWorkHR.Core.Entities.BusinessTripExpenses", "BusinessTripExpenses")
+                        .WithMany("Attachments")
+                        .HasForeignKey("BusinessTripExpensesId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
 
-                    b.Navigation("OtherAttachment");
+                    b.Navigation("BusinessTripExpenses");
+                });
 
-                    b.Navigation("TicketAttachment");
+            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripExpenses", b =>
+                {
+                    b.HasOne("MTWorkHR.Core.Entities.User.OrderRequest", "OrderRequest")
+                        .WithOne("BusinessTripExpenses")
+                        .HasForeignKey("MTWorkHR.Core.Entities.BusinessTripExpenses", "OrderRequestId");
 
-                    b.Navigation("TransportationAttachment");
+                    b.Navigation("OrderRequest");
                 });
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.ChatAttachment", b =>
@@ -6772,9 +6854,22 @@ namespace MTWorkHR.Infrastructure.Migrations
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.OverTimeDay", b =>
                 {
-                    b.HasOne("MTWorkHR.Core.Entities.User.OrderRequest", null)
+                    b.HasOne("MTWorkHR.Core.Entities.User.OrderRequest", "OrderRequest")
                         .WithMany("OverTimeDays")
                         .HasForeignKey("OrderRequestId");
+
+                    b.Navigation("OrderRequest");
+                });
+
+            modelBuilder.Entity("MTWorkHR.Core.Entities.OverTimeDayAttachment", b =>
+                {
+                    b.HasOne("MTWorkHR.Core.Entities.OverTimeDay", "OverTimeDay")
+                        .WithOne("OverTimeAttachment")
+                        .HasForeignKey("MTWorkHR.Core.Entities.OverTimeDayAttachment", "OverTimeDayId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OverTimeDay");
                 });
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.ProjectStage", b =>
@@ -6810,6 +6905,17 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.Navigation("Project");
                 });
 
+            modelBuilder.Entity("MTWorkHR.Core.Entities.ServiceCertificate", b =>
+                {
+                    b.HasOne("MTWorkHR.Core.Entities.User.OrderRequest", "OrderRequest")
+                        .WithOne("ServiceCertificate")
+                        .HasForeignKey("MTWorkHR.Core.Entities.ServiceCertificate", "OrderRequestId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OrderRequest");
+                });
+
             modelBuilder.Entity("MTWorkHR.Core.Entities.TaskUser", b =>
                 {
                     b.HasOne("MTWorkHR.Core.Entities.UserTask", "UserTask")
@@ -6834,10 +6940,6 @@ namespace MTWorkHR.Infrastructure.Migrations
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.User.OrderRequest", b =>
                 {
-                    b.HasOne("MTWorkHR.Core.Entities.BusinessTripExpenses", "BusinessTripExpenses")
-                        .WithMany()
-                        .HasForeignKey("BusinessTripExpensesId");
-
                     b.HasOne("MTWorkHR.Core.Entities.LeaveType", "LeaveType")
                         .WithMany()
                         .HasForeignKey("LeaveTypeId");
@@ -6848,17 +6950,9 @@ 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 =>
@@ -7073,6 +7167,11 @@ namespace MTWorkHR.Infrastructure.Migrations
                         .IsRequired();
                 });
 
+            modelBuilder.Entity("MTWorkHR.Core.Entities.BusinessTripExpenses", b =>
+                {
+                    b.Navigation("Attachments");
+                });
+
             modelBuilder.Entity("MTWorkHR.Core.Entities.ChatMessage", b =>
                 {
                     b.Navigation("ChatAttachments");
@@ -7097,6 +7196,11 @@ namespace MTWorkHR.Infrastructure.Migrations
                     b.Navigation("MeetingUsers");
                 });
 
+            modelBuilder.Entity("MTWorkHR.Core.Entities.OverTimeDay", b =>
+                {
+                    b.Navigation("OverTimeAttachment");
+                });
+
             modelBuilder.Entity("MTWorkHR.Core.Entities.Project", b =>
                 {
                     b.Navigation("ProjectTeams");
@@ -7114,9 +7218,13 @@ namespace MTWorkHR.Infrastructure.Migrations
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.User.OrderRequest", b =>
                 {
+                    b.Navigation("BusinessTripExpenses");
+
                     b.Navigation("OrderAttachments");
 
                     b.Navigation("OverTimeDays");
+
+                    b.Navigation("ServiceCertificate");
                 });
 
             modelBuilder.Entity("MTWorkHR.Core.Entities.UserTask", b =>

+ 16 - 3
MTWorkHR.Infrastructure/Repositories/User/OrderRequestRepository.cs

@@ -20,14 +20,27 @@ namespace MTWorkHR.Infrastructure.Repositories
         {
             return await dbSet
                 .Include(x => x.OrderType)
-                .Include(x => x.BusinessTripExpenses)
+                .Include(x=> x.LeaveType)
+                .Include(x => x.BusinessTripExpenses).ThenInclude(x=> x.Attachments)
                 .Include(x => x.ServiceCertificate)
+                .Include(x => x.OrderAttachments)
+                .Include(x => x.OverTimeDays).ThenInclude(x=> x.OverTimeAttachment)
+                .AsNoTracking()
+                .FirstOrDefaultAsync(x => x.Id == id);
+        }
+
+        public async Task<OrderRequest> GetByIdWithTypes(long id)
+        {
+            return await dbSet
+                .Include(x => x.OrderType)
+                .Include(x => x.LeaveType)
+                .AsNoTracking()
                 .FirstOrDefaultAsync(x => x.Id == id);
         }
 
         public async Task<Tuple<IQueryable<OrderRequest>, int>> GetAllWithChildrenAsync()
         {
-            var query = dbSet.Include(x => x.OrderType).Include(x=> x.LeaveType).AsQueryable();
+            var query = dbSet.Include(x => x.OrderType).Include(x=> x.LeaveType).AsNoTracking().AsQueryable();
             var total = await query.CountAsync();
 
             return new Tuple<IQueryable<OrderRequest>, int>(query, total);
@@ -35,7 +48,7 @@ namespace MTWorkHR.Infrastructure.Repositories
 
         public async Task<Tuple<IQueryable<OrderRequest>, int>> GetAllUserOrdersAsync(string userId, long contractId)
         {
-            var query = dbSet.Include(x => x.OrderType).Include(x => x.LeaveType).Where(a=> a.RequestingEmployeeId == userId && a.ContractId == contractId).AsQueryable();
+            var query = dbSet.Include(x => x.OrderType).Include(x => x.LeaveType).Where(a=> a.RequestingEmployeeId == userId && a.ContractId == contractId).AsNoTracking().AsQueryable();
             var total = await query.CountAsync();
 
             return new Tuple<IQueryable<OrderRequest>, int>(query, total);