public async Task <bool> ApproveRequest(int requestId) { try { Request request = await _context.Requests .Include(r => r.Thesis) .ThenInclude(t => t.Professor) .Where(r => r.Id == requestId && r.Status == (int)RequestStatus.Pending) .FirstOrDefaultAsync(); if (request.Thesis.Professor.Id != RequesterId) { return(false); } request.Status = (int)RequestStatus.Accepted; _context.Requests.Update(request); IEnumerable <Request> toDeny = await _context.Requests .Where(r => r.ThesisId == request.ThesisId && r.Id != requestId && r.Status == (int)RequestStatus.Pending) .ToArrayAsync(); foreach (Request r in toDeny) { r.Status = (int)RequestStatus.TakenBySomeoneElse; } Thesis thesis = await _context.Theses.FindAsync(request.ThesisId); thesis.DateTaken = DateTime.Now; FacultyStudent assignedStudent = await _context.FacultyStudents.FindAsync(request.StudentId); assignedStudent.AsignedThesis = thesis; _context.FacultyStudents.Update(assignedStudent); _context.Theses.Update(thesis); await _context.SaveChangesAsync(); return(true); } catch (Exception ex) { _logger.LogInformation("Failed denying request: " + ex.Message); return(false); } }
public async Task <IdentityResult> RegisterStudent(RegistrationDTO userInfo) { FunctionReturnDTO uploadResult = null; if (userInfo.ProfileImage != null) { uploadResult = await UploadImage(userInfo.Email, userInfo.ProfileImage); if (!uploadResult.Success) { return(IdentityResult.Failed(new IdentityError[] { new IdentityError { Code = "Upload error", Description = uploadResult.Result } })); } } FacultyStudent facultyUser = new FacultyStudent { FullName = userInfo.FullName, Email = userInfo.Email, UserName = userInfo.Email, Index = userInfo.Index, ProfileImageUrl = uploadResult == null ? null : uploadResult.Result, Module = new Module { Id = userInfo.ModuleId } }; _context.Attach(facultyUser.Module); IdentityResult result = await _userManager.CreateAsync(facultyUser, userInfo.Password); if (!result.Succeeded) { return(result); } await _userManager.AddClaimAsync(facultyUser, new Claim("ModuleId", userInfo.ModuleId.ToString())); await _userManager.AddToRoleAsync(facultyUser, "Student"); return(result); }