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