コード例 #1
0
ファイル: DataSeed.cs プロジェクト: leetrent/ELMS-URS
        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");
        }
コード例 #2
0
        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, "");
            }
        }