// GET: Admin/ClassRooms/Edit/5 public async Task <IActionResult> Edit(int id) { var classRoom = await _classRoomManager.GetClassRoomAsync(id); if (classRoom == null) { return(NotFound()); } ViewBag.Cursus = GetCursus(); ViewBag.School = GetSchools(); return(View(classRoom)); }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } if (user.Migrated) { return(BadRequest($"User already migrate '{_userManager.GetUserId(User)}.")); } var classRooms = await _classRoomManager.GetOtherClassRoomAsync(user.ClassRoomId); if (classRooms.Any(u => u.Id == Input.ClassRoom)) { var @class = await _classRoomManager.GetClassRoomAsync(Input.ClassRoom); user.ClassRoomId = @class.Id; user.Migrated = true; await _userManager.UpdateAsync(user); return(RedirectToPage("MigrateConfirmation", new { id = @class.Name })); } ClassRooms = classRooms; return(Page()); }
// GET: Admin/Subjects public async Task <IActionResult> Index() { var user = await GetCurrentUser(); var subcribe = await _subjectManager.ToListAsync(user.ClassRoomId); var classRoom = await _classRoomManager.GetClassRoomAsync(user.ClassRoomId); ViewBag.Cursus = GetCursus(); ViewBag.ClassRoom = classRoom; ViewBag.School = GetSchools(); ViewBag.Subcriptions = subcribe; return(View(await _subjectManager.Subjects.OrderBy(u => u.Name) .ToListAsync())); }
public async Task SendMessageAsync(int classRoomId, string text, EmbedBuilder builder) { try { var room = await _classRoomManager.GetClassRoomAsync(classRoomId); if (room == null) { return; } using (var client = new DiscordWebhookClient(room.Webhook)) { await client.SendMessageAsync(text, embeds : new[] { builder.Build() }); } } catch (Exception ex) { _logger.LogError(ex.StackTrace); } }
public async Task<IActionResult> GetPlanning(DateTime start, DateTime end) { try { var user = await GetCurrentUser(); var week = start.GetFirstDayOfWeek(); var key = $"PLANNING_{user.ClassRoomId}_{week.ToString("MM/dd/yyyy")}"; var value = await _memoryCache.GetStringAsync(key); if (string.IsNullOrEmpty(value)) { var web = new HtmlWeb(); var list = new List<Events>(); var classroom = await _classRoomManager.GetClassRoomAsync(user.ClassRoomId); var doc = await web.LoadFromWebAsync($"https://edtmobiliteng.wigorservices.net/WebPsDyn.aspx?action=posEDTBEECOME&serverid=C&Tel={classroom.Telephone}&date={week.ToString("MM/dd/yyyy")}"); var nodes = doc.DocumentNode.SelectNodes("//div[@class='Case']") .Where(u => u.Id == "") .ToList(); for (int i = 0; i < nodes.Count; i++) { if (nodes[i].InnerText == "Pas de cours cette semaine") break; var events = new Events(); var block = doc.DocumentNode.SelectNodes("//td[@class='TCase']")[i]?.InnerText; var range = doc.DocumentNode.SelectNodes("//td[@class='TChdeb']")[i]?.InnerText; var inner = doc.DocumentNode.SelectNodes("//div[@class='innerCase']")[i]; var salle = doc.DocumentNode.SelectNodes("//td[@class='TCSalle']")[i]?.InnerText; var professor = doc.DocumentNode.SelectNodes("//td[@class='TCProf']")[i]; var ranges = range.Replace(" ", "").Split('-'); if (ranges.Length == 2) { var date = GetDay(week, nodes[i].Attributes["style"].Value); if (date == DateTime.Today) events.className = "fc-today-event"; else if (date < DateTime.Today) events.className = "fc-past-event"; else events.className = "fc-futur-event"; events.start = string.Format("{0:yyyy-MM-dd}T{1}:00+00:00", date, ranges[0]); events.end = string.Format("{0:yyyy-MM-dd}T{1}:00+00:00", date, ranges[1]); } events.color = GetColor(inner.Attributes["style"].Value); events.title = block; events.title += "\r\n"; ranges = professor.InnerHtml.Split("<br>"); for (int b = 0; b < ranges.Length; b++) { events.title += b == 0 ? ranges[b].Capitalize() : ranges[b]; events.title += "\r\n"; } events.title += salle; list.Add(events); } var opts = new DistributedCacheEntryOptions(); var obj = JsonSerializer.Serialize(list); if (week < CustomDateTime.FirstDayOfWeek) opts.AbsoluteExpiration = DateTimeOffset.MaxValue; else opts.AbsoluteExpiration = DateTime.SpecifyKind(DateTime.Today.AddDays(1), DateTimeKind.Local); await _memoryCache.SetStringAsync(key, obj, opts); return Ok(list); } return Ok(JsonSerializer.Deserialize<List<Events>>(value)); } catch (Exception) { return BadRequest(); } }