public IActionResult Application()
        {
            vmLatePermissionCreate vmLatePermissionCreate = new vmLatePermissionCreate();

            vmLatePermissionCreate = GetAdditionalShowingInfo(vmLatePermissionCreate);
            return(View(vmLatePermissionCreate));
        }
        private bool AddLatePermission(vmLatePermissionCreate vmLatePermissionCreate)
        {
            bool isLatePermissionAdded = false;

            LatePermission latePermission     = new LatePermission();
            var            loggedInEmployeeId = User.GetCurrentEmployeeId(db.Employee);
            Employee       employee           = db.Employee.GetFirstOrDefaultWithRelatedData(c => c.Id == loggedInEmployeeId && c.IsActive == true && c.IsDeleted == false);

            latePermission.EmployeeId      = employee.Id;
            latePermission.Purpose         = vmLatePermissionCreate.Purpose;
            latePermission.WhenTime        = DateTime.Parse(vmLatePermissionCreate.When);
            latePermission.Status          = ApplicationStatus.Pending;
            latePermission.ApplicationToId = vmLatePermissionCreate.ApplicationTo;
            db.LatePermission.Add(latePermission);

            isLatePermissionAdded = db.Save() > 0;
            if (isLatePermissionAdded)
            {
                db.ApplicationApproval.SetApprover(ApplicationType.Late, loggedInEmployeeId, latePermission.Id.ToString(), latePermission.CreatedDate, latePermission.CreatedBy);
            }
            return(isLatePermissionAdded);
        }
        public IActionResult Application(vmLatePermissionCreate vmLatePermissionCreate)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    bool isSaved = AddLatePermission(vmLatePermissionCreate);

                    if (isSaved)
                    {
                        vmLatePermissionCreate model = new vmLatePermissionCreate();
                        model = GetAdditionalShowingInfo(model);

                        model.IsModelValid = true;
                        model.ErrorMessage = "Late permission successfully added. Please wait for the confirmation.";

                        return(Json(model));
                    }

                    vmLatePermissionCreate.IsModelValid = false;
                    vmLatePermissionCreate.ErrorMessage = "Late permission can not be added. Something went wrong. Please try again.";

                    return(Json(vmLatePermissionCreate));
                }

                vmLatePermissionCreate.IsModelValid = false;
                vmLatePermissionCreate.ErrorMessage = "Validation Failed!. Please try Again with valid data.";

                return(Json(vmLatePermissionCreate));
            }
            catch
            {
                vmLatePermissionCreate.IsModelValid = false;
                vmLatePermissionCreate.ErrorMessage = "Late permission can not be added. Something went wrong. Please try Again.";

                return(Json(vmLatePermissionCreate));
            }
        }
        private vmLatePermissionCreate GetAdditionalShowingInfo(vmLatePermissionCreate vmLatePermissionCreate)
        {
            var      loggedInEmployeeId = User.GetCurrentEmployeeId(db.Employee);
            Employee employee           = db.Employee.GetFirstOrDefaultWithRelatedData(c => c.Id == loggedInEmployeeId && c.IsActive == true && c.IsDeleted == false);

            if (employee.Superiror != null)
            {
                var applicationTo = new List <SelectListItem>();
                applicationTo.Add(new SelectListItem {
                    Text = employee.Superiror.MaskingId + " || " + employee.Superiror.FullName, Value = employee.Superiror.Id.ToString()
                });
                vmLatePermissionCreate.ApplicationToList = applicationTo;
            }
            vmLatePermissionCreate.EmployeeId  = employee.MaskingId;
            vmLatePermissionCreate.Name        = employee.FullName;
            vmLatePermissionCreate.Department  = employee.Department.Name;
            vmLatePermissionCreate.Designation = employee.Designation.Name;
            vmLatePermissionCreate.Department  = employee.Department.Name;
            vmLatePermissionCreate.Username    = User.Identity.Name;

            vmLatePermissionCreate.ApplicationStatusList = GetApplicationStatusList(employee.Id);

            return(vmLatePermissionCreate);
        }