Esempio n. 1
0
        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());
            }
        }