public async Task <ActionResult <IEnumerable <ClaimApprovalStatusTrackerDTO> > > GetClaimApprovalStatusTrackers()
        {
            List <ClaimApprovalStatusTrackerDTO> ListClaimApprovalStatusTrackerDTO = new List <ClaimApprovalStatusTrackerDTO>();

            var claimApprovalStatusTrackers = await _context.ClaimApprovalStatusTrackers.ToListAsync();

            foreach (ClaimApprovalStatusTracker claimApprovalStatusTracker in claimApprovalStatusTrackers)
            {
                ClaimApprovalStatusTrackerDTO claimApprovalStatusTrackerDTO = new ClaimApprovalStatusTrackerDTO();

                claimApprovalStatusTrackerDTO.Id                        = claimApprovalStatusTracker.Id;
                claimApprovalStatusTrackerDTO.EmployeeId                = claimApprovalStatusTracker.EmployeeId;
                claimApprovalStatusTrackerDTO.PettyCashRequestId        = claimApprovalStatusTracker.PettyCashRequestId;
                claimApprovalStatusTrackerDTO.ExpenseReimburseRequestId = claimApprovalStatusTracker.ExpenseReimburseRequestId;
                claimApprovalStatusTrackerDTO.DepartmentId              = claimApprovalStatusTracker.DepartmentId;
                claimApprovalStatusTrackerDTO.ProjectId                 = claimApprovalStatusTracker.ProjectId;
                claimApprovalStatusTrackerDTO.ReqDate                   = claimApprovalStatusTracker.ReqDate;
                claimApprovalStatusTrackerDTO.FinalApprovedDate         = claimApprovalStatusTracker.FinalApprovedDate;
                claimApprovalStatusTrackerDTO.ApprovalStatusTypeId      = claimApprovalStatusTracker.ApprovalStatusTypeId;

                ListClaimApprovalStatusTrackerDTO.Add(claimApprovalStatusTrackerDTO);
            }

            return(ListClaimApprovalStatusTrackerDTO);
        }
        public async Task <IActionResult> PutClaimApprovalStatusTracker(int id, ClaimApprovalStatusTrackerDTO claimApprovalStatusTrackerDto)
        {
            if (id != claimApprovalStatusTrackerDto.Id)
            {
                return(BadRequest());
            }

            var claimApprovalStatusTracker = await _context.ClaimApprovalStatusTrackers.FindAsync(id);

            claimApprovalStatusTracker.Id                        = claimApprovalStatusTrackerDto.Id;
            claimApprovalStatusTracker.EmployeeId                = claimApprovalStatusTrackerDto.EmployeeId;
            claimApprovalStatusTracker.PettyCashRequestId        = claimApprovalStatusTrackerDto.PettyCashRequestId;
            claimApprovalStatusTracker.ExpenseReimburseRequestId = claimApprovalStatusTrackerDto.ExpenseReimburseRequestId;
            claimApprovalStatusTracker.DepartmentId              = claimApprovalStatusTrackerDto.DepartmentId;
            claimApprovalStatusTracker.ProjectId                 = claimApprovalStatusTrackerDto.ProjectId;
            claimApprovalStatusTracker.ReqDate                   = claimApprovalStatusTrackerDto.ReqDate;
            claimApprovalStatusTracker.FinalApprovedDate         = claimApprovalStatusTrackerDto.FinalApprovedDate;
            claimApprovalStatusTracker.ApprovalStatusTypeId      = claimApprovalStatusTrackerDto.ApprovalStatusTypeId;

            _context.ClaimApprovalStatusTrackers.Update(claimApprovalStatusTracker);
            //_context.Entry(claimApprovalStatusTracker).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ClaimApprovalStatusTrackerExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult <ClaimApprovalStatusTrackerDTO> > GetClaimApprovalStatusTracker(int id)
        {
            ClaimApprovalStatusTrackerDTO claimApprovalStatusTrackerDTO = new ClaimApprovalStatusTrackerDTO();

            var claimApprovalStatusTracker = await _context.ClaimApprovalStatusTrackers.FindAsync(id);

            if (claimApprovalStatusTracker == null)
            {
                return(NotFound());
            }

            claimApprovalStatusTrackerDTO.Id                        = claimApprovalStatusTracker.Id;
            claimApprovalStatusTrackerDTO.EmployeeId                = claimApprovalStatusTracker.EmployeeId;
            claimApprovalStatusTrackerDTO.PettyCashRequestId        = claimApprovalStatusTracker.PettyCashRequestId;
            claimApprovalStatusTrackerDTO.ExpenseReimburseRequestId = claimApprovalStatusTracker.ExpenseReimburseRequestId;
            claimApprovalStatusTrackerDTO.DepartmentId              = claimApprovalStatusTracker.DepartmentId;
            claimApprovalStatusTrackerDTO.ProjectId                 = claimApprovalStatusTracker.ProjectId;
            claimApprovalStatusTrackerDTO.ReqDate                   = claimApprovalStatusTracker.ReqDate;
            claimApprovalStatusTrackerDTO.FinalApprovedDate         = claimApprovalStatusTracker.FinalApprovedDate;
            claimApprovalStatusTrackerDTO.ApprovalStatusTypeId      = claimApprovalStatusTracker.ApprovalStatusTypeId;

            return(claimApprovalStatusTrackerDTO);
        }
        public async Task <ActionResult <ClaimApprovalStatusTracker> > PostClaimApprovalStatusTracker(ClaimApprovalStatusTrackerDTO claimApprovalStatusTrackerDto)
        {
            ClaimApprovalStatusTracker claimApprovalStatusTracker = new()
            {
                Id                   = claimApprovalStatusTrackerDto.Id,
                EmployeeId           = claimApprovalStatusTrackerDto.EmployeeId,
                PettyCashRequestId   = claimApprovalStatusTrackerDto.PettyCashRequestId,
                DepartmentId         = claimApprovalStatusTrackerDto.DepartmentId,
                ProjectId            = claimApprovalStatusTrackerDto.ProjectId,
                RoleId               = claimApprovalStatusTrackerDto.RoleId,
                ApprovalLevelId      = claimApprovalStatusTrackerDto.ApprovalLevelId,
                ReqDate              = claimApprovalStatusTrackerDto.ReqDate,
                FinalApprovedDate    = claimApprovalStatusTrackerDto.FinalApprovedDate,
                ApprovalStatusTypeId = (int)EApprovalStatus.Pending,
                Comments             = claimApprovalStatusTrackerDto.Comments
            };

            _context.ClaimApprovalStatusTrackers.Add(claimApprovalStatusTracker);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetClaimApprovalStatusTracker", new { id = claimApprovalStatusTracker.Id }, claimApprovalStatusTracker));
        }