// // TODO AJAX => упростит всЁ // public bool ListAdd(ScheduleTableCreate table, StudGroup studgroup) { // Валидация// Перенос //var group = _ctx.StudGroups.Find(table.GroupId); //if (group == null || (!Roles.IsUserInRole(group.FacultId.ToString(CultureInfo.InvariantCulture)) && !Roles.IsUserInRole("Admin"))) // return false; if (studgroup == null) { return(false); } // Старая таблица - для сравнения по изменению var oldids = table.ScheduleTableRows.Select(x => x.ScheduleTableId); var oldTable = (from x in _ctx.ScheduleTables where studgroup.GroupId == x.GroupId && table.IsWeekOdd == x.IsWeekOdd && oldids.All(i => i != x.ScheduleTableId) select x).ToList(); foreach (var tRow in table.ScheduleTableRows) { //// Убираем //var updatedItem = oldTable.SingleOrDefault(x => x.ScheduleTableId == tRow.ScheduleTableId); //oldTable.Remove(updatedItem); // Если ID == 0, то у нас новый экземпляр - Добавляем if (tRow.ScheduleTableId == 0) { _ctx.ScheduleTables.Add(tRow); } else // Иначе изменяем по ID { var old = _ctx.ScheduleTables.Find(tRow.ScheduleTableId); old.LectorName = tRow.LectorName; old.SubjectName = tRow.SubjectName; old.Auditory = tRow.Auditory; old.LessonType = tRow.LessonType; } } // Очистить удалённые foreach (var t in oldTable) { _ctx.ScheduleTables.Remove(t); } // Обновление данных для экспорта var facult = _ctx.Facults.Find(studgroup.FacultId); facult.IsReady = false; // Все этапы пройдены успешно return(true); }
public ScheduleTableCreate FormToTable(FormCollection scheduleRows, out bool isValid) { var result = new ScheduleTableCreate { IsWeekOdd = bool.Parse(scheduleRows[2]), GroupId = int.Parse(scheduleRows[1]), ScheduleTableRows = new List <ScheduleTable>() }; isValid = true; for (var i = 3; i < scheduleRows.Count; i++) { //if (scheduleRows.GetKey(i).EndsWith("ScheduleTableId")) i++; var id = 0; // * 0 == id -> не существует * if (scheduleRows.GetKey(i).EndsWith("ScheduleTableId")) { int.TryParse(scheduleRows[i++], out id); } var item = new ScheduleTable { ScheduleTableId = id, Date = DateTime.Now, Auditory = scheduleRows[i++].Trim(), LectorName = scheduleRows[i++].Trim(), SubjectName = scheduleRows[i++].Trim(), LessonType = int.Parse(scheduleRows[i++]), LessonId = int.Parse(scheduleRows[i++]), GroupId = int.Parse(scheduleRows[i++]), WeekdayId = int.Parse(scheduleRows[i]), IsWeekOdd = result.IsWeekOdd }; if (item.Auditory.Trim() == string.Empty || item.SubjectName.Trim() == string.Empty) { isValid = false; } result.ScheduleTableRows.Add(item); } return(result); }
public ScheduleTableCreate ListForCreate(StudGroup group, bool week) { //var group = _ctx.StudGroups.Find(groupId); //if (group == null || (!Roles.IsUserInRole(group.FacultId.ToString(CultureInfo.InvariantCulture)) && !Roles.IsUserInRole("Admin"))) // return null; if (group == null) { return(null); } var result = new ScheduleTableCreate { GroupId = group.GroupId, GroupName = group.Name, IsWeekOdd = week, Lessons = _ctx.Lessons.OrderBy(x => x.Time.Hour).ToList(), Weekdays = _ctx.Weekdays.OrderBy(x => x.WeekdayId).ToList(), ScheduleTableRows = List(group.GroupId, week) }; return(result); }