Esempio n. 1
0
        // 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));
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        // 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()));
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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();
            }
        }