public async Task <IActionResult> Refuzo(int id) { try { var userPermitsResult = await _usersPermits.GetUsersPermitsByIdAsync(id); if (userPermitsResult.Succeeded) { var userPermits = userPermitsResult.Model; UserPermitsVM userPermitsVM = new UserPermitsVM() { Id = userPermits.Id, Status = "Refuzuar", StartDate = userPermits.StartDate, EndDate = userPermits.EndDate, Reason = userPermits.Reason, UserId = userPermits.UserId }; return(View(userPermitsVM)); } return(NotFound()); } catch (Exception) { ViewBag.Error = "Something wrong'"; return(View("Error")); } }
public async Task <IActionResult> Aprovo(UserPermitsVM userPermitsVM) { try { if (ModelState.IsValid) { if (userPermitsVM.Comment == null) { userPermitsVM.Comment = "No comment"; } UserPermits userPermits = new UserPermits() { Id = userPermitsVM.Id, Status = userPermitsVM.Status, StartDate = userPermitsVM.StartDate, EndDate = userPermitsVM.EndDate, Reason = userPermitsVM.Reason, Comment = userPermitsVM.Comment, UserId = userPermitsVM.UserId }; //useri i loguar var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var userLoginRole = await _userManager.FindByIdAsync(userId); //useri qe ka kerkuar leje var userRole = await _userManager.FindByIdAsync(userPermits.UserId); //HR aprovon vetem lejet per DH if (await _userManager.IsInRoleAsync(userLoginRole, "HR")) { if (await _userManager.IsInRoleAsync(userRole, "Department head")) { var updateResult = await _usersPermits.UpdateUsersPermitsAsync(userPermits); if (updateResult.Succeeded) { var user = await _userManager.FindByIdAsync(userPermits.UserId); var start = userPermits.StartDate.Date; var end = userPermits.EndDate.Date; var dif = ((end - start).TotalDays) + 1; var generalResult = await _generalService.GetHolidaysAsync(); if (generalResult.Succeeded) { var general = generalResult.Model; foreach (var holidays in general) { if ((holidays.OfficialDayOff.Ticks >= userPermitsVM.StartDate.Ticks) && (holidays.OfficialDayOff.Ticks <= userPermitsVM.EndDate.Ticks)) { dif -= 1; } } for (var i = userPermits.StartDate; i <= userPermits.EndDate; i = i.AddDays(1)) { var today = i.DayOfWeek; if (today == DayOfWeek.Saturday) { dif -= 1; } if (today == DayOfWeek.Sunday) { dif -= 1; } } user.DayOff -= (int)dif; var result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { return(NotFound()); } return(RedirectToAction("ShowUserPermits")); } else { return(NotFound()); } } ViewBag.Error = updateResult.Errors; return(View("Error")); } else { ViewBag.Error = "Ju nuk keni akses te aprovoni lejen e ketij perdoruesi"; return(View(userPermitsVM)); } } //DH aprovn vetem lejet per Employee if (await _userManager.IsInRoleAsync(userLoginRole, "Department head")) { var userDepartmentsResult = await _departmentService.GetDepartmentsOfUserAsync(); if (userDepartmentsResult.Succeeded) { var userDepartments = userDepartmentsResult.Model; var currentUserDepartment = userDepartments.FirstOrDefault(x => x.UserId == userId); if (await _userManager.IsInRoleAsync(userRole, "Employee")) { //Employee user ndodhet ne departamentin e Department head user te loguar foreach (var item in userDepartments) { if (item.DepartmentId == currentUserDepartment.DepartmentId && item.UserId == userPermits.UserId) { var updateResult = await _usersPermits.UpdateUsersPermitsAsync(userPermits); if (updateResult.Succeeded) { var user = await _userManager.FindByIdAsync(userPermits.UserId); var start = userPermits.StartDate.Date; var end = userPermits.EndDate.Date; var dif = ((end - start).TotalDays) + 1; var generalResult = await _generalService.GetHolidaysAsync(); if (generalResult.Succeeded) { var general = generalResult.Model; foreach (var holidays in general) { if ((holidays.OfficialDayOff.Ticks >= userPermitsVM.StartDate.Ticks) && (holidays.OfficialDayOff.Ticks <= userPermitsVM.EndDate.Ticks)) { dif -= 1; } } for (var i = userPermits.StartDate; i < userPermits.EndDate; i = i.AddDays(1)) { var today = i.DayOfWeek; if (today == DayOfWeek.Saturday) { dif -= 1; } if (today == DayOfWeek.Sunday) { dif -= 1; } } user.DayOff -= (int)dif; var result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { return(NotFound()); } return(RedirectToAction("EmployeePermits")); } else { return(NotFound()); } } ViewBag.Error = updateResult.Errors; return(View("Error")); } } //Employee user nuk ndodhet ne departamentin e Department head por mund te ndodhet ne nje departament ne varesi te departamentit aktual var departmentResult = await _departmentService.GetDepartmentsAsync(); if (departmentResult.Succeeded) { var department = departmentResult.Model; foreach (var departmentItem in department) { //kontrollojme nqs departamenti ka departament tjeter ne varesi te tij if (currentUserDepartment.DepartmentId == departmentItem.ParentId) { var employeeUser = await _userManager.GetUsersInRoleAsync("Department head"); bool flag = false; foreach (var employeeUserItem in employeeUser) { foreach (var userDepartmentItem in userDepartments) { if (userDepartmentItem.DepartmentId == departmentItem.ParentId && userDepartmentItem.UserId == employeeUserItem.Id) { flag = true; break; } } } if (flag == false) { var updateResult = await _usersPermits.UpdateUsersPermitsAsync(userPermits); if (updateResult.Succeeded) { var user = await _userManager.FindByIdAsync(userPermits.UserId); var start = userPermits.StartDate.Date; var end = userPermits.EndDate.Date; var dif = ((end - start).TotalDays) + 1; var generalResult = await _generalService.GetHolidaysAsync(); if (generalResult.Succeeded) { var general = generalResult.Model; foreach (var holidays in general) { if ((holidays.OfficialDayOff.Ticks >= userPermitsVM.StartDate.Ticks) && (holidays.OfficialDayOff.Ticks <= userPermitsVM.EndDate.Ticks)) { dif -= 1; } } for (var i = userPermits.StartDate; i < userPermits.EndDate; i = i.AddDays(1)) { var today = i.DayOfWeek; if (today == DayOfWeek.Saturday) { dif -= 1; } if (today == DayOfWeek.Sunday) { dif -= 1; } } user.DayOff -= (int)dif; var result = await _userManager.UpdateAsync(user); if (!result.Succeeded) { return(NotFound()); } return(RedirectToAction("EmployeePermits")); } else { return(NotFound()); } } ViewBag.Error = updateResult.Errors; return(View("Error")); } else { ViewBag.Error = "No access in url"; return(View("Error")); } } } } } else { ViewBag.Error = "No access in url"; return(View(userPermitsVM)); } } } } return(View(userPermitsVM)); } catch (Exception) { ViewBag.Error = "Something wrong"; return(View("Error")); } }