public async Task <IActionResult> Details(Guid id)
        {
            var employeeLeaveQuery = await _employeeLeaveServices.GetEmployeeLeaveById(id);

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

            var model = new EmployeeLeaveDetailViewModel
            {
                Id            = employeeLeaveQuery.Id,
                EmployeeId    = employeeLeaveQuery.EmployeeId ?? Guid.Empty,
                LeaveTypeId   = employeeLeaveQuery.LeaveTypeID ?? Guid.Empty,
                ReplacementId = employeeLeaveQuery.ReplacementId ?? Guid.Empty,
                RejectReason  = employeeLeaveQuery.RejectReason,
                DaystoTake    = employeeLeaveQuery.DaysToTake ?? 0,
                StartDate     = employeeLeaveQuery.StartDate == null ? string.Empty : DateTime.Parse(employeeLeaveQuery.StartDate.ToString()).ToString("yyyy-MM-dd"),
                EndDate       = employeeLeaveQuery.EndDate == null ? string.Empty : DateTime.Parse(employeeLeaveQuery.EndDate.ToString()).ToString("yyyy-MM-dd")
            };

            await LoadSelectListsAsync();

            return(View(model));
        }
        public async Task <IActionResult> Details(EmployeeLeaveDetailViewModel formData)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    await _employeeLeaveServices.UpdateEmployeeLeaveAsync(new EmployeeLeave
                    {
                        DateTimeModified = DateTimeOffset.Now,
                        Id            = formData.Id,
                        EmployeeId    = formData.EmployeeId,
                        LeaveTypeID   = formData.LeaveTypeId,
                        ReplacementId = formData.ReplacementId,
                        DaysToTake    = formData.DaystoTake,
                        EndDate       = DateTime.Parse(formData.EndDate),
                        StartDate     = DateTime.Parse(formData.StartDate),
                        RejectReason  = formData.RejectReason,
                        UserAccount   = User.Identity.Name
                    });

                    TempData["Message"] = "Changes saved successfully";
                    _logger.LogInformation($"SUCCESS: successfully updated employee leave application by user={@User.Identity.Name.Substring(4)}");
                    return(RedirectToAction("details", new { id = formData.Id }));
                }
            }
            catch (ApplicationException error)
            {
                _logger.LogError(
                    error,
                    $"FAIL: failed to update employee leave details. Internal Application Error.; user={@User.Identity.Name.Substring(4)}");
                ModelState.AddModelError("EmployeeLeave", $"Failed to update Employee leave record. Contact IT ServiceDesk for support thank you.");
            }

            await LoadSelectListsAsync();

            return(View(formData));
        }