public async Task <IActionResult> GetWorks() { var user = await _context.Users.FirstOrDefaultAsync(u => u.Email == User.Identity.Name); var userWorks = _context.Works.Where(w => w.StudentId == user.Id); var result = new List <WorkDataGet>(); foreach (var work in userWorks) { var errors = _context.Errors.Where(e => e.WorkId == work.Id).Select(e => new { id = e.Id, desc = e.Description, numberElement = e.NumberElement } ).ToList(); var dataWork = new WorkDataGet() { Id = work.Id, Errors = errors, NameFile = work.NameFile, Path = work.Path, Status = work.Status, Template = work.Template, Date = work.DateSend }; result.Add(dataWork); } return(Ok(result.OrderByDescending(w => w.Status == Status.PENDING_CORRECTION).ThenByDescending(w => w.Date))); }
public async Task <IActionResult> GetAllWorks() { if (!User.IsInRole(Role.NORMCONTROL)) { return(StatusCode(403)); } var allWorks = new Dictionary <string, List <WorkDataGet> >(); foreach (var work in _context.Works) { var errors = _context.Errors.Where(e => e.WorkId == work.Id).Select(e => new { id = e.Id, desc = e.Description, numberElement = e.NumberElement } ).ToList(); var student = await _context.Users.FindAsync(work.StudentId); var dataWork = new WorkDataGet() { Id = work.Id, Errors = errors, NameFile = $"{student.LastName} {student.Name}", Path = work.Path, Status = work.Status, Template = work.Template, Date = work.DateSend }; if (!allWorks.ContainsKey(student.Group)) { allWorks.Add(student.Group, new List <WorkDataGet>()); } allWorks[student.Group].Add(dataWork); } var result = allWorks.OrderBy(w => w.Key).ToDictionary(k => k.Key, v => v.Value); return(Ok(result)); }