public IHttpActionResult DelegateDepartmentHead(DelegateDepHeadApiModel depFromJson) { string status = "Fail to delegate. Approve all request before delegating."; AspNetUsers user = _context.AspNetUsers.FirstOrDefault(m => m.Id == depFromJson.UserId); //check if there is any request pending approval, if yes, disallow them from changing bool anyPendingRequest = _context.StationeryRequest.Any(m => m.DepartmentId == user.DepartmentId && m.Status == "Pending Approval"); //StationeryRequest sr = _context.StationeryRequest.FirstOrDefault(m =>m.DepartmentId == user.DepartmentId && m.Status == "Pending Approval"); if (!anyPendingRequest) //if (sr==null) { AspNetUsers delegatedDepHead = _context.AspNetUsers.FirstOrDefault(m => m.EmployeeName == depFromJson.DelegatedDepartmentHeadName); DelegationOfAuthority doaInDb = new DelegationOfAuthority { DOAId = GenerateDelegationOfAuthorityId(), DelegatedBy = user.Id, DelegatedTo = delegatedDepHead.Id, StartDate = depFromJson.StartDate, EndDate = depFromJson.EndDate, DepartmentId = user.DepartmentId }; _context.DelegationOfAuthority.Add(doaInDb); ApplicationUserManager userManager = HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>(); userManager.AddToRole(doaInDb.DelegatedTo, RoleName.ActingDepartmentHead); _context.SaveChanges(); status = "Successfully delegated."; //emailing the delegated head //string delHeadEmail = _context.Department.FirstOrDefault(m => m.DepartmentId == pair.Key).AspNetUsers3.Email; string recipient = "*****@*****.**"; //dummy email used string title = "You've been delegated as Acting head department from " + depFromJson.StartDate + " to " + depFromJson.EndDate; string body = "Dear employee, you have been delegated as Acting head department for the period stated above. Kindly approve/reject all request while the head is out of the office."; Email.Send(recipient, title, body); } return(Ok(status)); }
public IHttpActionResult GetDepartmentHeadListEmployees(string id) { AspNetUsers user = _context.AspNetUsers.FirstOrDefault(m => m.Id == id); AspNetRoles depHeadRoleList = _context.AspNetRoles.FirstOrDefault(m => m.Name == RoleName.ActingDepartmentHead); AspNetUsers delegatedDepHead = depHeadRoleList.AspNetUsers.FirstOrDefault(m => m.DepartmentId == user.DepartmentId); DelegateDepHeadApiModel apiModel = new DelegateDepHeadApiModel(); apiModel.DepartmentName = user.Department.DepartmentName; IEnumerable <AspNetRoles> employeesInDepartment = _context.AspNetRoles.Where(m => m.Name == RoleName.ActingDepartmentHead || m.Name == RoleName.Employee).ToList(); List <AspNetUsers> employeesForDelegate = new List <AspNetUsers>(); foreach (var currentRole in employeesInDepartment) { employeesForDelegate.AddRange(currentRole.AspNetUsers.ToList()); } List <AspNetUsers> employeesForDelegateFilterDepartment = employeesForDelegate.Where(m => m.DepartmentId == user.DepartmentId).ToList(); List <EmployeeDto> employeeDtos = new List <EmployeeDto>(); foreach (AspNetUsers current in employeesForDelegateFilterDepartment) { EmployeeDto tempEmployeeDto = new EmployeeDto { Name = current.EmployeeName, Id = current.Id }; employeeDtos.Add(tempEmployeeDto); apiModel.Employees = employeeDtos; } if (delegatedDepHead != null) { apiModel.DelegatedDepartmentHeadName = delegatedDepHead.EmployeeName; } return(Ok(apiModel)); }