Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }