Example #1
0
        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"));
            }
        }
Example #2
0
        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"));
            }
        }