public async Task <IActionResult> ReviewAll() { IEnumerable <WorkDay> days = new List <WorkDay>(); ApplicationUser user = await _userManager.FindByNameAsync(User.Identity.Name); Supervisor supervisor = _supervisorRepo.GetAll().Where(x => x.EmployeeId == user.Id).FirstOrDefault(); IList <string> role = await _userManager.GetRolesAsync(user); if (role.Contains("Managers")) { Department department = _departmentRepo.GetAllWithUsers().Where(x => x.SupervisorId == supervisor.Id).FirstOrDefault(); days = await _timeSheetService.GetAllWorkDaysAsyncForDepartment(department.Id); } else { days = _timeSheetService.GetAll(); } WorkDayViewModel viewModel = new WorkDayViewModel { workDays = days }; return(View(viewModel)); }
public bool GetShiftExist(WorkDayViewModel viewModel) { return(_context.Shifts .Include(s => s.Department) .Include(s => s.ShiftType) .Any(s => s.DateTime == viewModel.WorkDate && s.DepartmentId == viewModel.DepartmentId)); }
//Get public ActionResult AddAWorkWeek() { var viewModel = new WorkDayViewModel { Departments = _context.Departments }; return(View(viewModel)); }
public ActionResult AddAWorkWeek(WorkDayViewModel viewModel) { var shift = _context.Shifts .Include(s => s.Department) .Include(s => s.ShiftType) .Any(s => s.DateTime == viewModel.WorkDate && s.DepartmentId == viewModel.DepartmentId); viewModel.Departments = _context.Departments.ToList(); if (viewModel.DepartmentId == 0 || viewModel.NumberOfWorkDays == 0 || viewModel.NumbersOfShifts == 0 || viewModel.WorkDate == null) { var returnViewModel = new WorkDayViewModel { Departments = viewModel.Departments, WorkDate = viewModel.WorkDate, NumberOfWorkDays = viewModel.NumberOfWorkDays, NumbersOfShifts = viewModel.NumbersOfShifts }; return(RedirectToAction("AddAWorkWeek", returnViewModel)); } if (!shift) { for (int j = 0; j < viewModel.NumberOfWorkDays; j++) { for (byte i = 1; i <= viewModel.NumbersOfShifts; i++) { var newShift = new Shift(viewModel.WorkDate.AddDays(j), i, viewModel.DepartmentId); _context.Shifts.Add(newShift); } } _context.SaveChanges(); viewModel.Department = _context.Departments.Where(d => d.Id == viewModel.DepartmentId).Single(); var assigneViewModel = new AssignShiftEmployeesViewModel { Department = viewModel.Department, ShiftTypes = _context.ShiftTypes.ToList() }; return(View("ChooseDateAssigment", assigneViewModel)); } return(View(viewModel)); }
public ActionResult AddAWorkWeek(WorkDayViewModel viewModel) { var shift = _shiftRepository.GetShiftExist(viewModel); viewModel.Departments = _departmentRepository.GetDepartments(); if (viewModel.DepartmentId == 0 || viewModel.NumberOfWorkDays == 0 || viewModel.NumbersOfShifts == 0 || viewModel.WorkDate == null) { var returnViewModel = new WorkDayViewModel { Departments = viewModel.Departments, WorkDate = viewModel.WorkDate, NumberOfWorkDays = viewModel.NumberOfWorkDays, NumbersOfShifts = viewModel.NumbersOfShifts }; return(RedirectToAction("AddAWorkWeek", returnViewModel)); } if (!shift) { for (int j = 0; j < viewModel.NumberOfWorkDays; j++) { for (byte i = 1; i <= viewModel.NumbersOfShifts; i++) { var newShift = new Shift(viewModel.WorkDate.AddDays(j), i, viewModel.DepartmentId); _context.Shifts.Add(newShift); } } _context.SaveChanges(); viewModel.Department = _departmentRepository.GetDepartment(viewModel); var assigneViewModel = new AssignShiftEmployeesViewModel { Department = viewModel.Department, ShiftTypes = _shiftTypeRepository.GetShiftTypes() }; return(View("ChooseDateAssigment", assigneViewModel)); } return(View(viewModel)); }
public Department GetDepartment(WorkDayViewModel viewModel) { return(_context.Departments.Where(d => d.Id == viewModel.DepartmentId).Single()); }
public async Task <IActionResult> Create(WorkDayViewModel workVM) { if (ModelState.IsValid) { ViewData["ErrorMsg"] = ""; List <int> SeatTakenList = new List <int>(); //will contain list of nr of seats taken SeatTakenList.Clear(); int seatNrGenerated = 0;//will be used to add to db the seat nr //check if user code entered exists in db bool CodeExists = _context.EmployeeInfo.Any(r => r.EmpCode == workVM.EmpCode); if (CodeExists == false) { ViewData["ErrorMsg"] = "The entered Code was not found!"; return(View()); } else { //check if entered date is >= today var today = DateTime.Now; if (workVM.WorkDate.Date < today.Date) { ViewData["ErrorMsg"] = "The entered Date must be today or a later date!"; return(View()); } else { //get id of employee by his code var idEmployee = _context.EmployeeInfo.FirstOrDefault(e => e.EmpCode == workVM.EmpCode).Idemployee; //check if user has choosen a seat for this date var AlreadyRegistered = _context.WorkingToday.Where(r => r.Idemployee == idEmployee && r.WorkDate.Date == workVM.WorkDate.Date).ToList(); if (AlreadyRegistered.Count() > 0) { var GetSeatNr = _context.WorkingToday.FirstOrDefault(r => r.Idemployee == idEmployee && r.WorkDate.Date == workVM.WorkDate.Date).SeatNr; ViewData["ErrorMsg"] = "This employee has already been registered for this date, the seating nr is " + GetSeatNr; return(View()); } else { //count how many seats have been taken for this given date var NrOfSeatsTaken = _context.WorkingToday.Where(r => r.WorkDate.Date == workVM.WorkDate.Date).ToList(); //get total nr of employees in the company var countEmp = _context.EmployeeInfo.ToList().Count(); //only 30% of employees must be at work var NrOfEmployees = countEmp * 30 / 100; //check if nr of seats taken is bigger than 30% if (NrOfSeatsTaken.Count() > Convert.ToInt32(NrOfEmployees)) { ViewData["ErrorMsg"] = "There are no more seats for this date available!"; return(View()); } else { //get total seats in the company var TotalSeats = _context.CompanyInfoSize.FirstOrDefault().TotalSeatingNumbers; int count = 0; if (NrOfSeatsTaken.Count() > 0) { //add all seats taken to a list foreach (var item in NrOfSeatsTaken) { SeatTakenList.Add(item.SeatNr); } //we will random for 100 times(for example) if needed until it finds a nr distinct from the other seats taken while (count < 100) { //generate a random nr for the user seatNrGenerated = new Random().Next(1, TotalSeats); //check if this seat generated is already taken if (!SeatTakenList.Contains(seatNrGenerated)) { //We found the distinct nr no need to continue further break; } else { count++; } //in case we iterate all 100 times and still we dont find nr, we show msg so user can retry(pretty unusual) if (count == 100) { ViewData["ErrorMsg"] = "An error happened in generating the seat number, please try again!"; return(View()); } } } else { //generate a random nr for the user seatNrGenerated = new Random().Next(1, TotalSeats); } //assign values to add them to db workVM.SeatNr = seatNrGenerated; workVM.Idemployee = idEmployee; } } } var workday = new WorkingToday { Idemployee = workVM.Idemployee, SeatNr = workVM.SeatNr, WorkDate = workVM.WorkDate }; _context.Add(workday); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } } return(View(workVM)); }