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)); }
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()); }