public async Task <IActionResult> GenerateWorkSchedule(WorkScheduleNewDTO newWS) { // if(await _userRepo.GetUser(id) == null) // return Content("Brak usera o podanym id"); if (newWS.Day.Count != 7) { return(Content("Wymagane jest podanie całego tygodnia")); } if (newWS.NumberOfWeeks < 1) { return(Content("Podaj liczbę tygodni")); } var users = await _userRepo.GetUsers(); // var userVacation = await _userRepo.GetVacations(id); // var vacDayList = _repo.VacationDaysToList(userVacation); var wsRsult = await _wsRepo.GenerateWS(users, newWS); var wsToReturn = _mapper.Map <IEnumerable <WorkScheduleReturn> >(wsRsult); return(Ok(wsToReturn)); }
public async Task <Workschedule> GenerateUserWS(int userId, WorkScheduleNewDTO newWS, List <Day> vacList) { var user = await _context.User .FirstOrDefaultAsync(u => u.IdUser == userId); var wsList = new List <Workschedule>(); var wsFromRepo = await GetUserWS(userId); for (int i = 0; i < newWS.NumberOfWeeks; i++) { var ws = new Workschedule(); var dayList = new List <Day>(); foreach (var day in newWS.Day) { Day newDay; var fromTime = day.FromTime.AddDays(i * 7); var toTime = day.ToTime.AddDays(i * 7); var vacDay = vacList.FirstOrDefault(d => d.FromTime.DayOfYear == fromTime.DayOfYear); var currentDay = wsFromRepo.Day.FirstOrDefault(d => d.FromTime.DayOfYear == fromTime.DayOfYear); if (vacDay != null) { newDay = vacDay; if (newDay.Type == "Zastepstwo") { newDay.FromTime = fromTime; newDay.ToTime = toTime; } if (currentDay != null) { _context.Remove(currentDay); } dayList.Add(newDay); await _context.Day.AddAsync(newDay); } else if (currentDay == null) { newDay = new Day { FromTime = fromTime, ToTime = toTime, IdWsNavigation = ws, Type = "Praca" }; dayList.Add(newDay); await _context.Day.AddAsync(newDay); } else if (currentDay.Type == "Praca") { newDay = new Day { FromTime = fromTime, ToTime = toTime, IdWsNavigation = ws, Type = "Praca" }; _context.Remove(currentDay); dayList.Add(newDay); await _context.Day.AddAsync(newDay); } } ws.IdUserNavigation = user; ws.Day = dayList; wsList.Add(ws); await _context.Workschedule.AddAsync(ws); } await _context.SaveChangesAsync(); var wsToReturn = await GetUserWS(userId); return(wsToReturn); }
public async Task <Workschedule> GenerateWS(IEnumerable <User> users, WorkScheduleNewDTO newWS) { foreach (var user in users) { var wsFromRepo = await GetUserWS(user.IdUser); var wsList = new List <Workschedule>(); var userVac = await _context.Vacation .Where(u => u.IdUserVac == user.IdUser) .Include(a => a.IdAbsenceVacNavigation) .Include(u => u.IdUserVacNavigation) .ToListAsync(); var vacList = VacationDaysToList(userVac); for (int i = 0; i < newWS.NumberOfWeeks; i++) { var ws = new Workschedule(); var dayList = new List <Day>(); foreach (var day in newWS.Day) { Day newDay; var fromTime = day.FromTime.AddDays(i * 7); var toTime = day.ToTime.AddDays(i * 7); var vacDay = vacList.FirstOrDefault(d => d.FromTime.DayOfYear == fromTime.DayOfYear); var currentDay = wsFromRepo.Day.FirstOrDefault(d => d.FromTime.DayOfYear == fromTime.DayOfYear); if (vacDay != null) { newDay = vacDay; if (newDay.Type == "Zastepstwo") { newDay.FromTime = fromTime; newDay.ToTime = toTime; } if (currentDay != null) { _context.Remove(currentDay); } dayList.Add(newDay); await _context.Day.AddAsync(newDay); } else if (currentDay == null) { newDay = new Day { FromTime = fromTime, ToTime = toTime, IdWsNavigation = ws, Type = "Praca" }; dayList.Add(newDay); await _context.Day.AddAsync(newDay); } else if (currentDay.Type == "Praca") { newDay = new Day { FromTime = fromTime, ToTime = toTime, IdWsNavigation = ws, Type = "Praca" }; _context.Remove(currentDay); dayList.Add(newDay); await _context.Day.AddAsync(newDay); } } ws.IdUserNavigation = user; ws.Day = dayList; wsList.Add(ws); await _context.Workschedule.AddAsync(ws); await _context.SaveChangesAsync(); } } return(null); }