示例#1
0
        public async Task <IActionResult> Details(int id)
        {
            var duty = await _dutyManager.GetDutyAsync(id);

            if (duty == null)
            {
                return(NotFound());
            }

            var user = await GetCurrentUser();

            if (duty.ClassRoomId != user.ClassRoomId)
            {
                return(Unauthorized());
            }

            ViewBag.ReadOnly = duty.UserId != user.Id && !User.IsSuperUser();

            if (duty.ForDate < DateTime.Today)
            {
                ViewBag.ReadOnly = true;
            }

            ViewBag.Subject = duty.Subject;

            return(View(duty));
        }
示例#2
0
        public async Task <IActionResult> MoveEvents(int id, DateTime start)
        {
            var user = await GetCurrentUser();

            var duty = await _dutyManager.GetDutyAsync(id);

            if (duty == null)
            {
                return(NotFound(Resources.DutyNotFound));
            }

            if (duty.UserId != user.Id && !await IsSuperUserAsync(user))
            {
                return(Unauthorized(Resources.DutyUnauthorized));
            }

            if (duty.ForDate < DateTime.Today)
            {
                return(BadRequest(Resources.DutyLocked));
            }

            if (start < DateTime.Today)
            {
                return(BadRequest(Resources.DutyInvalid));
            }

            var fields = new List <EmbedFieldBuilder>();

            fields.Add(new EmbedFieldBuilder()
            {
                Name = "Avant", IsInline = true, Value = duty.ForDate
            });
            fields.Add(new EmbedFieldBuilder()
            {
                Name = "Après", IsInline = true, Value = start
            });

            duty.ForDate = start;

            if (await _dutyManager.UpdateAsync(duty))
            {
                await Push(user, duty, "Le devoir suivant a été reporté sur l'agenda.", fields);
            }

            return(Ok());
        }