public ActionResult ViewDelegate(Models.Delegate d, string delegatedhead, string sessionId) { Employee emp = EmployeeService.GetUserBySessionId(sessionId); long deptId = emp.DeptId; List <Employee> employees = RepresentativeService.GetEmployeesByDepartment(deptId); long headId = DepartmentService.GetCurrentHead(deptId); Employee e = EmployeeDAO.GetEmployeeById(headId); ViewData["currentHead"] = e; ViewData["employees"] = employees; ViewData["timeErr"] = false; bool all = DelegateService.CheckPreviousHeadForNav(deptId); ViewData["all"] = all; ViewData["sessionId"] = sessionId; if (delegatedhead == null && d.Employee == null) { if (DelegateService.CheckDelegatedByDept(deptId)) { ViewData["delegated"] = true; } else { ViewData["delegated"] = false; } return(View()); } else if (delegatedhead == null && d.Employee != null) { d.Department = new Department(); d.Department.DeptId = deptId; bool isThereDelegate = DelegateService.CheckDelegatedByDept(deptId); bool timeErr = (d.FromDate < DateTime.Now && d.ToDate < DateTime.Now); ViewData["timeErr"] = timeErr; if (!isThereDelegate && !timeErr) { DelegateService.AddNewDelegate(d, headId); EmailNotification notice = new EmailNotification(); Employee MailReceiver = EmployeeService.GetEmployeeById(d.Employee.EmpId); notice.ReceiverMailAddress = MailReceiver.Email; notice.From = d.FromDate; notice.To = d.ToDate; Task.Run(() => emailService.SendMail(notice, EmailTrigger.ON_DELEGATED_AS_DEPT_HEAD)); } bool allnav = DelegateService.CheckPreviousHeadForNav(deptId); ViewData["all"] = allnav; long head = DepartmentService.GetCurrentHead(deptId); Employee h = EmployeeDAO.GetEmployeeById(head); ViewData["currentHead"] = h; if (timeErr) { ViewData["delegated"] = false; } else { ViewData["delegated"] = true; } return(View()); } else if (delegatedhead != null && d.Employee == null) { EmailNotification notice = new EmailNotification(); long head = DepartmentService.GetCurrentHead(deptId); Employee MailReceiver = EmployeeDAO.GetEmployeeById(head); notice.ReceiverMailAddress = MailReceiver.Email; DelegateService.DelegateToPreviousHead(deptId); Task.Run(() => emailService.SendMail(notice, EmailTrigger.ON_REMOVED_DEPT_HEAD)); List <Employee> emps = RepresentativeService.GetEmployeesByDepartment(deptId); ViewData["employees"] = emps; ViewData["delegated"] = false; bool show = DelegateService.CheckPreviousHeadForNav(deptId); ViewData["all"] = show; return(View()); } else { ViewData["delegated"] = false; return(View()); } }