public async Task <IActionResult> Create(int ScheduleId, [Bind("Id,LessonId,Num")] LessonToschedule lessonToschedule) { LessonToschedule lts = new LessonToschedule(); lts.LessonId = lessonToschedule.LessonId; lessonToschedule.ScheduleId = ScheduleId; lts.ScheduleId = ScheduleId; lts.Num = lessonToschedule.Num; // CHECK LESSONS FOR UNIQUENESS var lessons = from l in _context.LessonToschedule where l.ScheduleId == ScheduleId select l.LessonId; // CHECK LESSONS_NUM FOR UNIQUENESS var l_nums = from l in _context.LessonToschedule where l.ScheduleId == ScheduleId select l.Num; if (ModelState.IsValid && !lessons.Contains(lessonToschedule.LessonId) && !l_nums.Contains(lessonToschedule.Num) && lessonToschedule.Num > 0) { _context.Add(lts); await _context.SaveChangesAsync(); return(RedirectToAction("Index", new { id = ScheduleId })); } return(RedirectToAction("Index", new { id = ScheduleId, error = "Не створено" })); }
public async Task <IActionResult> Edit(long id, [Bind("Id,ScheduleId,LessonId,Num")] LessonToschedule lessonToschedule) { // CHECK LESSONS_NUM FOR UNIQUENESS var l_nums = (from l in _context.LessonToschedule where l.ScheduleId == lessonToschedule.ScheduleId select l.Num).ToList(); if (l_nums.Contains(lessonToschedule.Num)) { ModelState.AddModelError("Num", "This num is incorect"); return(View(lessonToschedule)); } if (id != lessonToschedule.Id) { return(NotFound()); } if (ModelState.IsValid && !l_nums.Contains(lessonToschedule.Num) && lessonToschedule.Num > 0) { try { _context.Update(lessonToschedule); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!LessonToscheduleExists(lessonToschedule.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Index", new { id = _context.LessonToschedule.Where(s => s.Id == id).FirstOrDefault().ScheduleId })); } return(RedirectToAction("Index", new { id = _context.LessonToschedule.Where(s => s.Id == id).FirstOrDefault().ScheduleId, error = "Помилка редагування" })); }
public async Task <IActionResult> Import(IFormFile fileExcel) { if (ModelState.IsValid) { if (fileExcel != null) { using (var stream = new FileStream(fileExcel.FileName, FileMode.Create)) { await fileExcel.CopyToAsync(stream); using (XLWorkbook workBook = new XLWorkbook(stream, XLEventTracking.Disabled)) { //перегляд усіх листів (в даному випадку категорій) foreach (IXLWorksheet worksheet in workBook.Worksheets) { if (worksheet.Name == "Departments") { foreach (IXLRow row in worksheet.RowsUsed().Skip(1)) { try { if (row.Cell(1) != null && row.Cell(2) != null) { Deparments dep = new Deparments(); Groups group = new Groups(); dep.Name = row.Cell(1).Value.ToString(); group = _context.Groups.Where(g => g.Name == row.Cell(2).Value.ToString()).FirstOrDefault(); if (group == null) { group = new Groups(); group.Name = row.Cell(2).Value.ToString(); } var names_d = (from d in _context.Deparments select d.Name).ToList(); if (!names_d.Contains(row.Cell(1).Value.ToString())) { _context.Deparments.Add(dep); await _context.SaveChangesAsync(); } group.DepartmentId = _context.Deparments.Where(d => d.Name == dep.Name).FirstOrDefault().Id; var names_g = (from g in _context.Groups select g.Name).ToList(); if (!names_g.Contains(row.Cell(2).Value.ToString())) { _context.Groups.Add(group); await _context.SaveChangesAsync(); for (int i = 1; i < 8; i++) { Shedule shedule = new Shedule(); shedule.GroupId = group.Id; shedule.DayId = i; _context.Shedule.Add(shedule); } } else { _context.Groups.Update(group); } await _context.SaveChangesAsync(); } } catch (Exception) { } } } else if (worksheet.Name == "Schedules") { foreach (IXLRow row in worksheet.RowsUsed().Skip(1)) { try { Groups group = _context.Groups.Where(g => g.Name == row.Cell(1).Value.ToString()).FirstOrDefault(); var names_g = (from g in _context.Groups select g.Name).ToList(); if (names_g.Contains(group.Name)) { var names_l = (from l in _context.Lessons select l.Name).ToList(); Shedule shedule = _context.Shedule.Where(s => s.GroupId == group.Id && s.Day.Name == row.Cell(2).Value.ToString()).FirstOrDefault(); for (int i = 3; i < 8; i++) { LessonToschedule lts = new LessonToschedule(); LessonToschedule lts1 = _context.LessonToschedule.Where(l => l.ScheduleId == shedule.Id && l.Num == i - 2).FirstOrDefault(); if (lts1 != null) { if (row.Cell(i).Value.ToString() != null && names_l.Contains(row.Cell(i).Value.ToString())) { lts1.ScheduleId = shedule.Id; lts1.LessonId = _context.Lessons.Where(l => l.Name == row.Cell(i).Value.ToString()).FirstOrDefault().Id; _context.LessonToschedule.Update(lts1); } else { _context.LessonToschedule.Remove(lts1); } } else { lts1 = new LessonToschedule(); if (row.Cell(i).Value.ToString() != null && names_l.Contains(row.Cell(i).Value.ToString())) { lts1.ScheduleId = shedule.Id; lts1.Num = i - 2; lts1.LessonId = _context.Lessons.Where(l => l.Name == row.Cell(i).Value.ToString()).FirstOrDefault().Id; _context.LessonToschedule.Add(lts1); } } await _context.SaveChangesAsync(); } } } catch (Exception) { //logging самостійно :) } } } else { //worksheet.Name - назва категорії. Пробуємо знайти в БД, якщо відсутня, то створюємо нову Groups newcat; var c = (from cat in _context.Groups where cat.Name.Contains(worksheet.Name) select cat).ToList(); if (c.Count > 0) { newcat = c[0]; foreach (IXLRow row in worksheet.RowsUsed().Skip(1)) { try { Students student = new Students(); student = _context.Students.Where(s => s.Name == row.Cell(1).Value.ToString() && s.Surname == row.Cell(2).Value.ToString() && s.Gender == row.Cell(3).Value.ToString() && s.Birthday == Convert.ToDateTime(row.Cell(4).Value.ToString())).FirstOrDefault(); if (student == null) { student = new Students(); student.Name = row.Cell(1).Value.ToString(); student.Surname = row.Cell(2).Value.ToString(); student.Gender = row.Cell(3).Value.ToString(); student.Birthday = Convert.ToDateTime(row.Cell(4).Value.ToString()); student.GroupId = newcat.Id; _context.Students.Add(student); } else { student.Name = row.Cell(1).Value.ToString(); student.Surname = row.Cell(2).Value.ToString(); student.Gender = row.Cell(3).Value.ToString(); student.Birthday = Convert.ToDateTime(row.Cell(4).Value.ToString()); student.GroupId = newcat.Id; _context.Students.Update(student); } await _context.SaveChangesAsync(); } catch (Exception) { //logging самостійно :) } } } } } } } } await _context.SaveChangesAsync(); } return(RedirectToAction("Index", "Home")); }