private static async Task EnsureApprover(IServiceProvider svcProvider, string userName, string tempPW, string firstName, string lastName, string agencyID, string subagencyID, string programShortName, bool emailNotify) { Console.WriteLine("DataSeed.EnsureApprover: BEGIN"); //////////////////////////////////////////////////////////////////// // Create Approver //////////////////////////////////////////////////////////////////// var userMgr = svcProvider.GetService <UserManager <ApplicationUser> >(); var user = await userMgr.FindByNameAsync(userName); if (user == null) { user = new ApplicationUser { UserName = userName, Email = userName, EmailConfirmed = true, FirstName = firstName, LastName = lastName, JobTitle = "Program Administrator", AgencyID = agencyID, SubAgencyID = subagencyID, DateRegistered = DateTime.Now, DateAccountExpires = DateTime.Now.AddDays(AccountConstants.DAYS_ACCOUNT_EXPIRES), DatePasswordExpires = DateTime.Now, RulesOfBehaviorAgreedTo = true, }; await userMgr.CreateAsync(user, tempPW); //////////////////////////////////////////////////////////////////// // Assign Approver Role to Approver //////////////////////////////////////////////////////////////////// await userMgr.AddToRoleAsync(user, RoleConstants.APPROVER); //////////////////////////////////////////////////////////////////// // Assign Approver to Program that he/she is authorized for //////////////////////////////////////////////////////////////////// var dbContext = svcProvider.GetRequiredService <ApplicationDbContext>(); LMSProgram program = await dbContext.LMSPrograms.FirstOrDefaultAsync(p => p.ShortName == programShortName); var programApprover = new ProgramApprover { LMSProgramID = program.LMSProgramID, ApproverUserId = user.Id, EmailNotify = emailNotify }; dbContext.ProgramApprovers.Add(programApprover); await dbContext.SaveChangesAsync(); } Console.WriteLine("DataSeed.EnsureApprover: END"); }
public async Task OnGetAsync(string statusCode = "PENDING") { string logSnippet = new StringBuilder("[") .Append(DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")) .Append("][Approvals][OnGetAsync][HttpGet] => ") .ToString(); Console.WriteLine(logSnippet + $"(statusCode): '{statusCode}'"); LoggedInUser = await GetCurrentUserAsync(); if (User.IsInRole(RoleConstants.APPROVER)) { var loggedInUserID = _userManager.GetUserId(User); /////////////////////////////////////////////////////////////// // Make sure that the logged-in user with the role of approver // is authorized to approve /deny /revoke enrollment // requests for this particular LMS Program. ///////////////////////////////////////////////////////////////////////// // var sql = " SELECT * " // + " FROM " + MiscConstants.DB_SCHEMA_NAME + ".ProgramEnrollment " // + " WHERE LMSProgramID " // + " IN " // + " ( " // + " SELECT LMSProgramID " // + " FROM " + MiscConstants.DB_SCHEMA_NAME + ".ProgramApprover " // + " WHERE ApproverUserId = {0} " // + " ) " // + " AND StatusCode = {1}"; var sql = " SELECT * " + " FROM " + MiscConstants.DB_SCHEMA_NAME + ".ProgramEnrollment " + " WHERE LMSProgramID " + " IN " + " ( " + " SELECT LMSProgramID " + " FROM " + MiscConstants.DB_SCHEMA_NAME + ".ProgramApprover " + " WHERE ApproverUserId = {0} " + " ) "; Console.WriteLine(logSnippet + "BEGIN SQL:"); Console.WriteLine(sql); Console.WriteLine(logSnippet + ":END SQL:"); // ProgramEnrollment = await _dbContext.ProgramEnrollments // .FromSql(sql, loggedInUserID, statusCode) // .Include( pe => pe.LMSProgram) // .Include ( pe => pe.Student).ThenInclude(s => s.Agency) // .Include( pe => pe.EnrollmentStatus) // .Include( pe => pe.Approver) // .OrderBy( pe => pe.EnrollmentStatus.StatusCode) // .ThenBy(pe => pe.Student.LastName) // .ThenBy(pe => pe.Student.FirstName) // .ToListAsync(); ProgramApprover programApprover = await _dbContext.ProgramApprovers .AsNoTracking() .Where(pa => pa.ApproverUserId == loggedInUserID) .Include(pa => pa.LMSProgram) .SingleOrDefaultAsync(); ProgramName = programApprover.LMSProgram.LongName; ProgramEnrollment = await _dbContext.ProgramEnrollments .FromSqlRaw(sql, loggedInUserID) .Include(pe => pe.LMSProgram) .Include(pe => pe.Student).ThenInclude(s => s.Agency) .Include(pe => pe.EnrollmentStatus) .Include(pe => pe.Approver) .OrderBy(pe => pe.EnrollmentStatus.StatusCode) .ThenBy(pe => pe.Student.LastName) .ThenBy(pe => pe.Student.FirstName) .ToListAsync(); //ProgramEnrollment = ProgramEnrollmentUtil.SortByStatusCode(ProgramEnrollment); IQueryable <EnrollmentStatus> enrollmentStatusList = _dbContext.EnrollmentStatuses .AsNoTracking() .Where(es => es.DisplayOrder > 0) .OrderBy(es => es.DisplayOrder); EnrollmentStatusCounts = EnrollmentStatusUtil.GroupByStatusCode(ProgramEnrollment, enrollmentStatusList); ProgramEnrollment = ProgramEnrollmentUtil.FilterByStatusCode(ProgramEnrollment, statusCode); StatusSelectList = new SelectList(_dbContext.EnrollmentStatuses.OrderBy(a => a.StatusCode), "StatusCode", "StatusLabel", statusCode); string statusChangeModalTitle = HttpContext.Session.GetString(ApproverConstants.STATUS_CHANGE_MODAL_TITLE); string statusChangeModalText = HttpContext.Session.GetString(ApproverConstants.STATUS_CHANGE_MODAL_TEXT); Console.WriteLine(logSnippet + $"(statusChangeModalTitle): '{statusChangeModalTitle}'"); Console.WriteLine(logSnippet + $"(statusChangeModalText).: '{statusChangeModalText}'"); if (String.IsNullOrEmpty(statusChangeModalTitle) == false && String.IsNullOrWhiteSpace(statusChangeModalTitle) == false && String.IsNullOrEmpty(statusChangeModalText) == false && String.IsNullOrWhiteSpace(statusChangeModalText) == false) { ViewData[ApproverConstants.STATUS_CHANGE_MODAL_TITLE] = statusChangeModalTitle; ViewData[ApproverConstants.STATUS_CHANGE_MODAL_TEXT] = statusChangeModalText; } HttpContext.Session.SetString(ApproverConstants.STATUS_CHANGE_MODAL_TITLE, ""); HttpContext.Session.SetString(ApproverConstants.STATUS_CHANGE_MODAL_TEXT, ""); } }