Exemple #1
0
        public async Task <ActionResult> ItemReorder(int?id, bool isUp)
        {
            LessonItem selected = await db.LessonItems.FirstOrDefaultAsync(it => it.Id == id);

            if (selected == null)
            {
                return(View("Error"));
            }

            var selectedOrder = isUp? --selected.Order : ++selected.Order;
            var lessonId      = selected.TeacherLessonId == null ? selected.StudentLessonId : selected.TeacherLessonId;

            LessonItem swapItem;

            if (selected.TeacherLessonId == null)
            {
                swapItem = await db.LessonItems.FirstOrDefaultAsync(it => !it.RecLog.DeletedDate.HasValue && it.StudentLessonId == lessonId && it.Order == selectedOrder);
            }
            else
            {
                swapItem = await db.LessonItems.FirstOrDefaultAsync(it => !it.RecLog.DeletedDate.HasValue && it.TeacherLessonId == lessonId && it.Order == selectedOrder);
            }

            if (swapItem == null)
            {
                return(View("Error"));
            }

            swapItem.Order = isUp ? ++swapItem.Order : --swapItem.Order;

            await db.SaveChangesAsync();

            return(RedirectToAction("Details", "Lessons", new { @id = lessonId }));
        }
Exemple #2
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Name,IconURL,Description,IsPreviewable,ContentType,ContentURL,TeacherLessonId,StudentLessonId,RecLog")] LessonItem lessonItem)
        {
            if (ModelState.IsValid)
            {
                var selectedLessonItem = await db.LessonItems.FirstOrDefaultAsync(it => it.Id == lessonItem.Id);

                if (selectedLessonItem == null)
                {
                    return(View("Error"));
                }

                selectedLessonItem.Name          = lessonItem.Name;
                selectedLessonItem.Description   = lessonItem.Description;
                selectedLessonItem.IsPreviewable = lessonItem.IsPreviewable;
                selectedLessonItem.ContentType   = lessonItem.ContentType;
                selectedLessonItem.ContentURL    = lessonItem.ContentURL;
                var IconUrl = ExtraContentType.Teacher.ToString();
                selectedLessonItem.IconURL = ControllerHelper.ConvertToIconUrl(IconUrl);
                await db.SaveChangesAsync();

                return(RedirectToAction("Details", "Lessons", new { @id = lessonItem.TeacherLessonId }));
            }

            return(View(lessonItem));
        }
        static void Main(string[] args)
        {
            if (args.Length < 5)
            {
                Console.WriteLine("Questions <culture> <filename> <year> <date> <title>");
                return;
            }

            var builder       = new ConfigurationBuilder().AddJsonFile("appsettings.json");
            var configuration = builder.Build();

            var culture = CultureInfo.CreateSpecificCulture(args[0]);
            var input   = args[1];
            var year    = int.Parse(args[2]);
            var date    = DateTime.Parse(args[3]);
            var title   = args[4];

            var text       = File.ReadAllText(input);
            var repository = Repository.Create(configuration["AzureStorage:ConnectionString"]);
            var parser     = Program.GetParser(culture, year, repository);
            var lesson     = parser.Parse(text);

            repository.UpsertLessonAsync(lesson).Wait();
            Console.WriteLine(JsonConvert.SerializeObject(lesson));

            var item = new LessonItem
            {
                Id           = lesson.Id,
                Name         = lesson.Name,
                ProposedDate = date.ToString(parser.Culture.DateTimeFormat.LongDatePattern)
            };
            var currentStudy = repository.GetStudiesAsync(culture.Name).Result.FirstOrDefault(study => study.Title == title);

            if (currentStudy == null)
            {
                currentStudy = new Study {
                    Culture = parser.Culture.Name, Title = title, Lessons = new[] { item }.ToList()
                };
            }
            else
            {
                var currentLesson = currentStudy.Lessons.FirstOrDefault(l => l.Id == item.Id);
                if (currentLesson == null)
                {
                    currentStudy.Lessons.Add(item);
                }
                else
                {
                    currentStudy.Lessons.Remove(currentLesson);
                    currentStudy.Lessons.Add(item);
                }
            }

            repository.UpsertStudyAsync(currentStudy).Wait();
        }
Exemple #4
0
        // GET: StudentLessonItems
        //public ActionResult Index()
        //{
        //    var lessonItems = db.LessonItems.Include(l => l.TeacherLesson).Include(l => l.StudentLesson);
        //    return View(lessonItems.ToList());
        //}

        // GET: StudentLessonItems/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LessonItem lessonItem = db.LessonItems.Find(id);

            if (lessonItem == null)
            {
                return(HttpNotFound());
            }
            return(View(lessonItem));
        }
Exemple #5
0
        // GET: TeacherLessonItems/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LessonItem lessonItem = await db.LessonItems.FindAsync(id);

            if (lessonItem == null)
            {
                return(HttpNotFound());
            }
            return(View(lessonItem));
        }
Exemple #6
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            LessonItem lessonItem = db.LessonItems.Find(id);

            lessonItem.RecLog.DeletedDate = DateTime.Now;
            var lessonId = lessonItem.StudentLessonId;

            var deleteOrder = lessonItem.Order;
            var lessonList  = db.LessonItems.Where(it => !it.RecLog.DeletedDate.HasValue && it.StudentLessonId == lessonId && it.Order > deleteOrder);

            foreach (var item in lessonList)
            {
                item.Order--;
            }

            await db.SaveChangesAsync();

            return(RedirectToAction("Details", "Lessons", new { @id = lessonId }));
        }
Exemple #7
0
        public async Task <ActionResult> Create([Bind(Include = "Id,Name,IconURL,Description,IsPreviewable,ContentType,ContentURL,TeacherLessonId,StudentLessonId,RecLog")] LessonItem lessonItem)
        {
            if (ModelState.IsValid)
            {
                var lesson = await db.Lessons.FirstOrDefaultAsync(it => it.Id == lessonItem.StudentLessonId);

                if (lesson == null || lesson.RecLog.DeletedDate.HasValue)
                {
                    return(View("Error"));
                }

                lessonItem.Order = lesson.StudentLessonItems.Where(it => !it.RecLog.DeletedDate.HasValue).Count() + 1;
                lessonItem.RecLog.CreatedDate = DateTime.Now;
                lessonItem.IconURL            = ControllerHelper.ConvertToIconUrl(lessonItem.ContentType);
                db.LessonItems.Add(lessonItem);
                db.SaveChanges();
                return(RedirectToAction("Details", "Lessons", new { @id = lessonItem.StudentLessonId }));
            }

            return(View(lessonItem));
        }