From 8ad90f18f06df58fbf3a377b8eaff277aea1d247 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 8 Jul 2024 17:09:27 +0700 Subject: [PATCH] fix : create and edit leave request --- .../Leaves/LeaveRequests/LeaveRequestRepository.cs | 6 +++++- .../Controllers/LeaveRequestController.cs | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 42bfc239..41c81228 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -72,7 +72,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests public override async Task GetByIdAsync(Guid id) { - var data = await _dbContext.Set().AsQueryable() + var data = await _dbContext.Set().AsQueryable().AsNoTracking() .Include(x => x.LeaveDocument) .ThenInclude(x => x.Document) .Include(x => x.LeaveDraftDocument) @@ -112,7 +112,11 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests // _dbContext.Attatch(entity.LeaveDocument); if (entity.Type != null) + { + _dbContext.Attatch(entity.Type); + } + return await base.UpdateAsync(entity); } diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 43e4342a..77827ca6 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -13,6 +13,8 @@ using Swashbuckle.AspNetCore.Annotations; using System.Security.Claims; using BMA.EHR.Application.Repositories.Commands; using BMA.EHR.Application.Repositories.Leaves.TimeAttendants; +using BMA.EHR.Domain.Models.Leave.Commons; +using Microsoft.EntityFrameworkCore; namespace BMA.EHR.Leave.Service.Controllers { @@ -200,6 +202,7 @@ namespace BMA.EHR.Leave.Service.Controllers if (doc != null) { leaveRequest.LeaveDraftDocument = doc; + _context.Entry(leaveRequest.LeaveDraftDocument).State = Microsoft.EntityFrameworkCore.EntityState.Modified; } } @@ -361,7 +364,7 @@ namespace BMA.EHR.Leave.Service.Controllers var userCalendar = await _userCalendarRepository.GetExist(profile.Id); var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; - var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type); + var leaveType = await _context.Set().AsNoTracking().FirstOrDefaultAsync(x => x.Id == req.Type); // _leaveTypeRepository.GetByIdAsync(req.Type); if (leaveType == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -426,6 +429,7 @@ namespace BMA.EHR.Leave.Service.Controllers if (doc != null) { leaveRequest.LeaveDraftDocument = doc; + _context.Entry(leaveRequest.LeaveDraftDocument).State = Microsoft.EntityFrameworkCore.EntityState.Modified; } } @@ -539,13 +543,16 @@ namespace BMA.EHR.Leave.Service.Controllers leaveRequest.PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel.PosLevelName; leaveRequest.OrganizationName = profile.Oc ?? ""; + _context.Entry(leaveRequest.Type).State = Microsoft.EntityFrameworkCore.EntityState.Detached; + //_context.Entry(leaveRequest.Type).State = Microsoft.EntityFrameworkCore.EntityState.Modified; + // delete old - await _leaveRequestRepository.DeleteAsync(oldData); + //await _leaveRequestRepository.DeleteAsync(oldData); // save to database - await _leaveRequestRepository.AddAsync(leaveRequest); + await _leaveRequestRepository.UpdateAsync(leaveRequest); return Success(new { id = leaveRequest.Id }); }