Esempio n. 1
0
        public async Task <IActionResult> Edit(int id, EditViewModel model)
        {
            var user = await GetCurrentUser();

            if (ModelState.IsValid)
            {
                var duty = await _dutyManager.GetDutyAsync(id);

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

                if (duty.UserId != user.Id && !User.IsSuperUser())
                {
                    return(Unauthorized());
                }

                if (duty.ForDate < DateTime.Today)
                {
                    return(Unauthorized());
                }

                var subject = await _subjectManager.GetSubjectAsync(model.Subject);

                var fields = new List <EmbedFieldBuilder>();

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

                duty.ForDate = model.ForDate;
                duty.Content = model.Content;
                duty.Color   = model.Color;
                duty.Subject = subject;
                duty.Update  = DateTime.Now;

                if (await _dutyManager.UpdateAsync(duty))
                {
                    await Push(user, duty, "Un devoir a été édité sur l'agenda.", new List <EmbedFieldBuilder>());
                }

                return(RedirectToAction("Details", new { id }));
            }

            ViewBag.Subjects = await _subjectManager.ToListAsync(user.ClassRoomId);

            return(View(model));
        }
Esempio n. 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());
        }