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 = "Помилка редагування" }));
        }
Esempio n. 3
0
        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"));
        }