public async Task <ActionResult <LeaveRequest> > PostLeaveRequest(LeaveRequestVM LeaveRequestObj)
        {
            System.Security.Claims.ClaimsPrincipal currentUser = this.User;
            var email    = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email).Value;
            var lstUsers = _context.Employees.Where(e => e.Email == email).ToList();

            if (lstUsers.Count > 0)
            {
                var CurrentEmpUser = lstUsers[0];
                if (LeaveRequestObj.EmployeeID == 0)
                {
                    LeaveRequestObj.EmployeeID = CurrentEmpUser.ID;
                }
                LeaveRequestObj.Date = DateTime.Now;
                LeaveRequest lv = new LeaveRequest
                {
                    Date               = LeaveRequestObj.Date,
                    Comment            = LeaveRequestObj.Comment,
                    AlternativeEmpID   = LeaveRequestObj.AlternativeEmpID,
                    EmployeeID         = LeaveRequestObj.EmployeeID,
                    LeaveTypeID        = LeaveRequestObj.LeaveTypeID,
                    AlternativeAddress = LeaveRequestObj.AlternativeAddress,
                    Start              = LeaveRequestObj.Start,
                    Status             = LeaveRequestObj.Status,
                    Days               = LeaveRequestObj.Days
                };
                _context.LeaveRequests.Add(lv);
                await _context.SaveChangesAsync();

                if (LeaveRequestObj.LeavesFiles != null)
                {
                    var files = LeaveRequestObj.LeavesFiles.Split(',').ToList();

                    files.Remove("");
                    foreach (var item in files)
                    {
                        LeaveFiles leaveFiles = new LeaveFiles
                        {
                            FileName       = item,
                            LeaveRequestID = lv.ID
                        };
                        _context.LeaveFiles.Add(leaveFiles);
                    }
                }
                await _context.SaveChangesAsync();
            }
            return(CreatedAtAction("GetLeaveRequest", new { id = LeaveRequestObj.ID }, LeaveRequestObj));
        }
        public async Task <IActionResult> PutLeaveRequest(int id, LeaveRequestVM LeaveRequestObj)
        {
            if (id != LeaveRequestObj.ID)
            {
                return(BadRequest());
            }
            System.Security.Claims.ClaimsPrincipal currentUser = this.User;
            var email    = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email).Value;
            var lstUsers = _context.Employees.Where(e => e.Email == email).ToList();

            if (lstUsers.Count > 0)
            {
                var CurrentEmpUser = lstUsers[0];
                if (LeaveRequestObj.EmployeeID == 0)
                {
                    LeaveRequestObj.EmployeeID = CurrentEmpUser.ID;
                }
                LeaveRequestObj.Date = DateTime.Now;
                LeaveRequest lv = new LeaveRequest
                {
                    ID                 = LeaveRequestObj.ID,
                    Date               = LeaveRequestObj.Date,
                    Comment            = LeaveRequestObj.Comment,
                    AlternativeEmpID   = LeaveRequestObj.AlternativeEmpID,
                    EmployeeID         = LeaveRequestObj.EmployeeID,
                    LeaveTypeID        = LeaveRequestObj.LeaveTypeID,
                    AlternativeAddress = LeaveRequestObj.AlternativeAddress,
                    Start              = LeaveRequestObj.Start,
                    Status             = LeaveRequestObj.Status,
                    Days               = LeaveRequestObj.Days
                };
                _context.Entry(lv).State = EntityState.Modified;
                await _context.SaveChangesAsync();

                if (LeaveRequestObj.LeavesFiles != null)
                {
                    var files = LeaveRequestObj.LeavesFiles.Split(',').ToList();

                    files.Remove("");
                    foreach (var item in files)
                    {
                        LeaveFiles leaveFiles = new LeaveFiles
                        {
                            FileName       = item,
                            LeaveRequestID = lv.ID
                        };
                        _context.LeaveFiles.Add(leaveFiles);
                    }
                }

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