public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound()); } //var salon = await _context.Salons.Where(r=>r.Id==Salon.Id).FirstOrDefaultAsync() var staffManagesSalonIds = await _context.StaffSalons .Where(r => r.StaffId == user.Id).Select(r => r.SalonId).ToListAsync(); if (!staffManagesSalonIds.Contains(Salon.Id)) { return(NotFound()); } foreach (var day in Salon.SalonSchedule) { if (day.EndTime.Value.Minutes % 15 != 0 || day.StartTime.Value.Minutes % 15 != 0) { StatusMessage = "Error: Minutės gali būti tik 15 min intervalu (0,15,30,45)."; return(Page()); } if (day.EndTime == day.StartTime) { day.IsWorking = false; } if (!day.IsWorking) { day.StartTime = new TimeSpan(0, 0, 0); day.EndTime = new TimeSpan(0, 0, 0); } if (day.EndTime < day.StartTime) { StatusMessage = $"Error: Salono darbo laikas yra vėlesnis nei pabaigos. Diena: {Tools.DayToWord.LithuanianDayWord(day.Day)}."; return(Page()); } } var employeeSchedule = await _context.EmployeeSchedules.Include(r => r.Employee).Where(r => r.Employee.SalonId == Salon.Id).ToListAsync(); List <string> employeeNamesWithSchedulesChanged = new List <string>(); foreach (var salonDay in Salon.SalonSchedule) { var takenDayListOfEmployeeSchedules = employeeSchedule.Where(r => r.Day == salonDay.Day); foreach (var employeeDay in takenDayListOfEmployeeSchedules) { bool IsChangeMade = false; if (employeeDay.StartTime < salonDay.StartTime) { employeeDay.StartTime = salonDay.StartTime; IsChangeMade = true; } if (employeeDay.EndTime > salonDay.EndTime) { employeeDay.EndTime = salonDay.EndTime; IsChangeMade = true; } if (IsChangeMade) { employeeNamesWithSchedulesChanged.Add(employeeDay.Employee.FullName); } } } _context.Update(Salon); await _context.SaveChangesAsync(); StatusMessage = !employeeNamesWithSchedulesChanged.Any() ? "Success: Salono darbo laikas atnaujintas" : $"Success: Salono darbo laikas atnaujintas ir pataisytas darbo laikas šiems darbuotojams: \r\n{String.Join(",", employeeNamesWithSchedulesChanged.Distinct())}"; return(Page()); //return RedirectToPage("./ManageSalons"); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound()); } var staffManagesSalonIds = await _context.StaffSalons .Where(r => r.StaffId == user.Id).Select(r => r.SalonId).ToListAsync(); if (!staffManagesSalonIds.Contains(EmployeeVM.SalonId)) { return(NotFound()); } foreach (var day in EmployeeVM.EmployeeSchedule) { if (day.EndTime.Value.Minutes % 15 != 0 || day.StartTime.Value.Minutes % 15 != 0 || day.BreakEndTime.Value.Minutes % 15 != 0 || day.BreakStartTime.Value.Minutes % 15 != 0) { StatusMessage = "Error: Minutės gali būti tik 15 min intervalu (0,15,30,45)."; return(Page()); } if (day.EndTime == day.StartTime) { day.IsWorking = false; } if (!day.IsWorking) { day.StartTime = new TimeSpan(0, 0, 0); day.EndTime = new TimeSpan(0, 0, 0); day.BreakStartTime = new TimeSpan(0, 0, 0); day.BreakEndTime = new TimeSpan(0, 0, 0); day.IsTakingBreak = false; } else if (!day.IsTakingBreak) { day.BreakStartTime = new TimeSpan(0, 0, 0); day.BreakEndTime = new TimeSpan(0, 0, 0); } if (day.EndTime < day.StartTime) { StatusMessage = $"Error: Darbo laiko pradžia yra vėlesė nei pabaigos. Diena: {Tools.DayToWord.LithuanianDayWord(day.Day)}."; return(Page()); } if (day.BreakEndTime < day.BreakStartTime) { StatusMessage = $"Error: Petraukos laikas prasideda vėliau, nei pabaiga. Diena: {Tools.DayToWord.LithuanianDayWord(day.Day)}."; return(Page()); } if (day.IsTakingBreak && (day.StartTime > day.BreakStartTime || day.EndTime < day.BreakEndTime)) { StatusMessage = $"Error: Petraukos laikas nėra tarp darbo laiko. Diena: {Tools.DayToWord.LithuanianDayWord(day.Day)}."; return(Page()); } if (day.IsWorking && (day.StartTime < EmployeeVM.SalonSchedule[day.Day.Value - 1].StartTime || day.EndTime > EmployeeVM.SalonSchedule[day.Day.Value - 1].EndTime)) { StatusMessage = $"Error: Darbuotojo darbo laikas nėra tarp salono darbo laiko. Diena: {Tools.DayToWord.LithuanianDayWord(day.Day)}."; return(Page()); } } Employee = await _context.Employees .Include(e => e.EmployeeSchedule) .FirstOrDefaultAsync(m => m.Id == EmployeeVM.Id); Employee.JobTitleId = EmployeeVM.JobTitleId; int index = 0; foreach (var day in Employee.EmployeeSchedule) { if (day.Day == EmployeeVM.EmployeeSchedule[index].Day) { day.IsTakingBreak = EmployeeVM.EmployeeSchedule[index].IsTakingBreak; day.IsWorking = EmployeeVM.EmployeeSchedule[index].IsWorking; day.StartTime = EmployeeVM.EmployeeSchedule[index].StartTime; day.BreakStartTime = EmployeeVM.EmployeeSchedule[index].BreakStartTime; day.EndTime = EmployeeVM.EmployeeSchedule[index].EndTime; day.BreakEndTime = EmployeeVM.EmployeeSchedule[index].BreakEndTime; } index++; } var test = Employee.EmployeeSchedule.Where(r => r.Day == 5).FirstOrDefault(); _context.Update(Employee); await _context.SaveChangesAsync(); return(RedirectToPage("./ManageEmployees")); }